2009-08-02 40 views
1

我有一些有實例的貓頭鷹類。這些類也具有對每個實例都有價值的屬性。我通過Protege3.4創建了我的本體,並由Rowlex從他們那裏製作了c#庫。
例如,類「程序」具有「軟件」和「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屬性也會在本體定義:

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

現在,當我做在C#中的實例之一,例如:

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

atGrade屬性返回null。 我做了以下事情,但問題沒有解決:
- 創建了一個完整的類(新程序_(...))
- 已存在的RDF文件:新程序(uri,new RdfDocument(uri)) 。
- 從本體中刪除'rdfs:subClassOf'標記。

任何想法如何解決這個問題?
也許我應該從本體中刪除實例並將它們插入RDF中,然後從那裏檢索它們?

回答

0

你在你的本體論中規定哪些人遵守你的程序類。如果一個人的URI是你的枚舉之一,並且它有一個合適的atGrade屬性,那麼他就是「Program」。

當您創建您的RdfDocument並創建一個新的Program實例時,您將獲得的是像「myUri typeof Program」這樣的三元組。 ROWLEX將不會填寫默認值,並按照您的預期添加額外的atGrade屬性。這就是爲什麼當你檢索屬性時你會得到空值。您需要將atGrade屬性添加到個人,否則它甚至不是有效的程序實例。

+0

非常感謝。所以我誤解了本體論,現在它已經改革了。 再次感謝 – Ehsan 2009-08-09 10:17:01