Sorry, I hate its syntax, too verbose for my taste. What about dynamic
modules, DCG, CHR, CLP, performance in general?. What about
meta-programming, operator declarations. Do you really thing SOUL is a good
replacement for Prolog?, I do not see the expressiveness of Prolog
reflected in what I have seen. What about the libraries I mentioned for
semantic web?

Think now about Prolog and the Helvetia approach, don't you thing it would
be much more attractive for newcommers or people who already knows Prolog?
If you put both approaches over the table I woudn't hesitate in taking the
Helvetia approach.

Cheers,
Jesus


2013/9/25 Jesus Nuñez <poissonbrea...@gmail.com>

> OK I found it, I'll have a look
>
>
> 2013/9/25 Jesus Nuñez <poissonbrea...@gmail.com>
>
>> where is it??
>>
>>
>> 2013/9/25 Stéphane Ducasse <stephane.duca...@inria.fr>
>>
>>> did you look at SOUL?
>>>
>>> Stef
>>>
>>> On Sep 25, 2013, at 9:15 PM, Jesus Nuñez <poissonbrea...@gmail.com>
>>> wrote:
>>>
>>> In my very first attempt, I tried to port a package which sounds to me
>>> like the one you describe. In the examples there was a snoopy world as a
>>> search example, maybe you recall it from that.  However I realized that I
>>> didn't want to emulate Prolog in Pharo; nothing like fast compiled and
>>> optimized code for WAM.
>>>
>>> The idea was to emulate the language boxes of Helvetia to mix Prolog and
>>> Smalltalk code and use NativeBoost to call the swi-prolog shared library,
>>> so I could use a highly deployed version of Prolog.  Some time ago I made
>>> an inquiry and for handling some text highlighting issues that would help
>>> in my aims, just for a direct reference, the code is below:
>>>
>>> | text textRenderer textShower |
>>>> text := 'p(Q,R):-q(R), unify_st(X, smalltalk_code), r(T).
>>>> q(Q):-d(R).
>>>> q(Q).'.
>>>> textRenderer := [
>>>> PPTextHighlighter new
>>>> parser: PPPrologParser new;
>>>>  color: 'small_atom' with: Color blue muchDarker;
>>>> bold: 'small_atom';
>>>> color: 'unify_st' with: Color green muchDarker;
>>>>  bold: 'unify_st';
>>>> color: 'string' with: Color gray muchDarker;
>>>> color: 'number' with: Color gray muchDarker;
>>>>  color: 'boolean' with: Color gray muchDarker;
>>>> highlight: text asText.
>>>> ].
>>>> "                __
>>>>                    |
>>>>          <Renders IN>
>>>>    |
>>>>   W
>>>> GLMTextPresentation
>>>>      |
>>>>    <Renders IN>
>>>>    |
>>>>   W
>>>> GLMMorphicRenderer
>>>>
>>>> "
>>>> textShower := GLMMorphicRenderer new.
>>>> (textShower open: (
>>>> GLMTextPresentation new display: textRenderer; renderGlamorouslyOn:
>>>> textShower; yourself )) window title: 'Prolog Editor'.
>>>> "Here I created a highlighter through the transform method of the
>>>> grammar"
>>>> grammar := PPPrologParser new.
>>>> highlighter := grammar transform: [ :parser |
>>>> Transcript show: parser.
>>>> parser class = TokenParser
>>>>  ifTrue: [ parser ==> [ :token |
>>>> textShower model highlight: token style range: token interval ] ]
>>>> ifFalse: [ parser ] ].
>>>> text := 'p(Q,R):-q(R), unify_st(X, smalltalk_code), r(T).
>>>> q(Q):-d(R).
>>>> q(Q).'.
>>>> pp := highlighter parse: text asText.
>>>
>>>
>>>
>>> However, as I said, it was too much work to create everything from
>>> scratch, so I decided only to impose queries and the result looks pretty
>>> much as the code I provided in my previous post.
>>>
>>>
>>> I omitted one detail however; I am using a python bridge through the
>>> pyswi library which does pretty much was I was trying to achieve with
>>> NativeBoost. It is a RPC-JSON server which handles the interaction between
>>> Pharo and Prolog and retrieves the query results in a JSON dictionary.
>>>
>>> At about that time I also was looking at Logtalk (logtalk.org)  for SWI
>>>> and maybe waiting for XSB ... as our manager would not go for iLOG and we
>>>> were VisualWorks only ... then IBM bought iLOG and something odd happened
>>>> to Prologia with Air Liquide in France.
>>>
>>>
>>> Logtalk is pretty much what I wanted to achieve, but the OOP language
>>> would be Pharo instead. I still think it would be good to make some effort
>>> towards creating such a framework, if I can call it like that.
>>>
>>> You may know about the prolog for Smalltalk/DOS of about 1990 vintage
>>>>  ... I must have it on a floppy in a box somewhere on a shelf.
>>>
>>>
>>> I would be interesting to have a look. Please send me a copy to this
>>> email if you find it.
>>>
>>> Cheers,
>>> Jesus
>>>
>>>
>>>
>>> 2013/9/25 Robert Shiplett <grshipl...@gmail.com>
>>>
>>>> You may know about the prolog for Smalltalk/DOS of about 1990 vintage
>>>>  ... I must have it on a floppy in a box somewhere on a shelf.
>>>>
>>>> R
>>>>
>>>>
>>>> On 25 September 2013 10:29, Jesus Nuñez <poissonbrea...@gmail.com>wrote:
>>>>
>>>>> 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