Получить людей из класса онтологии в.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>
Онтология была создана Протеже. Не могли бы вы помочь в ситуации
1 ответ
Вы получаете нулевые поля, потому что ваш класс Program не является перечисляемым OWL-классом.
Основная проблема заключается в том, что ваша онтология выражает то, чем не является Программа, вместо того, чтобы говорить, что это такое. Это не так, просто не то, что вы хотите. Я человек, я могу понять, что вы хотели (а именно, у вас есть 4 и только 4 программы, и все они разные), но ваша онтология этого не говорит. Ваша онтология говорит следующее:
- Есть программы.
- Если какое-то лицо оказывается Программой, то это, безусловно, не Студент, Учитель и т. Д.
- Программы всегда имеют свойство atGrade.
- Если они оказываются ИТ, SW, Mgmt или Литературой, они не одинаковы.
Но у вас может быть много других людей, не только IT, SW, Mgmt и Литература. Следовательно, ROWLEX справедливо не представляет класс Program как класс enum.
ROWLEX сгенерирует ваши статические поля, если сделает ваш класс Program истинно перечислимым OWL-классом.