2007‎ > ‎12‎ > ‎13‎ > ‎

RDF native programming language...done

I had been thinking recently about how to integrate RDF natively into a programming language. A prototype based language would be ideal for working with Semantic Networks (in the AI sense not the SemWeb sense). I had thought about how to extend the ECMAScript standard to define objects and methods using URIs.

After a simple Google search it turns out someone has already done some work in this space, it's called Adenine, and it has grown out of the Haystack project at MIT. Here are the highlights:

  1. It is an imperative language.
  2. It steals meaningful indentation from Python (i.e. you define blocks of code using indentation)
  3. It's interpreter is written in Java, and you can access Java objects and methods within Adenine code.
  4. It compiles (!) to RDF, which enhances distribution, enables language extension, and allows you to make RDF statements about your code. They're treating RDF like bytecode here, people!
  5. It steals the blurring code/data (see number 4) and its method invocation syntax from Lisp.
At least according to the paper which is from 2002 (as far as I can gather).

I've tried to take a look at Haystack before, but not gotten very far. I'll have to invest some more time in it just to play with Adenine. There may still be some room for coming at this from a different perspective, but this is very interesting. Why haven't I heard about it before? And since we're talking about it, are there any other projects in this space? There must be some DSLs from the AI community for working with Semantic Networks, because Semantic Networks are nothing new there.

Originally published on December 13, 2007 at 6:41 pm


  1. Mike Brennan Says:
    April 13, 2008 at 6:13 pm

    I was just recently thinking of trying this very same thing. I thought of basing the language on Python for it’s nice indentation style (I thought this would work well for extending the language with context-sensitive grammars), but natively supporting RDF classes and compiling down to Java bytecode (and supporting Java/J2EE integration).

    Then I found this blog via a web search. Unfortunately, the link you provide to Adenine is broken and I can find no evidence on the Web that this effort still exists.

    Do you have any idea what happened to this? It seems like a great idea to me.

  2. Bill Birch Says:
    April 19, 2008 at 8:07 am

    Me too. I am planning to integrate RDF into my own language (Genyris). The goal is to allow developers to reference vocabularies when using symbols. Just like Adenine, but less ambitious. My language is like Scheme hence Symbols would also be RDF labels. ie

    #prefix dc “http://xmlns.com/foaf/0.1/”

    def someFunction(dc:Person)

    Most of the Haystack site gives 404…

  3. paul Says:
    April 19, 2008 at 1:37 pm

    I’ve updated the link to the Adenine paper. I’m pretty sure the project is inactive (and has been since before I wrote this article).

  4. MXQ-1978 Says:
    September 23, 2008 at 4:35 pm

    What about a DSL in something similar to LISP (Adenine is a Lisp-stype system anyway)? Scheme, Lisp, Dylan, Haskell, Ruby, &c. all support DSL creation, so why go mad with anything else?