2009-08-02 16 views
1

Ich habe einige Eulenklassen mit Instanzen. Diese Klassen haben auch Eigenschaften, die für jede Instanz einen Wert haben. Ich habe meine Ontologie von Protege3.4 gemacht und C# Bibliothek von Rowlex daraus gemacht.
Zum Beispiel hat die Klasse 'Programm' eine Instanz von 'Software' und 'atGrade' Eigenschaft. Der Eigenschaftswert für diese Instanz ist 'PHD' (atGrade ist eine Objekteigenschaft, die die Domäne der Klasse 'Grade' zuordnet). Dies ist die OWL:Problem beim Abrufen des Eigenschaftswerts einer Instanz einer OWL-Klasse

<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> 

Die atGrade Eigenschaft wird auch in der Ontologie definiert:

<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> 

Wenn ich jetzt eine der Instanzen in C# machen, zum Beispiel:

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

Die atGrade-Eigenschaft gibt null zurück. Ich habe folgendes getan, aber das Problem hat nicht gelöst:
- eine vollständige Klasse (neues Programm _ (...))
-Erstellte eine vorhandene RDF-Datei: neues Programm (uri, neue RdfDocument (uri)) .
- löschte das Tag 'rdfs: subClassOf' aus der Ontologie.

Irgendwelche Ideen, wie dieses Problem lösen kann?
Vielleicht sollte ich die Instanzen aus der Ontologie löschen und sie in eine RDF einfügen, dann von dort abrufen?

Antwort

0

Sie schreiben in Ihrer Ontologie vor, welche Personen Ihrer Programmklasse entsprechen. Eine Einzelperson ist "Programm", wenn ihre URI eine Ihrer aufgezählten URIs ist und über eine entsprechende atGrade -Eigenschaft verfügt.

Wenn Sie Ihr RdfDocument erstellen und eine neue Programminstanz erstellen, erhalten Sie nur ein dreifaches "myUri typeof Program". ROWLEX wird die Standardwerte nicht ausfüllen und die zusätzliche atGrade-Eigenschaft wie erwartet hinzufügen. Aus diesem Grund erhalten Sie beim Abrufen der Eigenschaft null. Sie müssen den Personen die atGrade-Eigenschaft hinzufügen, andernfalls ist es nicht einmal eine gültige Programminstanz.

+0

Vielen Dank. Also hatte ich ein Missverständnis von Ontologien und jetzt ist es reformiert. Danke nochmal – Ehsan

Verwandte Themen