I'll try to elaborate but what I can say is only from my limited
perspective. You can take it as an incomplete argument that needs much
refinement, but could however serve as a seed for an upcoming idea.

Search: After all we can see the entire web as a large graph which we seek
to traverse, looking for information. First-order logic is the most neutral
and natural way of representing the web. With facts and rules that convolve
to derive new conclusions, logic is perhaps the most compact way of
representing pretty much any kind of relationships.

Think of a model for a situation that would accept a query as below with
some facts and rules governing the dynamics of the underlying world:

*"Give me all restaurants in the city where someone whose name is Laura has
been a client at least once per month during the last 3 months and whose
has always paid with credit card"*

My opinions are based on the power of tools in Pharo, such as the moose
family for data visualization and related stuff and of course Seaside,
together with Prolog first order logic syntax, unification, backtracking
capabilities, and search based on a sound resolution method. In the case of
the use of Prolog for the semantic web, see for instance
http://attempto.ifi.uzh.ch/site <http://attempto.ifi.uzh.ch/site/docs/>.

Prolog counts also with mature semantic web packages
http://www.swi-prolog.org/web/ that handles the semantic web RDF model
naturally. For instance have a look at http://www.semanticweb.gr/topos/. In
this very application you may also discover how Pharo can naturally fit in
a similar application.

In a personal attempt (indeed it is part of my master thesis); since I am
in Pharo 1.4, I wanted to emulate the helvetia language boxes, to create
rules in Pharo and interact with Prolog as in the example below for a SQL
language box,

rows := *SELECT * FROM users WHERE username = @(aString ~= /\s*(\w+)\s*/)*

I created a parser in PetitParser for Prolog, however It was too much work
to create something as the above from scratch (also somewhat involved is to
handle operator declaration in Prolog) and finally I end up with a tool for
imposing only queries to Prolog and retrive the results in a JSON
dictionary using SocketStream for RPC handling and NeoJSONReader to read
the JSON contents from the stream.

Just for reference, it looks as follows,

Transcript open.
stream := SocketStream openConnectionToHostNamed: 'localhost' port: 31415.
[
text:='{"method":"query", "params": ["owns_Zebra(O,X)"], "id":0}'.
stream nextPutAll:text; flush.
Transcript cr; show:(stream upToEnd).
] ensure: [
stream close
]

map := (NeoJSONReader on: (result contents) readStream )
next.

Again, it is only my limited view, and I am only starting to understand the
fundamentals of semantic web but I think it is not a bad idea to create a
productive conjunction of this two wonderful worlds. So please don't blame
on me if I am wrong in all of my thoughs,

Cheers,
Jesus






2013/9/25 Norbert Hartl <norb...@hartl.name>

>
> Am 25.09.2013 um 13:02 schrieb Jesus Nuñez <poissonbrea...@gmail.com>:
>
> What did happen to Helvetia? Sorry if I am an ignorant here but I think
> language boxes in Pharo; to interac, remarkably with Prolog, would be
>  definitely a plus for semantic web development in Smalltalk.
>
> Cheers
>
> Sounds interesting. Can you elaborate on that? How could all of those
> mentioned support the semantic web? [1]
>
> Norbert
>
> [1] http://en.wikipedia.org/wiki/Semantic_Web
>
>
>
>
> 2013/9/25 Norbert Hartl <norb...@hartl.name>
>
>> Looking for semantic web tools I found
>>
>> http://www.squeaksource.com/TripleStore/
>>
>> Are there other resources for the semantic web in pharo? smalltalk?
>>
>> Norbert
>>
>
>
>

Reply via email to