2009-05-29 17 views
2

Je construis un ensemble de mon ontologie OWL, mais quand l'ontologie de l'analyse, il génère un message d'erreur à « propriétés » de type de données où un type est déclaré et certaines valeurs sont données. J'ai écrit mon ontologie en utilisant Protege v3.4. Par exemple, une des propriétés de type de données qui génère une erreur est "Language" avec le type "string" et des valeurs comme "English & Farsi". Les références sont énumérées ci-dessous, faite par protege:Assemblée OWL Génération problème (OWLGrinder)

<rdf:RDF xml:base="http://www.owl-ontologies.com/Ontology1243411901.owl" 
xmlns="http://www.owl-ontologies.com/Ontology1243411901.owl#" 
xmlns:owl="http://www.w3.org/2002/07/owl#" 
xmlns:protege="http://protege.stanford.edu/plugins/owl/protege#" 
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
xmlns:swrl="http://www.w3.org/2003/11/swrl#" 
xmlns:swrlb="http://www.w3.org/2003/11/swrlb#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" 
xmlns:xsp="http://www.owl-ontologies.com/2005/08/07/xsp.owl#"> 

Et la propriété « Langue » est mentionné ci-dessous:

<owl:DatatypeProperty rdf:ID="language"> 
     <rdfs:range> 
      <owl:DataRange> 
       <owl:oneOf rdf:parseType="Resource"> 
        <rdf:rest rdf:parseType="Resource"> 
         <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/> 
         <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Farsi</rdf:first> 
        </rdf:rest> 
        <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string">English</rdf:first> 
       </owl:oneOf> 
      </owl:DataRange> 
     </rdfs:range> 
     <rdfs:domain> 
      <owl:Class> 
       <owl:unionOf rdf:parseType="Collection"> 
        <owl:Class rdf:about="#Teacher"/> 
        <owl:Class rdf:about="#ClassOfCourse"/> 
        <owl:Class rdf:about="#LearningResource"/> 
        <owl:Class rdf:about="#Discussion"/> 
        <owl:Class rdf:about="#Student"/> 
       </owl:unionOf> 
      </owl:Class> 
     </rdfs:domain> 
    </owl:DatatypeProperty> 

-je ajouter une ontologie à OWLGrinder. Cette erreur a été commise lors de la génération:

Assembly generation failed. 
OWL property 'http://www.owl-ontologies.com/Ontology1243411901.owl#language' has a range declaration that points to _:bnode10579059 but its definition is missing. 
Are you missing an ontology which declares this class? 

Le nombre devant « _: bnode » change chaque fois que j'appuie sur le bouton « Générer ». En supprimant les valeurs de la propriété "Language", une autre erreur se produit liée à la propriété DataType suivante. Cela signifie que chaque propriété DataType définie (et dont certaines valeurs lui sont spécifiées) génère une erreur dans OWLGrinder.

Je me demandais si quelqu'un pouvait me guider dans handeling cette erreur.

Répondre

1

Actuellement ROWLEX OwlGrinder attend la plage d'être un littéral ou une classe régulière. Je recommande de créer une classe wrapper 'LanguageList' qui contient votre énumération à l'intérieur de l'assigner comme une plage. Je n'ai pas testé cela, mais je m'attends à ce que ça marche.

+0

Merci beaucoup pour la réponse. Le problème est résolu en créant une classe pour chaque plage de types de données. – Ehsan

0

J'ai copié/collé votre ontologie dans http://www.mygrid.org.uk/OWL/Validator: il est dit que cette ontologie n'est (au moins) pas une ontologie OWL-lite. Il peut y avoir un problème pour votre config Protege?

+0

Bonjour Pierre, Je vous remercie beaucoup d'avoir répondu. J'ai collé toute mon ontologie dans ce site de validation, et le site l'a vérifié comme OWL-DL. OWLGrinder fonctionne-t-il uniquement avec OWL-Lite? Existe-t-il un autre outil pour faire l'assemblage à partir de l'ontologie? – Ehsan

2

Je ne suis pas familier avec OWLGrinder, mais vous pouvez essayer de déclarer une classe nommée telle que ExpectedLanguages (donner un URI à votre noeud anonyme) et l'utiliser comme plage pour votre prédicat language. Un exemple abrégé (en format Turtle):

:ExpectedLanguages 
    a owl:DataRange ; 
    owl:oneOf (
     "Farsi"^^xsd:string 
     "English"^^xsd:string 
    ); 
. 

:languages 
    rdfs:range :ExpectedLanguages ; 
. 

utilisation du OWL enumerated datatype exige que votre code/analyseur/raisonneur être OWL-DL conforme au minimum.

La raison pour laquelle le _:bnodeXXX (noeud blanc/nœud anonyme) a un nouvel identifiant chaque fois parce qu'il est vide. Cependant, dans le but de l'identifier dans un graphe RDF (modèle) en mémoire, un identifiant doit être généré pour chaque noeud anonyme quand il est chargé. Pendant l'analyse du modèle, chaque noeud (anonyme ou nommé) peut être identifié de manière unique. donc ses références entrantes et sortantes peuvent être identifiées.

+0

Merci beaucoup M. Phil M. Il y a beaucoup à apprendre de votre réponse. Le problème est résolu en créant une classe pour chaque plage de types de données. – Ehsan

1

Intellidimension fournit un SDK qui peut convertir des classes OWL-Lite, OWL-Full ou OWL-DL en .NET. Vous pourriez vouloir jeter un coup d'oeil à cela.

Sidenote
Je pense que vous confondez la sémantique du domaine dans votre ontologie. Il semble que vous essayez de dire que « La langue ne peut exister que sur l'enseignant, ClassOfCourse, LearningResource, Discussion, étudiant » quand en fait, vous dites: « Si le langage est utilisé pour décrire une instance cette instance peut être déduit être le unionOf enseignant , ClassOfCourse, LearningResource, Discussion et Etudiant. ".Ceci est une mauvaise interprétation courante de la sémantique de OWL car il semble que le domaine devrait restreindre l'utilisation d'une propriété alors qu'en fait ce n'est pas la fonction de OWL (schéma/validation). OWL est utilisé uniquement pour décrire ce qui devrait être déduit par l'utilisation, il ne prescrit pas l'utilisation.

Domain semantics described in OWL guide.

En utilisant unionOf dans le domaine de la propriété de la langue, vous dites que « Tout ce qui est décrit en utilisant la propriété de la langue est un enseignant ou un ClassOfCourse, ou un LearningResource, ou une discussion, ou Étudiant". Je dirais que ce n'est pas typiquement significatif.

UnionOf semantic described in OWL guide.

Range est similaire en ce que si vous définissez la plage d'une propriété d'être d'un type spécifique que l'on peut déduire que tous les littéraux/ressources qui sont visées par cette propriété sont du type défini avec la déclaration de plage.

Range described in OWL guide.