2009-05-29 13 views
2

OWLオントロジからアセンブリを構築していますが、オントロジを解析するときに型が宣言され、いくつかの値が与えられている "データ型プロパティ"でエラーメッセージが表示されます。私はProtege v3.4を使って私のオントロジを書いた。OWLアセンブラ生成問題(OWLGrinder)

たとえば、エラーを発生させるデータ型プロパティの1つは、 "文字列"型の "Language"で、値は "英語& Farsi"です。参照は、以下に示す弟分で作られています:

<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? 

[Generate]ボタンを押すたびに「_:bnode」の前の数字が変わります。 "Language"プロパティから値を削除すると、次のDataTypeプロパティに関連して別のエラーが発生します。 OWLGrinderで定義されている(およびいくつかの値が指定されている)すべてのDataTypeプロパティでエラーが発生していることを意味します。

私は誰かがこのエラーのハンドリングに私を導くことができるかどうか疑問に思っていました。

答えて

1

現在ROWLEX OwlGrinderは、範囲がリテラルまたは通常のクラスであると想定しています。私は範囲内の列挙を含む 'LanguageList'ラッパークラスを作成することをお勧めします。私はこれをテストしなかったが、私はそれが動作すると期待しています。

+0

ありがとうございました。この問題は、すべてのデータ型の範囲に対して1つのクラスを作成することで解決されます。 – Ehsan

0

http://www.mygrid.org.uk/OWL/Validatorにあなたのオントロジーをコピー/ペーストしました:このオントロジは(少なくとも)OWL-Liteオントロジーではないと言います。 Protegeの設定に問題がある可能性がありますか?

+0

こんにちはピエール、答えるためにありがとうございました。そのバリデータサイトに私のオントロジ全体を貼り付けました。そのサイトはOWL-DLとして検証しました。 OWLGrinderはOWL-Liteだけで動作しますか?オントロジーからアセンブリを作成するための他のツールはありますか? – Ehsan

2

私はOWLGrinderに精通していませんが、ExpectedLanguagesなどの名前付きクラスを宣言して(匿名ノードにURIを渡して)、それをlanguage述語の範囲として使用することができます。省略例(Turtle形式で):

:ExpectedLanguages 
    a owl:DataRange ; 
    owl:oneOf (
     "Farsi"^^xsd:string 
     "English"^^xsd:string 
    ); 
. 

:languages 
    rdfs:range :ExpectedLanguages ; 
. 

OWL enumerated datatypeの使用はあなたのコード/パーサ/推論は、最低でもOWL-DL対応している必要があります。

空白のため、_:bnodeXXX(ブランクノード/匿名ノード)が毎回新しいIDを持つ理由があります。しかし、メモリ内のRDFグラフ(モデル)内でRDFグラフ(モデル)を識別するために、各匿名ノードがロードされるときにIDを生成する必要があるため、モデルの解析中に各ノード(匿名または名前付き)したがって、その参照および受信参照を識別することができます。

+0

Phil Mさん、本当にありがとうございます。あなたの答えから私が学ぶことが大変あります。 問題は、すべてのデータ型範囲に対して1つのクラスを作成することで解決します。 – Ehsan

1

Intellidimensionは、OWL-Lite、OWL-Full、またはOWL-DLを.NETクラスに変換できるSDKを提供します。あなたはそれを見てみたいかもしれません。

追記
は、私はあなたのオントロジーにドメインのセマンティクスを混乱していると思います。実際にあなたが言っているときに「言語は教師、ClassOfCourse、LearningResource、ディスカッション、学生にのみ存在する」と言おうとしているようです。「言語が、インスタンスがUnionOf教師であると推測できるインスタンスを記述するために使用されている、ClassOfCourse、LearningResource、Discussion、and Student "を参照してください。これは、OWLのセマンティクスの一般的な誤解であり、実際にはOWL(スキーマ/検証)の機能ではないときにドメインがプロパティの使用を制限する必要があるように感じるからです。 OWLは、使用法によって推論されるべきものを記述するためにのみ使用され、使用法は規定していません。あなたは言語プロパティを使用して記述されている何でも先生、またはClassOfCourse、またはLearningResource、もしくはディスカッション、またはAである」と言っている言語プロパティのドメインにUnionOfを使用することにより

Domain semantics described in OWL guide.

学生"。私はこれが通常は意味がないと主張します。あなたがプロパティの範囲は、そのプロパティによって参照されているすべてのリテラル/リソースが定義されたタイプであることが推測されるよりも、特定のタイプのものであると定義した場合

UnionOf semantic described in OWL guide.

範囲という点で似ています範囲宣言で

Range described in OWL guide.

関連する問題