Copyright © 2006 by the Submitters. This document is available under the W3C Document License. See the W3C Intellectual Rights Notice and Legal Disclaimers for additional information.
OWL 1.1 extends the W3C OWL Web Ontology Language with a small but useful set of features that have been requested by users, for which effective reasoning algorithms are now available, and that OWL tool developers are willing to support. The new features include extra syntactic sugar, additional property and qualified cardinality constructors, extended datatype support, simple metamodelling, and extended annotations. This document provides a mapping from the functional-style syntax of OWL 1.1 to the RDF exchange syntax for OWL 1.1, and vice versa.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications can be found in the W3C technical reports index at http://www.w3.org/TR/.
By publishing this document, W3C acknowledges that the Submitting Members have made a formal Submission request to W3C for discussion. Publication of this document by W3C indicates no endorsement of its content by W3C, nor that W3C has, is, or will be allocating any resources to the issues addressed by it. This document is not the product of a chartered W3C group, but is published as potential input to the W3C Process. A W3C Team Comment has been published in conjunction with this Member Submission. Publication of acknowledged Member Submissions at the W3C site is one of the benefits of W3C Membership. Please consult the requirements associated with Member Submissions of section 3.3 of the W3C Patent Policy. Please consult the complete list of acknowledged W3C Member Submissions.
Please send feedback to public-owl-dev@w3.org, which has a public archive.
This document provides a mapping from the functional-style syntax of OWL 1.1 as given in [OWL 1.1 Specification] to the RDF exchange syntax for OWL 1.1 and vice versa. Every OWL 1.1 ontology can be serialized in RDF, so every OWL 1.1 ontology in RDF is a valid OWL Full ontology. The RDF syntax of OWL 1.1 is backwards-compatible with OWL DL, this is, every OWL DL ontology in RDF is a valid OWL 1.1 ontology. The semantics OWL 1.1 is defined for ontologies in the functional-style syntax. OWL 1.1 ontologies serialized in RDF/XML are interpreted by translating them into the functional-style syntax and applying the OWL 1.1 semantics [OWL 1.1 Semantics]. The syntax for triples used here is the one used in the RDF Semantics document. Full URIs are abbreviated using namespaces as usual.
The following notation is used throughout this document:
Sequence S | Transformation T(S) | Main Node of T(S) |
---|---|---|
SEQ | rdf:nil | |
SEQ y1 ... yn |
_:x rdf:type rdf:List _:x rdf:first T(y1) _:x rdf:rest T(SEQ y2 ... yn) |
_:x |
As explained in [OWL 1.1 Specification], OWL 1.1 syntax is fully typed -- that is, from the syntax, one can immediately see what is the intendend usage of some symbol. OWL 1.0 syntax is not typed; rather, OWL 1.0 relies on explicit statements that determine the type of each URI. For backwards compatibility, OWL 1.1 uses OWL 1.0 vocabulary whenever there is no ambiguity. This is made precise using the following definition.
The type of a symbol S in an ontology O (in functional-style syntax), written Type(S,O), is defined as the smallest set such that
The above definition refers to a parse tree only for the axioms from O, and not from the axioms from some ontology that O imports. A symbol S in punned in an ontology O if Type(S,O) contains more than one element. Based on that, the following two conditions are defined:
The following shortcuts are used in the translation of OWL 1.1 ontologies into RDF:
Table 2 presents the operator T that translates an OWL 1.1 ontology in functional-style syntax into a set of RDF triples. This table does not consider axioms with annotations.
Functional-Style Syntax S | Transformation T(S) | Main Node of T(S) |
---|---|---|
Ontology(ontologyURI Import(oID1) ... Import(oIDk) Annotation(apID1 ct1) ... Annotation(apIDn ctn) axiom1 ... axiomm) |
ontologyURI rdf:type owl:Ontology ontologyURI owl:imports oIDi 1 ≤ i ≤ k ontologyURI T(apIDi) T(cti) 1 ≤ i ≤ n T(axiomi) 1 ≤ i ≤ m |
ontologyURI |
datatypeURI | datatypeURI rdf:type rdfs:Datatype | datatypeURI |
owlClassURI | owlClassURI rdf:type owl:Class | owlClassURI |
objectPropertyURI | objectPropertyURI rdf:type owl:ObjectProperty | objectPropertyURI |
dataPropertyURI | dataPropertyURI rdf:type owl:DatatypeProperty | dataPropertyURI |
annotationURI | annotationURI rdf:type owl:AnnotationProperty | annotationURI |
individualURI | individualURI | |
constant | constant | |
DataComplementOf(dr) |
_:x rdf:type owl:DataRange _:x owl:complementOf T(dr) |
_:x |
DataOneOf(ct1 ... ctn) |
_:x rdf:type owl:DataRange _:x owl:oneOf T(SEQ ct1 ... ctn) |
_:x |
DatatypeRestriction(dr facet ct) |
_:x rdf:type owl:DataRange _:x owl11:onDataRange T(dr) _:x owl11:facet ct |
_:x |
InverseObjectProperty(op) | :_x owl11:inverseObjectPropertyExpression T(op) | _:x |
ObjectUnionOf(c1 ... cn) |
_:x rdf:type owl:Class _:x owl:unionOf T(SEQ c1 ... cn) |
_:x |
ObjectIntersectionOf(c1 ... cn) |
_:x rdf:type owl:Class _:x owl:intersectionOf T(SEQ c1 ... cn) |
_:x |
ObjectComplementOf(c) |
_:x rdf:type owl:Class _:x owl:complementOf T(c) |
_:x |
ObjectOneOf(iID1 ... iIDn) |
_:x rdf:type owl:Class _:x owl:oneOf T(SEQ iID1 ... iIDn) |
_:x |
ObjectSomeValuesFrom(op c) |
_:x rdf:type RESTRICTION[op] _:x owl:onProperty T(op) _:x owl:someValuesFrom T(c) |
_:x |
ObjectAllValuesFrom(op c) |
_:x rdf:type RESTRICTION[op] _:x owl:onProperty T(op) _:x owl:allValuesFrom T(c) |
_:x |
ObjectExistsSelf(op) |
_:x rdf:type owl11:SelfRestriction _:x owl:onProperty T(op) |
_:x |
ObjectHasValue(op iID) |
_:x rdf:type RESTRICTION[op] _:x owl:onProperty T(op) _:x owl:hasValue T(iID) |
_:x |
ObjectMinCardinality(n op c) |
_:x rdf:type RESTRICTION[op] _:x owl:minCardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty T(op) _:x owl11:onClass T(c) |
_:x |
ObjectMaxCardinality(n op c) |
_:x rdf:type RESTRICTION[op] _:x owl:maxCardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty T(op) _:x owl11:onClass T(c) |
_:x |
ObjectExactCardinality(n op c) |
_:x rdf:type RESTRICTION[op] _:x owl:cardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty T(op) _:x owl11:onClass T(c) |
_:x |
ObjectMinCardinality(n op) |
_:x rdf:type RESTRICTION[op] _:x owl:minCardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty T(op) |
_:x |
ObjectMaxCardinality(n op) |
_:x rdf:type RESTRICTION[op] _:x owl:maxCardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty T(op) |
_:x |
ObjectExactCardinality(n op) |
_:x rdf:type RESTRICTION[op] _:x owl:cardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty T(op) |
_:x |
DataSomeValuesFrom(dp dr) |
_:x rdf:type RESTRICTION[dp] _:x owl:onProperty T(dp) _:x owl:someValuesFrom T(dr) |
_:x |
DataSomeValuesFrom(dp1 ... dpn dr) |
_:x rdf:type RESTRICTION[dp] _:x owl:onProperty T(SEQ dp1 ... dpn) _:x owl:someValuesFrom T(dr) |
_:x |
DataAllValuesFrom(dp dr) |
_:x rdf:type RESTRICTION[dp] _:x owl:onProperty T(dp) _:x owl:allValuesFrom T(dr) |
_:x |
DataAllValuesFrom(dp1 ... dpn dr) |
_:x rdf:type RESTRICTION[dp] _:x owl:onProperty T(SEQ dp1 ... dpn) _:x owl:allValuesFrom T(dr) |
_:x |
DataHasValue(dp ct) |
_:x rdf:type RESTRICTION[dp] _:x owl:onProperty T(dp) _:x owl:hasValue T(ct) |
_:x |
DataMinCardinality(n dp dr) |
_:x rdf:type RESTRICTION[dp] _:x owl:minCardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty T(dp) _:x owl11:onDataRange T(dr) |
_:x |
DataMaxCardinality(n dp dr) |
_:x rdf:type RESTRICTION[dp] _:x owl:maxCardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty T(dp) _:x owl11:onDataRange T(dr) |
_:x |
DataExactCardinality(n dp dr) |
_:x rdf:type RESTRICTION[dp] _:x owl:cardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty T(dp) _:x owl11:onDataRange T(dr) |
_:x |
DataMinCardinality(n op) |
_:x rdf:type RESTRICTION[dp] _:x owl:minCardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty T(op) |
_:x |
DataMaxCardinality(n op) |
_:x rdf:type RESTRICTION[dp] _:x owl:maxCardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty T(op) |
_:x |
DataExactCardinality(n op) |
_:x rdf:type RESTRICTION[dp] _:x owl:cardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty T(op) |
_:x |
EntityAnnotation(Datatype(dID) Annotation(apID1 ct1) ... Annotation(apIDn ctn)) |
dID T(apIDi) T(cti) 1 ≤ i ≤ n | |
EntityAnnotation(OWLClass(cID) Annotation(apID1 ct1) ... Annotation(apIDn ctn)) |
dID T(apIDi) T(cti) 1 ≤ i ≤ n | |
Annotation(apID1 ct1) ... Annotation(apIDn ctn)) | opID T(apIDi) T(cti) 1 ≤ i ≤ n | |
EntityAnnotation(DataProperty(dpID) Annotation(apID1 ct1) ... Annotation(apIDn ctn)) |
dpID T(apIDi) T(cti) 1 ≤ i ≤ n | |
EntityAnnotation(Individual(iID) Annotation(apID1 ct1) ... Annotation(apIDn ctn)) |
dpID T(apIDi) T(cti) 1 ≤ i ≤ n | |
SubClassOf(c1 c2) | T(c1) rdfs:subClassOf T(c2) | |
EquivalentClasses(c1 ... cn) | T(ci) owl:equivalentClass T(ci+1) 1 ≤ i ≤ n-1 | |
DisjointClasses(c1 ... cn) | T(ci) owl:disjointWith T(cj) 1 ≤ i, j ≤ n, i ≠ j | |
DisjointUnion(cID c1 ... cn) | T(cID) owl11:disjointUnionOf T(SEQ c1 ... cn) | |
SubObjectPropertyOf(op1 op2) | T(op1) SUBPROPERTYOF[op1,op2] T(op2) | |
SubObjectPropertyOf( subObjectPropertyChain(op1 ... opn) op) |
T(SEQ op1 ... opn) SUBPROPERTYOF[op1,...,opn,op] T(op) | |
EquivalentObjectProperties(op1 ... opn) | T(opi) EQUIVALENTPROPERTY[op1,...,opn] T(opi+1) 1 ≤ i ≤ n-1 | |
DisjointObjectProperties(op1 ... opn) | T(opi) owl11:disjointObjectProperties T(opj) 1 ≤ i, j ≤ n, i ≠ j | |
ObjectPropertyDomain(op c) | T(op) DOMAIN[op] T(c) | |
ObjectPropertyRange(op c) | T(op) RANGE[op] T(c) | |
InverseObjectProperties(op1 op2) | T(op1) owl:inverseOf T(op2) | |
TransitiveObjectProperty(op) | T(op) rdf:type owl:TransitiveProperty | |
FunctionalObjectProperty(op) | T(op) rdf:type FUNCTIONALPROPERTY[op] | |
InverseFunctionalObjectProperty(op) | T(op) rdf:type owl:InverseFunctionalProperty | |
ReflexiveObjectProperty(op) | T(op) rdf:type owl11:ReflexiveProperty | |
IrreflexiveObjectProperty(op) | T(op) rdf:type owl11:IrreflexiveProperty | |
SymmetricObjectProperty(op) | T(op) rdf:type owl11:SymmetricProperty | |
AntisymmetricObjectProperty(op) | T(op) rdf:type owl11:AntisymmetricProperty | |
SubDataPropertyOf(dp1 dp2) | T(dp1) SUBPROPERTYOF[dp1,dp2] T(dp2) | |
EquivalentDataProperties(dp1 ... dpn) | T(dpi) EQUIVALENTPROPERTY[dp1,...,dpn] T(dpi+1) 1 ≤ i ≤ n-1 | |
DisjointDataProperties(dp1 ... dpn) | T(dpi) owl11:disjointDataProperties T(dpj) 1 ≤ i, j ≤ n, i ≠ j | |
DataPropertyDomain(dp c) | T(dp) DOMAIN[dp] T(c) | |
DataPropertyRange(dp dr) | T(op) RANGE[dp] T(dr) | |
FunctionalDataProperty(dp) | T(dp) rdf:type FUNCTIONALPROPERTY[dp] | |
SameIndividual(iID1 ... iIDn) | T(iIDi) owl:sameAs T(iIDi+1) 1 ≤ i ≤ n-1 | |
DifferentIndividuals(iID1 ... iIDn) | T(iIDi) owl:differentFrom T(iIDj) 1 ≤ i, j ≤ n, i ≠ j | |
ClassAssertion(iID c) | T(iID) rdf:type T(c) | |
ObjectPropertyAssertion(op iID1 iID2) | T(iID1) T(op) T(iID2) | |
NegativeObjectPropertyAssertion(op iID1 iID2) |
_:x rdf:type owl11:NegativeObjectPropertyAssertion _:x rdf:subject T(iID1) _:x rdf:predicate T(op) _:x rdf:object T(iID2) |
|
DataPropertyAssertion(dp iID ct) | T(iID) T(dp) T(ct) | |
NegativeDataPropertyAssertion(op iID ct) |
_:x rdf:type owl11:NegativeDataPropertyAssertion _:x rdf:subject T(iID) _:x rdf:predicate T(dp) _:x rdf:object T(ct) |
|
Declaration(Datatype(dID)) | T(dID) owl11:declaredAs owl:Datatype | |
Declaration(OWLClass(cID)) | T(cID) owl11:declaredAs owl:Class | |
Declaration(ObjectProperty(opID)) | T(opID) owl11:declaredAs owl:ObjectProperty | |
Declaration(DataProperty(dpID)) | T(dpID) owl11:declaredAs owl:DatatypeProperty | |
Declaration(Individual(iID)) | T(iID) owl11:declaredAs owl11:Individual |
Axioms with annotations are reified. If s p o is the RDF serialization of the corresponding axiom without annotations given in Table 2 and the axiom contains annotations Annotation(apIDi cti), 1 ≤ i ≤ n, then, instead of being serialized as s p o, the axiom is serialized as follows:
_:x rdf:type owl11:Axiom
_:x T(apIDi) T(cti) 1 ≤ i ≤ n
_:x rdf:subject s
_:x rdf:predicate p
_:x rdf:object o
Negative object and data property assertions are already reified so only the following triples are added if an assertion contains an annotation:
_:x T(apIDi) T(cti) 1 ≤ i ≤ n
This section specifies how to translate a set of RDF triples G into an OWL 1.1 ontology in functional-style syntax O, if possible. The function Type(x) assigns a set of types to each resource node x in G (in this and all other definitions, the graph G is implicitly understood and is not specified explicitly) and is defined as the smallest set satisfying the conditions from Table 3.
If G contains a triple of this form... | ...then Type(x) must contain this URI. |
---|---|
x rdf:type owl:Class | owl:Class |
x rdf:type owl:Restriction | owl:Class |
x rdf:type owl11:ObjectRestriction | owl:Class |
x rdf:type owl11:DataRestriction | owl:Class |
x rdf:type owl:DataRange | owl:DataRange |
x rdf:type owl:Datatype | owl:DataRange |
x rdf:type owl:ObjectProperty | owl:ObjectProperty |
x rdf:type owl:TransitiveProperty | owl:ObjectProperty |
x rdf:type owl11:SymmetricProperty | owl:ObjectProperty |
x rdf:type owl11:AntisymmetricProperty | owl:ObjectProperty |
x rdf:type owl11:ReflexiveProperty | owl:ObjectProperty |
x rdf:type owl11:IrreflexiveProperty | owl:ObjectProperty |
x rdf:type owl11:FunctionalObjectProperty | owl:ObjectProperty |
x rdf:type owl:DatatypeProperty | owl:DatatypeProperty |
x rdf:type owl:FunctionalDataProperty | owl:DatatypeProperty |
x rdf:type owl:AnnotationProperty | owl:AnnotationProperty |
x rdf:type owl11:Individual | owl11:Individual |
For a resource node x, the functions OnlyOP(x) and OnlyDP(x) are defined as follows:
The following partial functions are defined for each resource node x:
These functions are defined inductively by the following conditions. For the induction to correctly defined, it should be possible to order all resource nodes in G such that there are no cyclic dependencies in the second condition; if this is not possible, then G cannot be converted into an OWL 1.1 ontology.
Pattern | Object Property Expression |
---|---|
_:x owl11:inverseObjectPropertyExpression y | InverseObjectProperty( OP(y) ) |
Pattern | Data Range |
---|---|
_:x rdf:type owl:DataRange _:x owl:complementOf y |
DataComplementOf( DESC(y) ) |
_:x rdf:type owl:DataRange _:x owl:oneOf T(SEQ ct1 ... ctn) |
DataOneOf( ct1 ... ctn ) |
_:x rdf:type owl:DataRange _:x owl11:onDataRange y _:x owl11:facet ct |
DatatypeRestriction( OP(y) facet ct ) |
Pattern | Description |
---|---|
_:x rdf:type owl:Class _:x owl:unionOf T(SEQ y1 ... yn) |
ObjectUnionOf( DESC(y1) ... DESC(yn) ) |
_:x rdf:type owl:Class _:x owl:intersectionOf T(SEQ y1 ... yn) |
ObjectIntersectionOf( DESC(y1) ... DESC(yn) ) |
_:x rdf:type owl:Class _:x owl:complementOf y |
ObjectComplementOf( DESC(y) ) |
_:x rdf:type owl:Class _:x owl:oneOf T(SEQ !y1 ... !yn) |
ObjectOneOf( y1 ... yn ) |
_:x rdf:type owl11:SelfRestriction _:x owl:onProperty y |
ObjectExistsSelf( OP(y) ) |
_:x rdf:type owl11:ObjectRestriction _:x owl:onProperty y _:x owl:hasValue !z |
ObjectHasValue( OP(y) z ) |
_:x rdf:type owl:Restriction _:x owl:onProperty y _:x owl:hasValue !z { OnlyOP(y) = true } |
ObjectHasValue( OP(y) z ) |
_:x rdf:type owl11:ObjectRestriction _:x owl:onProperty y _:x owl:someValuesFrom z |
ObjectSomeValuesFrom( OP(y) DESC(z) ) |
_:x rdf:type owl:Restriction _:x owl:onProperty y _:x owl:someValuesFrom z { OnlyOP(y) = true } |
ObjectSomeValuesFrom( OP(y) DESC(z) ) |
_:x rdf:type owl11:ObjectRestriction _:x owl:onProperty y _:x owl:allValuesFrom z |
ObjectAllValuesFrom( OP(y) DESC(z) ) |
_:x rdf:type owl:Restriction _:x owl:onProperty y _:x owl:allValuesFrom z { OnlyOP(y) = true } |
ObjectAllValuesFrom( OP(y) DESC(z) ) |
_:x rdf:type owl11:ObjectRestriction _:x owl:minCardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty y [ _:x owl11:onClass z ] |
ObjectMinCardinality( n OP(y) [ DESC(z) ] ) |
_:x rdf:type owl:Restriction _:x owl:minCardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty y [ _:x owl11:onClass z ] { OnlyOP(y) = true } |
ObjectMinCardinality( n OP(y) [ DESC(z) ] ) |
_:x rdf:type owl11:ObjectRestriction _:x owl:maxCardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty y [ _:x owl11:onClass z ] |
ObjectMaxCardinality( n OP(y) [ DESC(z) ] ) |
_:x rdf:type owl:Restriction _:x owl:maxCardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty y [ _:x owl11:onClass z ] { OnlyOP(y) = true } |
ObjectMaxCardinality( n OP(y) [ DESC(z) ] ) |
_:x rdf:type owl11:ObjectRestriction _:x owl:cardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty y [ _:x owl11:onClass z ] |
ObjectExactCardinality( n OP(y) [ DESC(z) ] ) |
_:x rdf:type owl:Restriction _:x owl:cardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty y [ _:x owl11:onClass z ] { OnlyOP(y) = true } |
ObjectExactCardinality( n OP(y) [ DESC(z) ] ) |
_:x rdf:type owl11:DataRestriction _:x owl:onProperty y _:x owl:hasValue ct |
DataHasValue( DP(y) ct ) |
_:x rdf:type owl:Restriction _:x owl:onProperty y _:x owl:hasValue ct { OnlyDP(y) = true } |
DataHasValue( DP(y) ct ) |
_:x rdf:type owl11:DataRestriction _:x owl:onProperty y _:x owl:someValuesFrom z |
DataSomeValuesFrom( DP(y) DRANGE(z) ) |
_:x rdf:type owl:Restriction _:x owl:onProperty y _:x owl:someValuesFrom z { OnlyDP(y) = true } |
DataSomeValuesFrom( DP(y) DRANGE(z) ) |
_:x rdf:type owl11:DataRestriction _:x owl:onProperty T(SEQ y1 ... yn) _:x owl:someValuesFrom z |
DataSomeValuesFrom( DP(y1) ... DP(yn) DRANGE(z) ) |
_:x rdf:type owl:Restriction _:x owl:onProperty T(SEQ y1 ... yn) _:x owl:someValuesFrom z { OnlyDP(y) = true } |
DataSomeValuesFrom( DP(y1) ... DP(yn) MDRANGE(z) ) |
_:x rdf:type owl11:DataRestriction _:x owl:onProperty y _:x owl:allValuesFrom z |
DataAllValuesFrom( DP(y) DRANGE(z) ) |
_:x rdf:type owl:Restriction _:x owl:onProperty y _:x owl:allValuesFrom z { OnlyDP(y) = true } |
DataAllValuesFrom( DP(y) DRANGE(z) ) |
_:x rdf:type owl11:DataRestriction _:x owl:onProperty T(SEQ y1 ... yn) _:x owl:allValuesFrom z |
DataAllValuesFrom( DP(y1) ... DP(yn) DRANGE(z) ) |
_:x rdf:type owl:Restriction _:x owl:onProperty T(SEQ y1 ... yn) _:x owl:allValuesFrom z { OnlyDP(y) = true } |
DataAllValuesFrom( DP(y1) ... DP(yn) DRANGE(z) ) |
_:x rdf:type owl11:DataRestriction _:x owl:minCardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty y [ _:x owl11:onDataRange z ] |
DataMinCardinality( n DP(y) [ DRANGE(z) ] ) |
_:x rdf:type owl:Restriction _:x owl:minCardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty y [ _:x owl11:onDataRange z ] { OnlyDP(y) = true } |
DataMinCardinality( n DP(y) [ DRANGE(z) ] ) |
_:x rdf:type owl11:DataRestriction _:x owl:maxCardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty y [ _:x owl11:onDataRange z ] |
DataMaxCardinality( n DP(y) [ DRANGE(z) ] ) |
_:x rdf:type owl:Restriction _:x owl:maxCardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty y [ _:x owl11:onDataRange z ] { OnlyDP(y) = true } |
DataMaxCardinality( n DP(y) [ DRANGE(z) ] ) |
_:x rdf:type owl11:DataRestriction _:x owl:cardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty y [ _:x owl11:onDataRange z ] |
DataExactCardinality( n DP(y) [ DRANGE(z) ] ) |
_:x rdf:type owl:Restriction _:x owl:cardinality "n"^^xsd:nonNegativeInteger _:x owl:onProperty y [ _:x owl11:onDataRange z ] { OnlyDP(y) = true } |
DataExactCardinality( n DP(y) [ DRANGE(z) ] ) |
The ontology O, corresponding to the set of RDF triples G, is the samllest set containing the axioms occurring in the second column of Table 7 for each triple pattern from the first column.
Pattern | Axiom |
---|---|
!x !yi cti for 1 ≤ i ≤ n { owl:Datatype ∈ Type(x) and OnlyAP(yi) = true for 1 ≤ i ≤ } |
EntityAnnotation( Datatype(x) Annotation( y1 ct1 ) ... Annotation( yn ctn ) ) |
!x !yi cti for 1 ≤ i ≤ n { owl:Class ∈ Type(x) and OnlyAP(yi) = true for 1 ≤ i ≤ } |
EntityAnnotation( OWLClass(x) Annotation( y1 ct1 ) ... Annotation( yn ctn ) ) |
!x !yi cti for 1 ≤ i ≤ n { owl:ObjectProperty ∈ Type(x) and OnlyAP(yi) = true for 1 ≤ i ≤ } |
EntityAnnotation( ObjectProperty(x) Annotation(a y1 ct1 ) ... Annotation( yn ctn ) ) |
!x !yi cti for 1 ≤ i ≤ n { owl:DatatypeProperty ∈ Type(x) and OnlyAP(yi) = true for 1 ≤ i ≤ } |
EntityAnnotation( DataProperty(x) Annotation( y1 ct1 ) ... Annotation( yn ctn ) ) |
!x !yi cti for 1 ≤ i ≤ n { owl11:Individual ∈ Type(x) and OnlyAP(yi) = true for 1 ≤ i ≤ } |
EntityAnnotation( Individual(x) Annotation( y1 ct1 ) ... Annotation( yn ctn ) ) |
x rdfs:subClassOf y | SubClassOf( DESC(x) DESC(y) ) |
x owl:equivalentClass y | EquivalentClasses( DESC(x) DESC(y) ) |
x owl:disjointWith y | DisjointClasses( DESC(x) DESC(y) ) |
x owl11:disjointUnionOf T(SEQ y1 ... yn) | DisjointUnion( DESC(x) DESC(y1) ... DESC(yn) ) |
x owl11:subObjectPropertyOf y | SubObjectPropertyOf( OP(x) OP(y) ) |
x owl11:subObjectPropertyOf y { OnlyOP(x) = true and OnlyOP(y) = true } |
SubObjectPropertyOf( OP(x) OP(y) ) |
T(SEQ x1 ... xn) owl11:subObjectPropertyOf y |
SubObjectPropertyOf( subObjectPropertyChain( OP(x1) ... OP(xn) ) OP(y) ) |
T(SEQ x1 ... xn) rdfs:subPropertyOf y { OnlyOP(x1) = true for each 1 ≤ i ≤ n, and OnlyOP(y) = true } |
SubObjectPropertyOf( subObjectPropertyChain( OP(x1) ... OP(xn) ) OP(y) ) |
x owl11:equivalentObjectProperty y | EquivalentObjectProperties( OP(x) OP(y) ) |
x owl:equivalentProperty y { OnlyOP(x) = true and OnlyOP(y) = true } |
EquivalentObjectProperties( OP(x) OP(y) ) |
x owl11:disjointObjectProperties y | DisjointObjectProperties( OP(x) OP(y) ) |
x owl11:objectPropertyDomain y | ObjectPropertyDomain( OP(x) DESC(y) ) |
x rdfs:domain y { OnlyOP(x) = true } |
ObjectPropertyDomain( OP(x) DESC(y) ) |
x owl11:objectPropertyRange y | ObjectPropertyRange( OP(x) DESC(y) ) |
x rdfs:range y { OnlyOP(x) = true } |
ObjectPropertyRange( OP(x) DESC(y) ) |
x owl:inverseOf y | InverseObjectProperties( OP(x) OP(y) ) |
x rdf:type owl:TransitiveProperty | TransitiveObjectProperty( OP(x) ) |
x rdf:type owl11:FunctionalObjectProperty | FunctionalObjectProperty( OP(x) ) |
x rdf:type owl:FunctionalProperty { OnlyOP(x) = true } |
FunctionalObjectProperty( OP(x) ) |
x rdf:type owl:InverseFunctionalProperty | InverseFunctionalObjectProperty( OP(x) ) |
x rdf:type owl11:ReflexiveProperty | ReflexiveObjectProperty( OP(x) ) |
x rdf:type owl11:IrreflexiveProperty | IrreflexiveObjectProperty( OP(x) ) |
x rdf:type owl11:SymmetricProperty | SymmetricObjectProperty( OP(x) ) |
x rdf:type owl11:AntisymmetricProperty | AntisymmetricObjectProperty( OP(x) ) |
x owl11:subDataPropertyOf y | SubDataPropertyOf( DP(x) DP(y) ) |
x rdfs:subPropertyOf y { OnlyDP(x) = true and OnlyDP(y) = true } |
SubDataPropertyOf( DP(x) DP(y) ) |
x owl11:equivalentDataProperty y | EquivalentDataProperties(dp1 ... dpn) |
x owl:equivalentProperty y { OnlyDP(x) = true and OnlyDP(y) = true } |
EquivalentDataProperties(dp1 ... dpn) |
x owl11:disjointDataProperties y | DisjointDataProperties( DP(x) DP(y) ) |
x owl11:dataPropertyDomain y | DataPropertyDomain( DP(x) DESC(y) ) |
x rdfs:domain y { OnlyDP(x) = true } |
DataPropertyDomain( DP(x) DESC(y) ) |
x owl11:dataPropertyRange y | DataPropertyRange( DP(x) DRANGE(y) ) |
x rdfs:range y { OnlyDP(x) = true } |
DataPropertyRange( DP(x) DRANGE(y) ) |
x rdf:type owl11:FunctionalDataPropety | FunctionalDataProperty( DP(x) ) |
x rdf:type owl:FunctionalPropety { OnlyDP(x) = true } |
FunctionalDataProperty( DP(x) ) |
!x owl:sameAs !y | SameIndividual( x y ) |
!x owl:differentFrom !y | DifferentIndividuals( x y ) |
!x rdf:type y { y is not a part of RDF(S) or OWL 1.1 vocabulary } |
ClassAssertion( x DESC(y) ) |
!x !y !z { none of x, y, and z is a part of RDF(S) or OWL 1.1 vocabulary } { owl:AnnotationProperty is not in Type(y) } |
ObjectPropertyAssertion( OP(y) x z ) |
_:x rdf:type owl11:NegativeObjectPropertyAssertion _:x rdf:subject !w _:x rdf:predicate !y _:x rdf:object !z |
NegativeObjectPropertyAssertion( OP(y) w z ) |
!x !y ct { neither x not y is a part of RDF(S) or OWL 1.1 vocabulary } { owl:AnnotationProperty is not in Type(y) } |
DataPropertyAssertion( DP(y) x ct ) |
_:x rdf:type owl11:NegativeDataPropertyAssertion _:x rdf:subject !w _:x rdf:predicate !y _:x rdf:object ct |
NegativeDataPropertyAssertion( DP(y) w ct ) |
!x owl11:declaredAs owl:Datatype | Declaration( Datatype(x) ) |
!x owl11:declaredAs owl:Class | Declaration( OWLClass(x) ) |
!x owl11:declaredAs owl:ObjectProperty | Declaration( ObjectProperty(x) ) |
!x owl11:declaredAs owl:DatatypeProperty | Declaration( DataProperty(x) ) |
!x owl11:declaredAs owl11:Individual | Declaration( Individual(x) ) |
_:x rdf:type owl11:Axiom _:x !yi cti 1 ≤ i ≤ n _:x rdf:subject s _:x rdf:predicate !p _:x rdf:object o |
The result is the axiom obtained by matching the triple pattern s p o. The axiom contains the following annotations: Annotation( y1 ct1 ) ... Annotation( yn ctn ) ) |
If G contains some triple that is not matched by any triple pattern (including the patterns used to define Type(x)), then G cannot be translated into an OWL 1.1 ontology.