Common Lispはなぜセマンティックウェブ向きなのか? その1

XML名前空間とCommon Lispパッケージ機能

まずは次のRDFトリプルセットを見てください。

ex:Alice a schema:Person .
ex:Bob a schema:Person .
ex:Alice schema:knows ex:Bob .

これは完全に正規のトリプルセットです。これらの記述の前に名前空間のプレフィックスについての記述が必要ですが。

次は同じ意味の正しいCommon Lispによる記述です。

(ex:Alice a schema:Person)
(ex:Bob a schema:Person)
(ex:Alice schema:knows ex:Bob)

ただし、事前にこれらの Lisp シンボルが exパッケージやschemeパッケージでインターンされてエキスポートされていることを前提としています。

ちなみに、同じことをJSONでは次のように表記します。

{"ex":"Alice" [
     {"rdf":"type" "schema":"Person"}
     {"schema":"knows" "ex":"Bob"}
     ]
}
{"ex":""Bob" [
     {"rdf":"type" "schema":"Person"}
     ]
}

私の目には、RDFトリプルを表記するには、Common Lispの方がはるかに簡単に見えますが、どうでしょうか。その理由の一つには、Common LispにはRDF名前空間とほぼ同様な機能のパッケージ機能があるからです。すなわち、セマンティックウェブではschema:Personとfoaf:Personが異なるように、Common Lispでもschema:Personとfoaf:Personを異なるシンボルにすることができるのです。