Hallo,
ich "bastel" grad eine Ontologie in OWL-DL und hab ein paar Fragen dazu. Ich verwende RDF/XML Syntax und momentan kein Entwicklungswerkzeug (mal abgesehen von einem Editor mit XML highlighting).
1. Frage
Kann man die rdfs:domain und rdfs:range restrictions eines ObjectProperty noch spezifizieren? Wenn mehrere z.B. mehrere rdfs:ranges angegeben werden, wird dies ja als owl:intersectionOf ausgewertet. Beispiel:
Beschreibt das Tripel mit
Ich möchte nun aber erreichen, dass das Objekt aus der Menge "Class2 ODER Class3" besteht. Kann ich also rdfs:range noch wie folgt "verschachteln"?
2. Frage
Kann ich den Datentyp einer Klasse auch direkt festlegen, oder muss ich da immer erst den Umweg über ein owl: DatatypeProperty gehen? Ich würde gern so abkürzen:
Leider ist owl:hasValue meines Wissens nur für owl:Restricton definiert, einer Spezialisierung der owl:Class. Auf der anderen Seite fände ich das schon ziemlich bescheuert, wenn ich für sowas erst ein eigenes owl: DatatypeProperty definieren müsste ...
ich "bastel" grad eine Ontologie in OWL-DL und hab ein paar Fragen dazu. Ich verwende RDF/XML Syntax und momentan kein Entwicklungswerkzeug (mal abgesehen von einem Editor mit XML highlighting).
1. Frage
Kann man die rdfs:domain und rdfs:range restrictions eines ObjectProperty noch spezifizieren? Wenn mehrere z.B. mehrere rdfs:ranges angegeben werden, wird dies ja als owl:intersectionOf ausgewertet. Beispiel:
Code:
<owl:Class rdf:ID="Class1" /> <owl:Class rdf:ID="Class2" /> <owl:Class rdf:ID="Class3" /> <owl:ObjectProperty rdf:ID="oP1"> <rdfs:domain rdf:resource="#Class1" /> <rdfs:range rdf:resource="#Class2" /> <rdfs:range rdf:resource="#Class3" /> </owl:ObjectProperty>
- Subjekt = Class1
- Prädikat = oP1
- Objekt = Schnittmenge aus Class2 und Class3
Ich möchte nun aber erreichen, dass das Objekt aus der Menge "Class2 ODER Class3" besteht. Kann ich also rdfs:range noch wie folgt "verschachteln"?
Code:
<owl:ObjectProperty rdf:ID="oP2"> <rdfs:domain rdf:resource="#Class1" /> <rdfs:range> <owl:Class> <owl:unionOf rdf:parseType="Collection"> <owl:Class rdf:about="#Class2" /> <owl:Class rdf:about="#Class3" /> </owl:unionOf> </owl:Class> </rdfs:range> </owl:ObjectProperty>
Kann ich den Datentyp einer Klasse auch direkt festlegen, oder muss ich da immer erst den Umweg über ein owl: DatatypeProperty gehen? Ich würde gern so abkürzen:
<owl:Class rdf:ID="Class4">
<owl:hasValue rdf:datatype="&xsd;sting" />
<!-- Es sei das XML Entity xsd "http://www.w3.org/2001/XMLSchema#" deklariert. -->
</owl:Class>
<owl:hasValue rdf:datatype="&xsd;sting" />
<!-- Es sei das XML Entity xsd "http://www.w3.org/2001/XMLSchema#" deklariert. -->
</owl:Class>
Code:
<owl:DatatypeProperty rdf:ID="hatDatentypString"> <rdfs:range rdf:resource="&xsd;String" /> </owl:DatatypeProperty> <owl:Class rdf:ID="Class5"> <hatStringDatentyp rdf:datatype="&xsd;string" /> </owl:Class>