Получить людей из класса онтологии в .Net - PullRequest
1 голос
/ 13 июля 2009

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

3 голосов
/ 15 июля 2009

Вы получаете ноль полей, потому что ваш класс Program не является перечисляемым классом OWL .

Коренная проблема заключается в том, что ваша онтология выражает то, чем не является Программа, вместо того, чтобы говорить, что это такое. Это не так, просто не то, что вы хотите. Я человек, я могу понять, что вы хотели (а именно, у вас есть 4 и только 4 программы, и все они разные), но ваша онтология не говорит, что . Вот что говорит ваша онтология:

  • Есть программы.
  • Если какое-то лицо оказывается Программой, то это, безусловно, не Студент, Учитель и т. Д.
  • Программы всегда имеют свойство atGrade.
  • Если они оказываются ИТ, SW, Mgmt или Литературой, они не совпадают.

Но у вас может быть много других людей, не только IT, SW, Mgmt и Литература. Следовательно, ROWLEX справедливо не представляет класс Program как класс enum.

ROWLEX сгенерирует вам статические поля, если сделает ваш класс Program истинным перечисляемым классом OWL.

...