AllegroGraph その3
前回全然lispじゃなかった。
今回はACLから繋いでみます。
準備
Allegro CL 10.0 Free Express Editionのインストール
- Macの場合X11とかGTKとか必要とありますが、slimeから使うならなくてもいけます
mlispをつくる
- AllegroGraph clientはalispでは動かないのでmlispを作ります
- faqにあるので、いちどalispを起動してから次にコードを実行します
(progn
(build-lisp-image "sys:mlisp.dxl" :case-mode :case-sensitive-lower
:include-ide nil :restart-app-function nil)
(when (probe-file "sys:mlisp") (delete-file "sys:mlisp"))
(sys:copy-file "sys:alisp" "sys:mlisp"))
- mlispができたらslimeの設定を通します
(setq inferior-lisp-program "/Applications/AllegroCLexpress.app/Contents/Resources/mlisp")
AllegroGraphのポート指定
- AllegroGraphをVirtualboxで動かしていて、それにslimeから接続する場合、必要なポートは
- 10035
- SessionPort(random)
- SessionPortがランダムなのはポートフォワーディングする時に面倒なのでコンフィグで指定します
- /home/franz/ag/lib/agraph.cfgが設定ファイルです
- SessionPorts 8080-8081
- みたいに適当なポートレンジを書き加えます
- Virtualboxから該当ポートへのフォワーディングを指定してAllegroGraphを起動
AllegroGraph Clientダウンロードする
- ここからダウンロード(メールアドレスが必要)
- MacのExpress EditionはAllegro CL 10.0 (non-SMP) 32-bit Mac OS Xが対応します
- ダウンロード後、展開して終了
接続
- tuple-storeはその2で作ったcattoyを使います
- せっかくなのでprologで
(load "/path/to/agraph-6.1.3-macosx86-client-lisp-acl10.0/agraph.fasl")
(in-package :db.agraph.user)
(enable-!-reader)
; (setf *default-ag-http-port* 10035) ; ポートフォワーディングで変えてる場合はここで指定
(open-triple-store "cattoy")
(triple-count)
; => 451
(require :prolog)
(use-package :prolog)
(register-namespace "sc" "http://schema.org/" :errorp nil)
(select (?x ?y ?z)
(q- ?x !sc:name ?y))
; => (("http://www.cattoy.info/cats/1" "みけ" nil))
; こっちはattempt to call `#:q-/3' which is an undefined function.になって動かなかった
; なんでだろう
; (?- (q- ?x ?y ?z))
とりあえず問い合わせまでできるようになりました
今回と前回使用したcattoyのturtleをダウンロードできるようにしています。
https://www.cattoy.info/cattoy.ttl
SPARQL エンドポイント置くのはちょっとサーバーリソース的に面倒だったのでデータだけです。