Staticfree Blog

I have been prowling the concrete wilderness for 3 hours, 42 minutes, and 45 seconds. Before that, I was at work.

Mon, 15 Mar 2004

I'm certainly not the first to come up with this idea, but I think it would be pretty swell to have a LojbanRDF converter. (For those playing along at home, unaware of what I'm babbling about, I'll try and make it understandable to as wide an audience as I can).

Lojban and RDF are more alike than you might imagine. One is a constructed spoken language intended to convey ideas clearly and unambiguously, while the other is a machine-readable language for describing things and ideas. Save the "spoken" bit, they're both of the same mindset: create a way to communicate (between people, machines, whatever) without all the crap that makes communication confusing.

There are a few levels to this. First off, to the skeptics: of course one cannot directly translate any arbitrary RDF to Lojban. Both Lojban and RDF provide languages for discussing objects and ideas. However, the meaning of those languages is up to the user to interpret (but is clearly defined in dictionaries and namespace declarations). So, besides the semantics of parsing the two languages, the real meat of a project working with the two is a mapping, a translation.

The best example of this that I can immediately think of is a Lojban mapping of the FOAF namespace. Consider, for example:

RDF


  <foaf:Person rdf:ID="steve">
    <foaf:name>Steve Pomeroy</foaf:name>
    <foaf:knows>
      <foaf:Person>
         <foaf:name>Carolyn</foaf:name>
      </foaf:Person>
    </foaf:knows>
  </foaf:Person>

The English equivalent would be something like, "I am describing a person (#steve). #steve's name is Steve Pomeroy. #steve knows a person named Carolyn.". The next step is to do a similar mapping into Lojban. For this, we will use the Lojban "se slabu" (which translates to "is old/familiar/well-known to", "prenu" which means "is a person" and "cmene" for name. For convenience, I'm translating the RDF identifier rdf:ID="steve" (which can be expressed as "#steve") to the Lojban "la stiv".

Lojban

la stiv. prenu .ije la stiv.se cmene zoi gy. Steve Pomeroy gy. .ije la stiv. se slabu da .ije da prenu .ije da se cmene zoi gy. Carolyn gy.

This parses, using the ever-handy jbofihe, to:

[1(2[prenu1 (person(s)) :] la stiv. [NAME])2 [is, does] <<3prenu being person(s)>>3]1 .i `.' je and [4(5[cmene2 (named thing(s)) :] la stiv. [NAME])5 [is, does] <<6se cmene being named>>6 (7[cmene1 (name(s)) :] zoi gy Steve Pomeroy gy ?)7]4 .i `.' je and [8(9[slabu2 (observer) :] la stiv. [NAME])9 [is, does] <<10se slabu being observer(s) of familiarity>>10 (11[slabu1 (familiar thing(s)) :] da X)11]8 .i `.' je and [12(13[prenu1 (person(s)) :] da X)13 [is, does] <<14prenu being person(s)>>14]12 .i `.' je and [15(16[cmene2 (named thing(s)) :] da X)16 [is, does] <<17se cmene being named>>17 (18[cmene1 (name(s)) :] zoi gy Carolyn gy ?)18]15

You should be able to see that this isn't any where as optimized a way of saying it as possible (it doesn't make use of Lojban's subject context), but it conveys the exact same information as the RFD encoding (keeping things like "#steve" ≡ "la stiv." in mind).

The first step is to create a framework for creating direct translations between the two. Starting out with simple namespaces that can be directly mapped, as was shown above. Mappings should probably be encoded in RDF in order to please the sick and twisted. Eventually, features of Lojban and RDF will have to be taken into account and then translated/transformed. Logical constructors could be used for sequences, subjects can be omitted when redundant, etc.

trackback enabled :: 5 comments

Recent Comments

Categories

B6 d+ t++ k+ s u- f- i+ o++ x++ e++ l c-- (decode)

Archive by date

March
Sun Mon Tue Wed Thu Fri Sat
 
15
     
2004
Months
Mar
If you can read this text, you're either on a browser that doesn't support CSS or one that supports it badly. You've probably noticed that my layout is a bit choppy and perhaps even ugly. My layout here is designed to work in all browsers that support CSS 1 and 2 and was designed by reading the W3C CSS recommendations. It was tested in the most CSS-compliant browser I know of, Firefox. If you want this page (and others too!) to look nice, I reccomend trying Firefox - it's completely free and can also block those annoying popup ads out-of-the-box.

Powered by Blosxom Atom RSS 1.0 RSS 1.1 RSS 1.0 no comments Technorati Profile GeoURL Valid XHTML 1.0! Valid CSS!

Creative Commons License
All original sound, text and graphics on this site (staticfree.info) are licensed under a Creative Commons License.