記述論理クエリシステム Picker

1 概要

Picker はRDFデータを入力として記述論理概念を出力するクエリシステムです.即ち,RDFによるインスタンスデータやオントロジーのデータベースに対して問い合わせを行うと,人工知能の技術を用いた複雑な概念表現の答えを推論できます.

2 ダウンロード

3 システム要件

  • Java 8 以上

4 実行方法

$ java -jar picker.jar --data DATA_FILE --query QUERY_FILE

5 実行例

配布ファイルにある train.ttl と train.dq を使って実行してください.

$ java -jar picker.jar --data train.ttl --query train.dq
@PREFIX     : <http://example.org/> .
@PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

LANG (atom some)

SELECT ?x[3] WHERE {
        :TrainToEast rdfs:subClassOf ?x[3] .
        ?x[3] rdfs:subClassOf :TrainToEast .
}
-----------------------------------------------------------------------------------------------------------
| ?x[3]                                                                                                   |
===========================================================================================================
| (and http://example.org/TrainToEast (some http://example.org/has http://example.org/Long))              |
| (and http://example.org/TrainToEast (some http://example.org/has http://example.org/Rectangle))         |
| (and http://example.org/TrainToEast (some http://example.org/has http://example.org/Short))             |
| (some http://example.org/has (and http://example.org/Closed http://example.org/Short))                  |
| http://example.org/TrainToEast                                                                          |
| (and http://example.org/TrainToEast (some http://example.org/has http://example.org/Open))              |
| (and http://example.org/TrainToEast (some http://example.org/has http://example.org/Closed))            |
-----------------------------------------------------------------------------------------------------------

6 クエリ文法

記述論理の概念

概念定数

Picker では,以下の記法によって SROIQ 概念を表す概念定数を記述できます.

概念
C, D ::= TOP | BOT | <URI> | (not C) | (and C D) | (or C D) | (all R C) | (some R C) | (at-most n R C) | (at-least n R C) | (exactly n R C) (filler R i) | (self R) | (one-of i1 i2 … in)
ロール
R ::= <URI> | (inverse R)
個体
i ::= <URI>

概念変数

Picker では,以下の記法によって ALC 概念を表す概念変数を記述できます.

  • ?x[n]

n は ?x に代入される以下のように定義される概念の最大長を表します. ただし,C, D を概念,R をロールとします.

  • |<URI>| = |TOP| = |BOT| = 1
  • |(not C)| = |C|
  • |(and C D)| = |(or C D)| = |C| + |D|
  • |(all R C)| = |(some R C>| = |R| + |C|
  • |R| = 1

クエリ

構文規則

Picker の構文規則は以下の通りです. SPARQL と大きく異なる点を挙げておきます.

  • トリプルパターンの述語に記述できるのは rdfs:subClassOf のみです.
  • 概念定数と概念変数を使用できます.
  • 概念変数を用いるときは概念の最大長を正数で指定する必要があります.
Query       ::= Prologue SelectQuery
Prologue    ::= PrefixDecl∗
PrefixDecl  ::= 'PREFIX' PNAME_NS '<' URI '> .'
SelectQuery ::= 'SELECT' Var+ WhereClause
WhereClause ::= 'WHERE' '{' (Triple '.')+ '}'
Triple      ::= Term ' ' rdfs:subClassOf ' ' Term
Term        ::= ConceptCon | ConceptVar

WhereClause については,変数の出現順序について以下の制約があります.

  • 2変数トリプルパターン ?x[n] rdf:subClassOf ?y[m] . のとき, ?x[n] または ?y[m] のどちらかが解決済みでなければいけません.

正しいクエリの例

SELECT ?x[2] ?y[3] WHERE {
   ?x[2] rdfs:subClassOf :Man .   # (1)
   ?x[2] rdfs:subClassOf ?y[3] .  # <= ?x[2] が (1) で解決されている
}

不正なクエリの例

SELECT ?x[2] ?y[3] WHERE {
   ?x[2] rdfs:subClassOf ?y[3] .  # <= ?x[2] と ?y[3] のどちらも解決されていない
   ?x[2] rdfs:subClassOf :Man .
}

7 許諾と免責

本プログラムの著作権は兼岩研究室に帰属します. 国公立研究機関や教育機関による非営利目的の利用に際して許可は必要ありません. 民間企業の業務などで使用される場合は兼岩研究室にご相談ください. 本プログラムの使用により,いかなるトラブルが発生しても一切責任を負いませんのでご了承下さい. 研究開発に使用する場合は論文に参考文献として以下を参照してください.

  • 長井拓馬, 兼岩 憲, 「RDFデータの極小モデル推論に基づく記述論理ALCH(D) の概念学習」, 人工知能学会論文誌, Vol. 29, No. 3, pp. 343-355, 2014. PDF