Re: [stack] a concatenative language for the Semantic Web
"Joshua Shinavier" <[email protected]>
| Newsgroups | gmane.comp.lang.concatenative |
|---|---|
| Message-ID | <[email protected]> |
On 5/20/07, Joe Bowbeer <[email protected]> wrote: Hi Joe, Thanks for the feedback! > I'm interested. A couple questions: > > I don't understand how the concatenative aspect works to your advantage. > Can you elaborate? Ripple programs are meant to be embedded in an RDF graph, and it was a design goal to make their RDF representation as simple as possible. Ripple uses very few symbols, above and beyond the RDF and RDFS vocabularies, which are relevant to its evaluator, and Ripple expressions are meant to be easy to read even in a generic RDF representation language like Notation3. The presence of bound variables and other abstractions (i.e. beyond concatenation and quotation) would complicate its syntax. In this sense, I'm exploring the idea that extreme simplicity, in the form of "point free" programs, will pay off. Most importantly, a stack language lends itself very well to path expressions, and Ripple's query model is path-based. > As a veteran of Lisp and Scheme, I think I would naturally turn to them when > presented with this kind of problem. Others have, e.g. Wilbur [1] or SWCLOS [2]. However, it is not my understanding that these toolkits actually express program code in RDF. If you have reasons why Ripple is more > suitable than Lisp or Scheme, it might help me better understand what you're > doing. See above. While it's possible to express arbitrarily complex data structures in RDF, simplicity is preferred. Ripple is closer to the typical, simple data representation languages of the Semantic Web than the rather complex grammars of typical programming languages. I've just been made aware of a fascinating object-oriented language called Neno [3] which is also represented in RDF, and its programs are rather more complex than Ripple's, so the path paradigm is certainly not the only option. I chose it because it makes for particularly simple, modular, path-like programs which lend themselves very well to a "networked programs" model. Also, I think Ripple's evaluator is rather efficient at converting raw RDF data to executable code, which in the networked environment is often more critical than actual efficiency of computation. If I had chosen to integrate Scheme with RDF instead, I doubt I'd have had my proof of concept up and running in twice the time it has taken me to implement Ripple, and I don't think I would prefer the end result. > --Joe Best, Josh [1] http://wilbur-rdf.sourceforge.net/ [2] http://iswc2004.semanticweb.org/demos/32/ [3] http://neno.lanl.gov/Home.html