Jena (または他の SPARQL Update サーバー) が存在論的制約を強制するかどうかを調べようとしています。たとえば、タイプ x を持つエンティティのみがプロパティ y を持つことが許可され、プロパティの値はタイプ z を持つ必要があることを強制したいと考えています。これは OWL が提供できるものだと思いますが、よくわかりません。また、具体的には、これらのルールに従わない SPARQL Update クエリを記述しようとすると、その更新の挿入に失敗し、エラーが返されることを Jena は保証してくれますか?
2 に答える
たとえば、タイプ x を持つエンティティのみがプロパティ y を持つことが許可され、プロパティの値はタイプ z を持つ必要があることを強制したいと考えています。これは OWL が提供できるものだと思いますが、よくわかりません。
あなたが求めているのは、OWL が提供するものではありません。OWL では、次のように言えます。
プロパティY rdfs:ドメイン タイプXプロパティY
rdfs:ドメイン タイプZ
しかし、これは(少なくとも、あなたが期待しているような意味では) X 型のものだけが propertyY の値を持つことができ、その値は Z 型でなければならないという意味ではありません。次のように、propertyY を使用するアサーション
a プロパティY b
OWL推論者はそれを推測できます
a rdf:type typeX
b rdf:type typeZ
これらの推論が何らかの「制約違反」になる唯一の場合は、a が型 X ではない、または b が型 Z ではないことを推論する他の方法がある場合です。 その場合、 OWL 推論者は矛盾を認識します。
Jena (または他の SPARQL Update サーバー) が存在論的制約を強制するかどうかを調べようとしています。…また、具体的には、これらのルールに従わない SPARQL Update クエリを記述しようとすると、その更新の挿入に失敗し、エラーが返されることを Jena は保証してくれますか?
Jena がそのままでこのようなものをサポートしているかどうかはわかりませんが、おそらく次のいずれかを実行できます。
- Reasoner がアタッチされた OntModel を使用し、そのグラフに対して SPARQL 更新を実行します。次に、グラフにクエリを実行して、矛盾がないかどうかを確認できます。これがどのように行われるかは、推論者が矛盾をどのように通知するかによって異なります。これはそれほど難しいことではないかもしれませんが、Jena は実際には RDF ベースであり、完全な OWL 推論のためには、Jena と統合する別の推論が必要になることを覚えておいてください (例えば、Pellet ですが、他にもあると思います)。
- または、推論が組み込まれたストアを使用することもできます。おそらく、この種の機能が既に備わっています。スタードッグにはこれらの機能のいくつかがあると思います。
OWL について理解する必要があるのは、プロパティの制限です。
プロパティ制限は、特別な種類のクラス記述です。これは、匿名クラス、つまり制限を満たすすべての個体のクラスを記述します。OWL では、値の制約とカーディナリティの制約という 2 種類のプロパティ制限が区別されます。
値の制約は、この特定のクラス記述に適用されると、プロパティの範囲に制約を課します。
カーディナリティ制約は、この特定のクラス記述のコンテキストで、プロパティが取り得る値の数に制約を課します。
問題の説明に基づいて、値の制約を使用する必要があります。これらの値の制約が存在します: 一部 ( someValuesFrom
)、のみ ( allValuesFrom
)、正確 ( hasValue
)。
例えば:
Class: Woman subClassOf: hasGender only Female
Class: Mother subClassOf: hasChild some Child
Class: Employee subClassOf: hasEmployeeID exaclty 1 ID
そのため、定義した個体に対する制限に応じて、これらの個体は推論によって適切なクラス (タイプ) に分類できます。システムは通常、虚偽の情報を入力することを防ぎませんが、コンセプトは満足できないか、矛盾していると宣言されます. オントロジーの定数に適合しない個体を入れた場合、オントロジーが矛盾する(すべてがうまくいかない)ので、最後の事実を撤回することができます。Jena についてはよくわかりませんが、OWL-API を使用すると、オントロジー マネージャーに概念を一時的に追加して、オントロジーの一貫性を確認できます。通常、このチェックがうまくいかない場合は、(変更リスナーを介して) オントロジー マネージャーへの最後の未保存の変更を削除できます。すべてが正しければ、