2009-08-02 12 views
1

J'ai certaines classes de chouettes qui ont des instances. Ces classes ont également des propriétés qui ont une valeur pour chaque instance. J'ai créé mon ontologie par Protege3.4, et j'ai créé la librairie C# de Rowlex.
Par exemple, la classe 'Program' a une instance de propriété 'Software' et 'atGrade'. La valeur de la propriété pour cette instance est 'PHD' (atGrade est une propriété d'objet qui mappe domain en classe de classe). Ceci est le OWL:Problème lors de la récupération de la valeur de propriété d'une instance d'une classe OWL

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

La propriété atGrade est également défini dans l'ontologie:

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

Maintenant, quand je fais une des instances en C#, par exemple:

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

La propriété atGrade renvoie null. J'ai fait ce qui suit, mais le problème n'a pas résolu:
- fait une classe complète (nouveau programme _ (...))
-entré un fichier RDF existant: nouveau programme (uri, new RdfDocument (uri)) . -deleted la balise 'rdfs: subClassOf' de l'ontologie.


Des idées comment ce problème peut-il résoudre?
Peut-être que je devrais supprimer les instances de l'ontologie et les insérer dans un RDF, puis les récupérer à partir de là?

Répondre

0

Vous prescrivez dans votre ontologie ce que les individus se conforment à votre classe de programme. Un individu est "Programme" si son URI est l'un de vos URI et qu'il a une propriété atGrade appropriée. Lorsque vous créez votre document RdfDocument et créez une nouvelle instance de programme, tout ce que vous obtiendrez est un triple comme "myUri typeof Program". ROWLEX ne remplira pas les valeurs par défaut et ajoutera la propriété atGrade supplémentaire comme vous le souhaitez. C'est pourquoi vous obtenez null lorsque vous récupérez la propriété. Vous devrez ajouter la propriété atGrade aux individus, sinon ce n'est même pas une instance de programme valide.

+0

Merci beaucoup. J'ai donc eu un malentendu sur les ontologies et maintenant il est réformé. Merci encore – Ehsan