Получение отдельных элементов класса онтологии в .Net

StackOverflow https://stackoverflow.com/questions/1117805

  •  12-09-2019
  •  | 
  •  

Вопрос

Что касается моего предыдущее сообщение, теперь, когда я тестирую, 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top