2009-05-29 7 views
2

Ich baue eine Assembly von meiner OWL-Ontologie, aber beim Parsen von Ontologie, wird eine Fehlermeldung bei "datype properties" ausgelöst, wo ein Typ deklariert wird und einige Werte angegeben werden. Ich habe meine Ontologie mit Protege v3.4 geschrieben.OWL Assembly Generierung Problem (OWLGrinder)

Zum Beispiel ist eine der Datentypeigenschaften, die Fehler auslöst, "Sprache" mit dem Typ "Zeichenfolge" und Werte wie "Englisch & Farsi". Die Referenzen sind unten aufgeführt, hergestellt von Protege:

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

Und die „Sprache“ Eigenschaft wird im Folgenden aufgeführt sind:

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

ich nur eine Ontologie OWLGrinder hinzuzufügen. Dieser Fehler gemacht wird bei der Generierung:

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? 

Die Zahl vor „_: bnode“ ändert sich jedes Mal, wenn ich die Schaltfläche „Generieren“ drücken. Durch Löschen der Werte aus der Eigenschaft "Language" tritt ein weiterer Fehler in Bezug auf die nächste Eigenschaft DataType auf. Das bedeutet, dass jede DataType-Eigenschaft, die definiert ist (und einige Werte angegeben haben), in OWLGrinder einen Fehler macht.

Ich fragte mich, ob jemand mich in der Behandlung dieses Fehlers führen könnte.

Antwort

1

Derzeit ROWLEX OwlGrinder erwartet, dass der Bereich eine literale oder eine reguläre Klasse ist. Ich empfehle, eine Wrapper-Klasse 'LanguageList' zu erstellen, die Ihre Enumeration innerhalb als einen Bereich zuweisen. Ich habe das nicht getestet, aber ich erwarte, dass es funktioniert.

+0

Vielen Dank für die Antwort. Das Problem wird gelöst, indem für jeden Datentypbereich eine Klasse erstellt wird. – Ehsan

0

Ich habe Ihre Ontologie in http://www.mygrid.org.uk/OWL/Validator kopiert/eingefügt: es heißt, dass diese Ontologie (zumindest) keine OWL-Lite-Ontologie ist. Es könnte ein Problem für deine Protege-Konfiguration sein?

+0

Hallo Pierre, Vielen Dank für die Beantwortung. Ich habe meine gesamte Ontologie in diese Validator-Site eingefügt und die Site hat sie als OWL-DL verifiziert. Funktioniert OWLGrinder nur mit OWL-Lite? Gibt es ein anderes Werkzeug, um die Ontologie zusammenzusetzen? – Ehsan

2

Ich bin nicht vertraut mit OWLGrinder, aber Sie können versuchen, eine benannte Klasse wie ExpectedLanguages (geben Sie Ihrem anonymen Knoten einen URI) und dann das als Bereich für Ihre language Prädikat. Eine gekürzte (in Turtle-Format):

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

:languages 
    rdfs:range :ExpectedLanguages ; 
. 

Ihre Nutzung des OWL enumerated datatype erfordert, dass Ihr Code/Parser/reasoner OWL-DL auf einem Minimum-kompatibel sein.

Der Grund für die _:bnodeXXX (leere Knoten/anonymen Knoten) hat eine neue ID jedes Mal, weil es leer ist. Um sie jedoch innerhalb eines RDF-Graphen (Modells) im Speicher zu identifizieren, muss für jeden anonymen Knoten eine ID generiert werden, wenn sie geladen wird, sodass während der Analyse des Modells jeder Knoten (anonym oder benannt) eindeutig identifiziert werden kann So können seine eingehenden und ausgehenden Referenzen identifiziert werden.

+0

Vielen Dank Herr Phil M. Es gibt sehr viel für mich, um von Ihrer Antwort zu lernen. Das Problem wird gelöst, indem für jeden Datentypbereich eine Klasse erstellt wird. – Ehsan

1

Intellidimension bietet ein SDK, das OWL-Lite, OWL-Full oder OWL-DL in .NET-Klassen konvertieren kann. Vielleicht sollten Sie sich das ansehen.

Nebenbei bemerkt
Ich glaube, Sie in Ihrer Ontologie die Semantik der Domäne sind verwirrend. Es scheint, dass Sie versuchen zu sagen, dass "Sprache kann nur auf Lehrer, ClassOfCourse, LearningResource, Diskussion, Student existieren", wenn Sie tatsächlich sagen: Wenn Sprache verwendet wird, um eine Instanz zu beschreiben, kann diese Instanz der UnionOf Teacher werden , ClassOfCourse, LearningResource, Diskussion und Student. ".Dies ist eine häufige Fehlinterpretation der Semantik von OWL, da es sich so anfühlt, als ob die Domäne die Verwendung einer Eigenschaft einschränken sollte, obwohl dies in Wirklichkeit nicht die Funktion von OWL (Schema/Validierung) ist. OWL wird nur verwendet, um zu beschreiben, was aus der Verwendung abgeleitet werden sollte, es schreibt keine Verwendung vor.

Domain semantics described in OWL guide.

von unionOf in der Domäne der Spracheigenschaft verwenden Sie sagen, dass „Alles, was die Spracheigenschaft beschrieben wird mit einem Lehrer ist, oder eine ClassOfCourse oder ein LearningResource oder eine Diskussion oder ein Schüler". Ich würde argumentieren, dass dies in der Regel nicht sinnvoll ist.

UnionOf semantic described in OWL guide.

Range ist, dass ähnlich, wenn Sie die Reichweite einer Eigenschaft definieren einen bestimmten Typen zu sein, als es, dass alle Literale abgeleitet werden kann/Ressourcen, die von dieser Eigenschaft bezeichnet werden von der Art sind, definiert mit der Bereichserklärung.

Range described in OWL guide.