SAFE
提供:TogoWiki
目次 |
概要
複数のSPARQLエンドポイントに散在するRDFデータに対して、クエリの内容に応じて適切にエンドポイントを選択するとともに、利用者毎に設定されたセキュリティポリシーに基づくアクセスコントロールを可能とするミドルウェア。 SWAT4LS 2014で発表された。
- "SAFE is motivated by the needs of three clinical organisations in the context of an EU project who wish to enable controlled federation over statistical clinical data – such as data from clinical trials – owned and hosted by multiple clinical sites, represented in the form of data cubes: multi-dimensional arrays of numeric data."
- "SAFE extends upon the FedX engine [1] with two novel contributions: (i) GRAPH-LEVEL SOURCE SELECTION in order to enable graph-based access-control and (ii) OPTIMISATIONS FOR FEDERATING QUERIES OVER STATISTICAL DATA that are represented using the RDF Data Cube Vocabulary."
SAFEのソースコードは公開されているが、ドキュメント類が未整備のため、解析が必要となる。
[1] Fedex:Optimization Techniques for federated query processing on linked data (PDF)
動作確認
配布されているソースコードにはサンプルが含まれており、それを実際に動作させるまでの作業を記録。
1. テスト環境としてDBCLSに4つのエンドポイントを設置。 それぞれここから配布されている以下のデータセットに対応。
- Eurostat
- Transparency International
- IMF
- World Bank
2. 設定ファイルの準備
設定ファイル内のURIを上記1.で用意したエンドポイントのURI に書き換えた.
SAFE_HOME/settings/specifications.n3
3. ソースの書き換え&再コンパイル
設定情報の一部はソースに直接書き込まれているため実験環境に合わせて情報を書き換えた.
- org.deri.linked2safety.safe.start.QueryEvaluation : エンドポイントURI, 設定ファイルを置くディレクトリ.
- package com.fluidops.fedx.Config : 設定ファイルの指定,
以上,1.2.3. の完了後,ローカルのPCでSAFEを起動し、サンプルクエリを発行して、実際に動作することを確認した。
2/4時点の問題点
- あらかじめ用意されている main() を利用すると
- ログより想定されているグラフ指定が実際にエンドポイントに投げられているクエリに含まれていないことが判明.
- 動作のトレースより SAFESourceSelection クラスの関数が使われていない(代わりにFedX のSourceSelectionが使われている)ことが判明.
- 以上の状況から用意されている main() は SAFE 利用のためのものではないかも...
- 著者へメールを書くことに決めた->(2/5追記)今月末まで担当者が休みを取っているので,返事はそれまで待ってほしいそうです.残念.
ソースを読んで分かったことのメモ
- SAFE は SAFE本体とデータサマリ作成ツールに分かれている
- 本体に追加されているのは三つのクラスのみ
- SAFESourceSelection (検索を投げるエンドポイントを決定するクラス), L2SUtil (グラフ情報を SPARQLクエリに追加するクラス), QueryEvaluation (評価用メイン関数が入ったクラス)
- あとの変更は FedX の関数内に直接書き込まれている.
- SAFESourceSelection ではエンドポイントURIのみならず,グラフURIも割り当てる(ように見える)
- アクセス制御は SourceSelection の段階では行われていない(ように見える)
- データサマリ作成ツールによってN3形式のサマリファイルが作られる(本体で読み込む)
- 内容はこんな感じ: エンドポイントURI, グラフID, エンドポイント/グラフのみが述語として含むプロパティのリスト,二つ以上のエンドポイントが共通して述語として含むプロパティのリスト
#---------------------http://localhost:50082/imf/query -------------------------------- <http://safe.deri.ie/source1> safe:endpointUrl <http://localhost:50082/imf/query>; safe:cubes safe:CB1; safe:uniqueProperties <http://imf.270a.info/property/CONCEPT>, <http://imf.270a.info/property/DATASOURCE>, <http://imf.270a.info/property/TIME_FORMAT>, <http://imf.270a.info/property/REF_AREA>, <http://imf.270a.info/property/OBS_VALUE>, <http://imf.270a.info/property/TIME_PERIOD>, <http://imf.270a.info/property/UNIT>, <http://imf.270a.info/property/FREQ>, <http://www.w3.org/ns/prov#wasGeneratedBy>, <http://www.w3.org/ns/prov#generatedAtTime>, <http://www.w3.org/ns/prov#wasDerivedFrom>, <http://www.w3.org/ns/prov#wasAttributedTo>, <http://www.w3.org/ns/prov#wasAssociatedWith>, <http://www.w3.org/ns/prov#used>, <http://www.w3.org/ns/prov#startedAtTime>, <http://www.w3.org/ns/prov#wasInformedBy>, <http://www.w3.org/ns/prov#generated>, <http://imf.270a.info/property/UNITOFMEASURE>, <http://imf.270a.info/property/STATUS>, <http://imf.270a.info/property/PCOUGRP>, <http://imf.270a.info/property/PGI_CONCEPT>; safe:uniqueCubes safe:CB1. safe:CB1 safe:graph <http://imf.270a.info/dataset>. safe:CB1 safe:uniqueProperty <http://imf.270a.info/property/CONCEPT>, <http://imf.270a.info/property/DATASOURCE>, <http://imf.270a.info/property/TIME_FORMAT>, <http://imf.270a.info/property/REF_AREA>, <http://imf.270a.info/property/OBS_VALUE>, <http://imf.270a.info/property/TIME_PERIOD>, <http://imf.270a.info/property/UNIT>, <http://imf.270a.info/property/FREQ>, <http://www.w3.org/ns/prov#wasGeneratedBy>, <http://www.w3.org/ns/prov#generatedAtTime>, <http://www.w3.org/ns/prov#wasDerivedFrom>, <http://www.w3.org/ns/prov#wasAttributedTo>, <http://www.w3.org/ns/prov#wasAssociatedWith>, <http://www.w3.org/ns/prov#used>, <http://www.w3.org/ns/prov#startedAtTime>, <http://www.w3.org/ns/prov#wasInformedBy>, <http://www.w3.org/ns/prov#generated>, <http://imf.270a.info/property/UNITOFMEASURE>, <http://imf.270a.info/property/STATUS>, <http://imf.270a.info/property/PCOUGRP>, <http://imf.270a.info/property/PGI_CONCEPT>.
- アクセスコントロールの情報はどこから読んでいるのか現時点では不明
- 評価時に気をつけること: キャッシュを消す
- SAFE_HOME 直下に cache.db というファイルができる.実体はオブジェクト HashMap<SubQuery, CacheEntry> をファイルに書き出したもの.