im@sparqlの構成について

#オタクLOD発展のため、im@sparqlのバックエンドにまとめる。

SPARQLエンジン

Apache Jena Fuseki2を利用。Fuseki2はファイルからグラフを構築する場合、更新するときは再起動が必要なためDockerコンテナで管理しています。Imageはこいつ。

hub.docker.com

設定ファイルはこんな感じです。Readだけ許可し、Updateクエリ等は通さない。ファイルはhttp経由で取っても絶対パスを書いても良し。

@prefix fuseki:  <http://jena.apache.org/fuseki#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix tdb:     <http://jena.hpl.hp.com/2008/tdb#> .
@prefix ja:      <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix :        <#> .

<#service1> rdf:type fuseki:Service ;
    fuseki:name "/imas" ;
    fuseki:serviceQuery "query" ;
    fuseki:serviceReadGraphStore    "data" ;
    fuseki:dataset  <#imas>;
.

<#imas>    rdf:type ja:RDFDataset ;
    rdfs:label "imas" ;
    ja:defaultGraph 
      [ rdfs:label "imas" ;
        a ja:MemoryModel ;
        ja:content [ja:externalContent <https://sparql.crssnky.xyz/imasrdf/RDFs/765AS.rdf> ] ;
        ・・・
        ja:content [ja:externalContent <https://sparql.crssnky.xyz/imasrdf/URIs/imas-schema.ttl> ] ;
      ];
    .

自動更新

詳しくは書かないが、GitHubリポジトリからマージを監視し、そのたびにサーバー上のファイルを更新してDockerコンテナを再起動しています。

Webサーバー

お前いまどきWebサーバーにApache使ってるのかよって感じですが、元々はTomcat上でFuseki2動かしてたからね。しょうがないね。
ここではSSL設定したり、リバースプロキシでFuseki2のプロセスへhttp通信を橋渡ししたりしてます。