I'm certainly not the first to come up with this idea, but I think it would be pretty swell to have a Lojban ↔ RDF 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:
<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".
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.
I just recently discovered a language blog that seems to have some rather wonderful content on it. Mark Liberman wrote a wonderful piece, Divine Ambiguity, that pokes fun at Pat Robertson's recent [mis]use of the word, "like". Mark does well: it is a piece of absolutely hilarious and subtle wit.
Singing computers rule.
So much so that I decided the lojban text-to-speech that I'm working on needed to be able to sing. Well, it turns out that festival 1.4.3 has a cute little .scm file that lets you create XML files marked up with musical notes and durations for singing. With a little bit of poking around, I was able to convince our lojban voice to want to sing. With a little more poking around and about an hour trying to translate, I put together: "Daisy" (as in the song HAL9000 sings when Dave kills him in 2001).
Continuing the same theme, I was pointed out this project (which I had tried first, but which failed miserably): Flinger. Some of the examples are amusing, not in their badness, but in their resemblance to the pop music's tendency to use vocal distortions on actual singers.
Also, if you've never heard them before, a geek or two put together this impressive 386dx singing computer. They even have a hard-core music video!
I got frustrated with the lack of a Lojban text to speech voice for Festival last night, so I put one together. It took a bit of research, but I've grown to like Festival's engine. It's all lisp with a C++ core. As Lojban has an entirely phonetic textual representation, it was easy to hack together a phoneme mapping an existing diphone collection for Lojban. (in other words, I didn't have to record myself speaking to make it go).
In stopping by the Lojban IRC channel, I found out that someone has recorded some diphones for Lojban (albeit with a French accent). Best yet, the recordings are indexed by phoneme-pair. With a bit of work (listening to 1186 wav files and labeling where the key parts of the waveform are) we can have a Lojban text-to-speech that's got its own voice! Of course, I don't have this much time to spend on such, but who knows. Maybe my 16h of bus riding will prove to be productive.
Way back in elementary school, in what must have been chorus, I learned one of my favorite songs. It's a simple, beautiful song: goodnight in many different languages. I've finally found it, it's called Dreams of Harmony
by Joanne Hammil. Here is an encoded version of the lyrics:
Good night, bonne nuit, お休みなさい,
buenas noches, lala salama, 晚安,
Спокойной ночи, Gute Nacht, לילת טוב.Where ever you rest your head tonight
we are all one family, let's hold tight
and fill the world with dreams of harmony tonight.
Except for the Swahili (which I can't find any encodings for) the above should be correct in the language's native characters. Mouse-over to see the phonetic pronunciation.
I've finally figured out how to type in japanese, hebrew, greek and a
variety of other useful character sets using emacs. In emacs21, the
"mule" system is remarkably powerful. Simply specify the input mode
with A-x set-input-method. Pick one, then do A-x
describe-input-method and it'll show you a nice mapping of the
keys. This now means that I can write ひらがなと カタカナ right from
within the editor :-) I can now also typeset that beautiful Hebrew
phrase from the Bible (Song of Solomon 6:3)
אבי לדזדי זדזדי
In english "I am my beloved's and my beloved is mine."
And in attempting to post this blog entry, I found out the hard way
that you need the mule-ucs system in order to make it so
you can write those characters to a UTF-8 encoded file. Debian has a
package for it suchly named.
My learning of lojban is coming along well. It really is amazingly easy to learn. The best part about it, is that all the tools to speak / write it (and most importantly, write it well) are freely available on the web. I mean, there're grammar checkers in debian's apt (jbofihe) which let you verify your sentences against the grammar and see what it thinks you were trying to say. So far i havn't even tried to understand arbitrary spoken lojban, but i need to learn quite a bit of grammar first. I have a lot of respect for languages that essentially build emoticons into the language.
My tests at Children's the other day went well. I had a fun echo cardiogram (honestly fun... i could see my heart beating and stuff) and a rather unfun stress test. Stress tests consist of running on a treadmill, with an increasing level of difficulty, while you have many electrodes stuck to your chest. You walk/run until you can't any longer. So, out of shape as i am, lasted only 18 minutes. ah well, at least i bike regularly.
I've also just put my GnuPG public key on a public keyserver, as well as my own page. Now i'm all 1337 and crypto-enabled. I should really learn more about how public-key encryption works, though - it seems quite nifty.
mi nelci la latci'o .u'i ("i like kittens :-)")
Atom
RSS 1.0
RSS 1.1
RSS 1.0 no comments
Technorati Profile
GeoURL
![]()
All original sound, text and graphics on this site (staticfree.info) are licensed under a
Creative Commons License.