Проблема в получении значения свойства экземпляра класса OWL - PullRequest
1 голос
/ 02 августа 2009

У меня есть несколько классов сов, у которых есть экземпляры. Эти классы также имеют свойства, которые имеют значение для каждого экземпляра. Я сделал свою онтологию с помощью Protege3.4 и сделал из них библиотеку c # от Rowlex.
Например, класс «Program» имеет экземпляр свойств «Software» и «atGrade». Значением свойства для этого экземпляра является 'PHD' (atGrade - это свойство объекта, которое отображает домен в класс Grade). Это сова:

<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"/>
    <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 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#Note"/>
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#ClassOfCourse"/>
    <owl:equivalentClass>
        <owl:Class>
            <owl:oneOf rdf:parseType="Collection">
                <Program rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Management">
                    <atGrade rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#PHD"/>
                </Program>
                <Program rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Literature">
                    <atGrade rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#PHD"/>
                </Program>
                <Program rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Software">
                    <atGrade rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#MasterOfResearch"/>
                </Program>
                <Program rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Information_Technology">
                    <atGrade rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#MasterOfScience"/>
                </Program>
            </owl:oneOf>
        </owl:Class>
    </owl:equivalentClass>
    <owl:disjointWith>
        <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Project"/>
    </owl:disjointWith>
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Grade"/>
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#ResourceType"/>
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Language"/>
    <rdfs:comment xml:lang="en">Study branch in which the members are working (e.g. MBA)</rdfs:comment>
    <owl:disjointWith>
        <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Discussion"/>
    </owl:disjointWith>
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Question"/>
</owl:Class>

Свойство atGrade также определено в онтологии:

<owl:ObjectProperty rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#atGrade">
    <rdfs:range rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Grade"/>
    <rdfs:domain>
        <owl:Class>
            <owl:unionOf rdf:parseType="Collection">
                <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Program"/>
                <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Teacher"/>
                <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Project"/>
                <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Course"/>
                <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Student"/>
            </owl:unionOf>
        </owl:Class>
    </rdfs:domain>
</owl:ObjectProperty>

Теперь, когда я создаю один из экземпляров в c #, например:

Program prog = new Program("http://www.owl-ontologies.com/Ontology1243411901.owl#Management", new RdfDocument());

свойство atGrade возвращает ноль. Я сделал следующее, но проблема не решилась:
созданный полный класс (новая программа _ (...))
-внесенный файл RDF: новая программа (uri, новый RdfDocument (uri)).
удалил тег 'rdfs: subClassOf' из онтологии.

Есть идеи, как решить эту проблему?
Может быть, мне следует удалить экземпляры из онтологии и вставить их в RDF, а затем извлечь их оттуда?

1 Ответ

0 голосов
/ 07 августа 2009

В своей онтологии вы прописываете, какие лица соответствуют вашему классу Программы. Человек является «Программой», если его URI является одним из перечисленных, и у него есть соответствующее свойство atGrade.

Когда вы создаете свой RdfDocument и создаете новый экземпляр Программы, все, что вы получите, - это тройка, подобная «myUri typeof Program». ROWLEX не будет заполнять значения по умолчанию и добавлять дополнительное свойство atGrade, как вы ожидаете. Вот почему вы получаете нулевое значение при получении свойства. Вам нужно будет добавить свойство atGrade отдельным лицам, иначе это даже не будет действительный экземпляр Программы.

...