Получение отдельных элементов класса онтологии в .Net
Вопрос
Что касается моего предыдущее сообщение, теперь, когда я тестирую, progFields ниже:
System.Reflection.FieldInfo[] progFields = typeof(Program).GetFields();
ничего не возвращает.Моя онтология о Программе выглядит следующим образом:
<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"/>
<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#ResourceAuthor"/>
<owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Note"/>
<owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#ClassOfCourse"/>
<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>
<owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Project"/>
</owl:disjointWith>
и в конце файла определяется его коллекция:
<owl:AllDifferent>
<owl:distinctMembers rdf:parseType="Collection">
<Program rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Information_Technology"/>
<Program rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Software"/>
<Program rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Management"/>
<Program rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Literature"/>
</owl:distinctMembers>
</owl:AllDifferent>
Онтология была создана компанией Protege.Не могли бы вы, пожалуйста, помочь в сложившейся ситуации
Решение
Вы получаете нулевые поля, потому что ваш программный класс не является перечисляемый класс OWL.
Основная проблема заключается в том, что ваша онтология выражает то, чем Программа НЕ является, вместо того, чтобы сказать, что это ТАКОЕ.В этом нет ничего плохого, просто это не то, чего вы хотите.Я человек, я могу понять, чего вы хотели (а именно, что у вас есть 4 и только 4 программы, и все они разные), но ваша онтология этого не говорит.То, что говорит ваша онтология, выглядит следующим образом:
- Есть программы.
- Если человек является Программой, то это, конечно, не Ученик, Учитель и т.д.
- Программы всегда имеют свойство atGrade.
- Если это ИТ, SW, Mgmt или Литература, то это не одно и то же.
Но у вас могло бы быть много других людей, не только IT, SW, Mgmt и Literature.Следовательно, ROWLEX справедливо не предоставляет класс Program как класс enum.
ROWLEX сгенерирует вам статические поля, если сделать ваш программный класс a true перечисляемый класс OWL.