#:g1: cl-ntriplesの紹介

Posted 2014-06-26 18:15:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の178日目です。

cl-ntriplesとはなにか

 cl-ntriplesは、Victor Anyakin氏作のCommon Lisp製のN-Triplesのパーザです。

パッケージ情報

パッケージ名cl-ntriples
Quicklisp
CLiKihttp://cliki.net/cl-ntriples
Quickdocshttp://quickdocs.org/cl-ntriples
CL Test Grid: ビルド状況cl-ntriples | CL Test Grid

インストール方法

(ql:quickload :cl-ntriples)

試してみる

 どんな関数があるかは、Quickdocsで確認できます。

 RDFには表記形式がXMLやN3等様々ありますが、cl-ntriplesは名前の通り、N-Triplesを扱います。

<http://dbpedia.org/resource/Yokohama>	<http://dbpedia.org/property/julHumidity>	"80"^^<http://www.w3.org/2001/XMLSchema#integer> .

こんな行があったとすると、

("http://dbpedia.org/resource/Yokohama" 
 "http://dbpedia.org/property/julHumidity"
 (:LITERAL-STRING "80" :URIREF "http://www.w3.org/2001/XMLSchema#integer"))

こんな感じの3つ組のリストとして読み込まれるようで、型付リテラルは、さらに注釈がリストとして表現されるようです。

 さらに、おまけで、nt:predicate?という簡単なクエリ用の関数が付いてくるので、簡単な検索ができます。

(defvar *Yokohama* (nt:parse-nt (drakma:http-request "http://dbpedia.org/data/Yokohama.ntriples")))

;;; 横浜の緯度 (nt:predicate? *Yokohama* "http://www.w3.org/2003/01/geo/wgs84_pos#lat") ;=> (("http://dbpedia.org/resource/Yokohama" ; "http://www.w3.org/2003/01/geo/wgs84_pos#lat" ; (:LITERAL-STRING "35.45" :URIREF "http://www.w3.org/2001/XMLSchema#float")) ; ("http://dbpedia.org/resource/Yokohama" ; "http://www.w3.org/2003/01/geo/wgs84_pos#lat" ; (:LITERAL-STRING "35.4442" :URIREF "http://www.w3.org/2001/XMLSchema#float")))

;;; 横浜の経度 (nt:predicate? *Yokohama* "http://www.w3.org/2003/01/geo/wgs84_pos#long") ;=> (("http://dbpedia.org/resource/Yokohama" ; "http://www.w3.org/2003/01/geo/wgs84_pos#long" ; (:LITERAL-STRING "139.638" :URIREF "http://www.w3.org/2001/XMLSchema#float")) ; ("http://dbpedia.org/resource/Yokohama" ; "http://www.w3.org/2003/01/geo/wgs84_pos#long" ; (:LITERAL-STRING "139.633" :URIREF "http://www.w3.org/2001/XMLSchema#float")))

;;; 横浜は何の一部か (nt:predicate? *Yokohama* "http://dbpedia.org/ontology/isPartOf") ;=> (("http://dbpedia.org/resource/Yokohama" "http://dbpedia.org/ontology/isPartOf" ; (:OBJECT-URIREF "http://dbpedia.org/resource/Kanagawa_Prefecture")) ; ("http://dbpedia.org/resource/Yokohama" "http://dbpedia.org/ontology/isPartOf" ; (:OBJECT-URIREF "http://dbpedia.org/resource/Kant%C5%8D_region")))

まとめ

 今回は、cl-ntriplesを紹介してみました。
やはり、N-Triplesより、リスト表現の方が扱いやすいですね。

comments powered by Disqus