OWL組立生成問題(OWLGrinder)
質問
私は私のOWLオントロジーからアセンブリを構築していますが、オントロジーを解析するとき、それは型が宣言され、いくつかの値が与えられている「データ型のプロパティ」で、エラーメッセージを発生させます。私は門徒V3.4を使用して、私のオントロジーを書いてます。
たとえば、エラーが発生し、データ型の中の一つのタイプは、「文字列」と「英語&ペルシア語」のような値を持つ「言語」です。参照は、以下に示す弟分で作られています:
<rdf:RDF xml:base="http://www.owl-ontologies.com/Ontology1243411901.owl"
xmlns="http://www.owl-ontologies.com/Ontology1243411901.owl#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:protege="http://protege.stanford.edu/plugins/owl/protege#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:swrl="http://www.w3.org/2003/11/swrl#"
xmlns:swrlb="http://www.w3.org/2003/11/swrlb#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:xsp="http://www.owl-ontologies.com/2005/08/07/xsp.owl#">
と "言語" プロパティが下に記載されます:
<owl:DatatypeProperty rdf:ID="language">
<rdfs:range>
<owl:DataRange>
<owl:oneOf rdf:parseType="Resource">
<rdf:rest rdf:parseType="Resource">
<rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
<rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Farsi</rdf:first>
</rdf:rest>
<rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string">English</rdf:first>
</owl:oneOf>
</owl:DataRange>
</rdfs:range>
<rdfs:domain>
<owl:Class>
<owl:unionOf rdf:parseType="Collection">
<owl:Class rdf:about="#Teacher"/>
<owl:Class rdf:about="#ClassOfCourse"/>
<owl:Class rdf:about="#LearningResource"/>
<owl:Class rdf:about="#Discussion"/>
<owl:Class rdf:about="#Student"/>
</owl:unionOf>
</owl:Class>
</rdfs:domain>
</owl:DatatypeProperty>
私はちょうどOWLGrinderに1つのオントロジーを追加します。生成するときにこのエラーが行われます:
Assembly generation failed.
OWL property 'http://www.owl-ontologies.com/Ontology1243411901.owl#language' has a range declaration that points to _:bnode10579059 but its definition is missing.
Are you missing an ontology which declares this class?
の前の数字「_:BNODEは」私は「生成」ボタンを押すたびに変化します。 「言語」プロパティの値を削除することによって、別のエラーは、次のDataTypeプロパティに関連起こります。これは、定義されたすべてのDataTypeプロパティが(とそれに指定されたいくつかの値を持つ)OWLGrinderでエラーをしていることを意味します。
誰かがこのエラーをhandelingで私を導くことができれば、私は思っていた。
解決
は、現在 ROWLEX のOwlGrinder範囲は、リテラルまたは通常のクラスであることを期待しています。私は範囲としてその内部を割り当てるあなたの列挙が含まれている「LanguageList」ラッパークラスを作成することをお勧めします。私はこれをテストしていないが、私はそれが動作することを期待します。
他のヒント
私はOWLGrinderに慣れていないんだけど、あなたは、このようなExpectedLanguages
という名前のクラスを宣言してみてください(あなたの匿名ノードURIを与える)してからlanguage
述語のための範囲としてそれを使用することができます。
:ExpectedLanguages
a owl:DataRange ;
owl:oneOf (
"Farsi"^^xsd:string
"English"^^xsd:string
);
.
:languages
rdfs:range :ExpectedLanguages ;
.
あなたのコード/パーサ/推論があることを必要とする OWLカタログデータ型のあなたの使用OWL-DL最小に準拠します。
理由_:bnodeXXX
(空白ノード/匿名のノード)は、それが空であるため、各時間が新しいIDを持っています。しかし、メモリ内のRDFグラフ(モデル)内で、それを特定の目的のために、IDを一意に識別することができ、それがモデルが各ノード分析(匿名のまたは指定)されている間にロードされる各匿名ノードのために生成される必要がありますそう、その着信と発信の参照を識別することができます。
Intellidimension には、OWL-Liteは、OWL-フル、またはOWL-DLに変換することができSDKを提供します.NETクラス。あなたはそれを見てみることをお勧めします。
を追記の
私はあなたのオントロジーにドメインのセマンティクスを混乱していると思います。言語は、インスタンスを記述するために使用されている場合は、実際にインスタンスがUnionOf教師であることを推測することができることを」言っているときに、「言語のみ教師、ClassOfCourse、LearningResource、ディスカッション、学生に存在する可能性がある」ことを言おうとしていることが表示されます、ClassOfCourse、LearningResource、ディスカッション、および学生。」。ドメインのプロパティを制限する必要があるようにそれは感じているように、これはOWLの意味論の一般的な誤解、実際には、これまでOWL(スキーマ/検証)の関数ではないというとき使用することです。 OWLそれは使用を規定していない、利用状況によって推測されなければならないかを説明するためにのみ使用されます。
言語プロパティのドメインにUnionOfを使用することによって、あなたは、「言語プロパティを使用して記述されている何でも先生、またはClassOfCourse、またはLearningResource、もしくはディスカッション、または学生である」と言っています。私は、これは一般的に意味のないことを主張するだろう。
あなたはそのプロパティによって参照されているすべてのリテラル/リソースは、範囲宣言で定義されたタイプであることが推測されるよりも、特定のタイプのものであると財産の範囲を定義する場合は、の範囲は、という点で類似しています。
私は http://www.mygrid.orgでコピー/貼り付け、あなたのオントロジーをしました。英国/ OWL /検証する:それはOWL-liteのオントロジーではない(少なくとも)このオントロジーであると述べています。それはあなたの門徒の設定のために問題がある可能性があります?