2017-01-25 17 views
2

私はProtégé5.1.0でオントロジーをモデリングしています。私はしかし、これらの「制約」は1のように単純ではありません、特定の状況下で、インスタンスがクラスA.SPARQL CONSTRUCTの推論

<owl:Class rdf:about="http://example.org#classA"> 
    <owl:equivalentClass> 
     <owl:Restriction> 
      <owl:onProperty rdf:resource="http://example.org#meetsRequirements"/> 
      <owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">true</owl:hasValue> 
     </owl:Restriction> 
    </owl:equivalentClass> 
</owl:Class> 

であること、と推察され、推論-enginceが実行されていると、何かをモデルにしたいですこの例に示されています。たとえば、制限の1つは、私が知る限り、OWL-DLでモデル化できない演算子「より大きい」です。 (それは正しいですか?)

インターネットでサーフィンすると、SPARQL CONSTRUCTという種類のクエリが見つかりました。だから、私のようなクエリを思い付く:

CONSTRUCT {?ins rdf:type <http://example.org#classA} 
FROM http://example.org/myBase 
WHERE {?ins example:hasValue ?val} 
FILTER (?val > 10^^xsd:double)} 

私はこのクエリはexample:hasValue > 10を持つすべてのインスタンスがタイプClassAのあるグラフを返すべきだと思います。

この結果をグラフに反映させたいと思います(私のすべてのトリプルがどこにあるか)。その可能性はありますか?このような状況に対処した人はいますか?

+2

。ほとんどの場合、これはいくつかのルールベースの推論メカニズムによって行われます。しかし、すべてのOWL 2 DL構造体がルールエンジンによってカバーされるわけではなく、ここでの共通推論機構は、タブローアルゴリズムである。 https://jena.apache.org/documentation/inference/#owl:Apacheのイエナのために、あなたは、組み込みのOWLの推論を使用するときに構築物が覆われているOWLここに見ることができます。そして、私が見る限り、ファセットの制限、それはあなたが基本的に話していることは、カバーされていません。 – AKSW

答えて

0

2つのオプションがあります。

推論された知識を構築するコンストラクトを実行し、その結果をファイル(タートルなど)に保存し、トリプルストアに保存します(別のグラフで更新を処理できます)。このアプローチでは、ストレージバックエンドに冗長性が作成され静的であるにもかかわらず、クエリを実行可能にします。通常は定期的に実行し、明示的なナレッジベースで行った小さな変更ごとにこの方法を実行する余裕はありません。明らかに、RDF(SQL/XML/CSVコンバータなど)を作成する際にこれらのCONSTRUCTルールを実行することができます。このルールでは、通常、小さなデータセットで並列処理を行うことができます。

オプション2、ほとんどのトリプル店(例えば、ヴィルトゥオーゾ、布石/イエナ)はSPARQLクエリを書き換え、あなたがルールなしで行うよりも多くの結果を得るためのルールを持っています。問題は、(OWLの推論のほとんどのように)自分の推論エンジンが全体のベースをロードする必要があるため、このアプローチは通常、布石/イエナのようなエンジンの場合には、大規模なデータセットを非常にうまく機能していない、非常にパフォーマンスではなく、ということです任意の推論を適用することができる前に、メモリ内のデータセット。 SPARQLクエリエンジンの推論のサポートに依存するであろう