Получить людей из класса онтологии в.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-классом.

Другие вопросы по тегам