我有一些有实例的猫头鹰类。这些类还具有对每个实例都有价值的属性。我已经通过 Protege3.4 制作了我的本体,并通过 Rowlex 从他们那里制作了 c# 库。
例如,“程序”类具有“软件”和“atGrade”属性的实例。此实例的属性值为“PHD”(atGrade 是将域映射到 Grade 类的对象属性)。这是猫头鹰:
<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,然后从那里检索它们?