1

私はのようないくつかのオブジェクトの制限があります

hasVendor some Vendor
hasYear some integer[minLength 2, maxLength 4, >=1995, <=2012]
hasPrice only string[pattern "/^[0-9]+(\.[0-9]{2})?$/"]

ここで、ベンダーはクラスです。私はこのリンクからの指示に従いました:https ://stackoverflow.com/a/7805455/1138148制限を読んでください。Jenaを使用して、これらの各制限から制約値を取得する必要があります。最初のケースでは制約として取得できました'Vendor'が、2番目と3番目の場合、次のような値のようなゴミを取得しています。

7cbf42c2:137784f42b4:-7d1fおよびそれぞれ 7cbf42c2:137784f42b4:-7d29。これらの値は何ですか?パターン自体と値minLength、1995などを取得するにはどうすればよいですか。

4

1 に答える 1

1

これらは、これらの制限内の中間ノードの bnode 識別子です。結果のデータには、Manchester 構文でシリアル化されたときに表示されるよりも多くの「要素」があります。w3c でOWL から RDF へのマッピングに関するドキュメントを調べて、それがどのように行われるかについて詳しく学んでください。

自分で検証を行うことはお勧めしません。このようなものを OWL で表現する場合は、推論を使用して、何かが制限に違反したときに通知することができます。それはほとんどの場合うまくいきますが、実際にこれを機能させるためには、オープンワールドとクローズドワールドの間にいくつかの落とし穴があることに注意する必要があります. また、Pellet が提供するIntegrity Constraint Validation のようなものを見ることもできます。これにより、OWL で制約を記述し、それらにクローズド ワールド セマンティクスを適用して、より自然な (特に RDBMS の世界から来ている場合) 操作方法を提供できます。彼ら。

しかし、制限を手動で処理する必要がある場合は、制限の基礎となる RDF 構造をもう少し掘り下げて、探しているビットを取得するか、実際に OWL を操作するために設計された API を使用する必要があります。OWLAPIなど。

于 2012-05-23T19:59:34.787 に答える