2009-08-02 14 views
1

インスタンスを持ついくつかのowlクラスがあります。これらのクラスには、各インスタンスの値を持つプロパティもあります。 Protege3.4で私のオントロジーを作って、それらからRowlexによってC#ライブラリを作った。
たとえば、クラス 'Program'は、 'Software'および 'atGrade'プロパティのインスタンスを持ちます。このインスタンスのプロパティ値は 'PHD'です(atGradeはドメインをGradeクラスにマッピングするオブジェクトプロパティです)。これはOWLです:OWLクラスのインスタンスのプロパティ値を取得する際の問題

<owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Program"> 
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> 
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Student"/> 
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Teacher"/> 
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Rank"/> 
    <rdfs:subClassOf> 
     <owl:Restriction> 
      <owl:onProperty> 
       <owl:ObjectProperty rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#atGrade"/> 
      </owl:onProperty> 
      <owl:allValuesFrom rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Grade"/> 
     </owl:Restriction> 
    </rdfs:subClassOf> 
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Course"/> 
    <owl:disjointWith> 
     <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#LearningResource"/> 
    </owl:disjointWith> 
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Note"/> 
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#ClassOfCourse"/> 
    <owl:equivalentClass> 
     <owl:Class> 
      <owl:oneOf rdf:parseType="Collection"> 
       <Program rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Management"> 
        <atGrade rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#PHD"/> 
       </Program> 
       <Program rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Literature"> 
        <atGrade rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#PHD"/> 
       </Program> 
       <Program rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Software"> 
        <atGrade rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#MasterOfResearch"/> 
       </Program> 
       <Program rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Information_Technology"> 
        <atGrade rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#MasterOfScience"/> 
       </Program> 
      </owl:oneOf> 
     </owl:Class> 
    </owl:equivalentClass> 
    <owl:disjointWith> 
     <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Project"/> 
    </owl:disjointWith> 
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Grade"/> 
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#ResourceType"/> 
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Language"/> 
    <rdfs:comment xml:lang="en">Study branch in which the members are working (e.g. MBA)</rdfs:comment> 
    <owl:disjointWith> 
     <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Discussion"/> 
    </owl:disjointWith> 
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Question"/> 
</owl:Class> 

atGradeプロパティもオントロジーで定義されています:私はC#でのインスタンスのいずれかを行うとき、今

<owl:ObjectProperty rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#atGrade"> 
    <rdfs:range rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Grade"/> 
    <rdfs:domain> 
     <owl:Class> 
      <owl:unionOf rdf:parseType="Collection"> 
       <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Program"/> 
       <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Teacher"/> 
       <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Project"/> 
       <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Course"/> 
       <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Student"/> 
      </owl:unionOf> 
     </owl:Class> 
    </rdfs:domain> 
</owl:ObjectProperty> 

例えば:

Program prog = new Program("http://www.owl-ontologies.com/Ontology1243411901.owl#Management", new RdfDocument()); 

atGradeプロパティはnullを返します。 私は次のようにしましたが、問題は解決しませんでした。
-made a full class(新しいプログラム_(...))
- 既存のRDFファイルを新規作成しました:新しいプログラム(uri、new RdfDocument(uri)) 。
- オントロジから 'rdfs:subClassOf'タグを削除しました。

この問題の解決方法を教えてください。
おそらく、私はインスタンスをontologyから削除し、それらをRDFに挿入してそこから取得する必要がありますか?

答えて

0

あなたは、どの個人があなたのプログラムクラスに従っているかをあなたのオントロジで処方します。 URIはあなたの列挙されたものの1つであり、適切なatGradeプロパティを持つ場合、個人は "Program"です。

RdfDocumentを作成して新しいプログラムインスタンスを作成すると、「myUri typeof Program」のように3倍になります。 ROWLEXはデフォルト値を記入せず、余分なatGradeプロパティを期待どおりに追加しません。そのため、プロパティを取得するときにnullが返されます。個人にatGradeプロパティを追加する必要があります。それ以外の場合は、有効なプログラムインスタンスでもありません。

+0

ありがとうございます。だから私はオントロジーの誤解を持ちましたが、今は改革されています。 もう一度ありがとう – Ehsan

関連する問題