Direct Formulation of OWL DL and OWL Lite Ontologies in RDF Graph Form

A finite RDF graph is an OWL DL or OWL Lite ontology in RDF graph form if and only if it meets the following conditions:

  1. For every node of the graph and every URI reference used as a property or datatype at least one of the following holds:
  2. Every blank node with explicit type rdf:List or [DL only] owl:DataRange is the object of exactly one triple.
  3. Any uriref which is a built-in OWL datatype or in the datatype-only vocabulary or rdfs:Literal is assigned to the category datatypeID. Any uriref which is a built-in OWL class or in the class-only vocabulary is assigned to the category classID. Any uriref which is a built-in OWL annotation property is assigned to the category annotationPropID. Any uriref which is a built-in OWL ontology property is assigned to the category ontologyPropertyID. Any uriref which is in the property-only vocabulary is assigned to one of the categories annotationPropID, dataPropID objectPropID or transitivePropID. Every uriref in the disallowed vocabulary is assigned to itself.
  4. Every other uriref is assigned to one of the following categories:
  5. Every blank node is assigned to one of the following categories:
  6. With the given category assignments every triple in the graph appears in one of the following tables:
  7. Every blank node is either of category unnamedIndividual or meets the structural requirements listed below, in the appropriate table.
  8. A blank node which occurs as the object of more than one triple must be of category restriction or [DL only] description.
  9. Directed cycles of blank nodes may not occur in OWL Lite and in OWL DL must contain at least one triple with property owl:disjointWith or owl:equivalentClass.

Such an RDF graph which does not use any of the cases marked as DL only, is in OWL Lite.

A directed cycle of blank nodes is a sequence of triples t0, t1, ... tn, in which tn = t0, and in which the subjects and objects of all the triples are blank, and in which the object of ti is the subject of ti+1, for i from 0 to n-1.

Main Lite Table

SubjectPredicateObject
annotationPropID or
classID or
dataPropID or
datatypeID or
individualID or
objectPropID or
ontologyID or
transitivePropID or
unnamedIndividual
annotationPropIDannotationPropID or
classID or
dataPropID or
datatypeID or
individualID or
literal or
objectPropID or
ontologyID or
ontologyPropertyID or
transitivePropID or
unnamedIndividual
individualID or
unnamedIndividual
objectPropID or
transitivePropID
individualID or
unnamedIndividual
objectPropID or
transitivePropID
rdf:typeowl:DeprecatedProperty or
owl:ObjectProperty or
owl:SymmetricProperty or
rdf:Property
classIDowl:equivalentClass or
rdfs:subClassOf
classID or
restriction
individualID or
unnamedIndividual
rdf:typeclassID or
restriction
objectPropID or
transitivePropID
rdfs:domain or
rdfs:range
classID
annotationPropID rdf:typeowl:AnnotationProperty
annotationPropIDrdf:typerdf:Property
classIDowl:intersectionOflistOfDescription
classIDowl:intersectionOfrdf:nil
classIDrdf:typeowl:Class
classIDrdf:typeowl:DeprecatedClass
classIDrdf:typerdfs:Class
dataPropIDowl:equivalentPropertydataPropID
dataPropIDrdf:typeowl:DatatypeProperty
dataPropIDrdf:typeowl:DeprecatedProperty
dataPropIDrdf:typeowl:FunctionalProperty
dataPropIDrdf:typerdf:Property
dataPropIDrdfs:domainclassID
dataPropIDrdfs:rangedatatypeID
dataPropIDrdfs:subPropertyOfdataPropID
datatypeIDrdf:typerdfs:Datatype
individualIDdataPropIDliteral
individualIDowl:differentFromindividualID
individualIDowl:sameIndividualAsindividualID
objectPropIDowl:equivalentPropertyobjectPropID
objectPropIDowl:inverseOfobjectPropID
objectPropIDrdf:typeowl:FunctionalProperty
objectPropIDrdf:typeowl:InverseFunctionalProperty
objectPropIDrdfs:subPropertyOfobjectPropID
objectPropIDrdfs:subPropertyOftransitivePropID
ontologyIDontologyPropertyIDontologyID
ontologyIDrdf:typeowl:Ontology
restrictionrdf:typerdfs:Class
transitivePropIDowl:equivalentPropertytransitivePropID
transitivePropIDowl:inverseOftransitivePropID
transitivePropIDrdf:typeowl:TransitiveProperty
transitivePropIDrdfs:subPropertyOftransitivePropID
unnamedIndividualdataPropIDliteral

Main DL Table

SubjectPredicateObject
description or
restriction
owl:disjointWith or
owl:equivalentClass or
rdfs:subClassOf
classID or
description or
restriction
objectPropID or
transitivePropID
rdfs:domain or
rdfs:range
description or
restriction
classIDowl:complementOf or
owl:disjointWith
classID or
description or
restriction
classIDowl:equivalentClassdescription
classIDowl:oneOflistOfIndividualID
classIDowl:oneOfrdf:nil
classIDowl:unionOflistOfDescription
classIDowl:unionOfrdf:nil
classIDrdfs:subClassOfdescription
dataPropIDrdfs:domaindescription
dataPropIDrdfs:domainrestriction
dataPropIDrdfs:rangeunnamedDataRange
descriptionrdf:typerdfs:Class
individualIDrdf:typedescription
unnamedDataRangerdf:typerdfs:Class
unnamedIndividualrdf:typedescription

Rules for Blank Nodes of Category allDifferent

Every node of category allDifferent must fit the following pattern. For each such node, exactly one instance of each triple in the pattern must be present in the graph. There are no other triples in the graph in which such nodes are subjects.

SubjectPredicateObject
allDifferentrdf:typeowl:AllDifferent
allDifferentowl:distinctMemberslistOfIndividualID or
rdf:nil

Rules for Blank Nodes of Category listOfDescription

Every node of category listOfDescription must fit the following pattern. For each such node, exactly one instance of each triple in the pattern must be present in the graph. There are no other triples in the graph in which such nodes are subjects.

SubjectPredicateObject
listOfDescriptionrdf:typerdf:List
listOfDescriptionrdf:firstclassID or
restriction or
description [DL only]
listOfDescriptionrdf:restlistOfDescription or
rdf:nil

Rules for Blank Nodes of Category listOfIndividualID

Every node of category listOfIndividualID must fit the following pattern. For each such node, exactly one instance of each triple in the pattern must be present in the graph. There are no other triples in the graph in which such nodes are subjects.

SubjectPredicateObject
listOfIndividualIDrdf:typerdf:List
listOfIndividualIDrdf:firstindividualID
listOfIndividualIDrdf:restlistOfIndividualID or
rdf:nil

Rules for Blank Nodes of Category restriction

Every node of category restriction must fit one of these patterns. For each such node, exactly one instance of each triple in the pattern must be present in the graph. There may be additional triples in which such nodes are subjects as listed in the main triple tables.

SubjectPredicateObject
Either:
restrictionrdf:typeowl:Restriction
restrictionowl:allValuesFrom or
owl:someValuesFrom
classID or
description [DL only] or
restriction [DL only]
restrictionowl:onPropertyobjectPropID or
transitivePropID
Or:
restrictionrdf:typeowl:Restriction
restrictionowl:allValuesFrom or
owl:someValuesFrom
datatypeID
restrictionowl:onPropertydataPropID
Or:
restrictionrdf:typeowl:Restriction
restrictionowl:maxCardinality or
owl:minCardinality or
owl:cardinality
0^^ (xsd:nonNegativeInteger) or
1^^ (xsd:nonNegativeInteger) or
nonNegativeInteger [DL only]
restrictionowl:onPropertyobjectPropID or
dataPropID
Or: [DL only]
restrictionrdf:typeowl:Restriction
restrictionowl:hasValueindividualID
restrictionowl:onPropertyobjectPropID or
transitivePropID
Or: [DL only]
restrictionrdf:typeowl:Restriction
restrictionowl:hasValueliteral
restrictionowl:onPropertydataPropID

[DL only] Rules for Blank Nodes of Category description

Every node of category description must fit one of these patterns. For each such node, exactly one instance of each triple in the pattern must be present in the graph. There may be additional triples in which such nodes are subjects as listed in the main triple tables.

SubjectPredicateObject
Either:
descriptionrdf:typeowl:Class
descriptionowl:complementOfclassID or
description or
restriction
Or:
descriptionrdf:typeowl:Class
descriptionowl:intersectionOf or
owl:unionOf
listOfDescription or
rdf:nil
Or:
descriptionrdf:typeowl:Class
descriptionowl:oneOflistOfIndividualID or
rdf:nil

[DL only] Rules for Blank Nodes of Category listOfDataLiteral

Every node of category listOfDataLiteral must fit the following pattern. For each such node, exactly one instance of each triple in the pattern must be present in the graph. There are no other triples in the graph in which such nodes are subjects.

SubjectPredicateObject
listOfDataLiteralrdf:typerdf:List
listOfDataLiteralrdf:firstliteral
listOfDataLiteralrdf:restlistOfDataLiteral or
rdf:nil

[DL only] Rules for Blank Nodes of Category unnamedDataRange

Every node of category unnamedDataRange must fit the following pattern. For each such node, exactly one instance of each triple in the pattern must be present in the graph. There may be additional triples in which such nodes are subjects as listed in the main triple tables.

SubjectPredicateObject
unnamedDataRangerdf:typeowl:DataRange
unnamedDataRangeowl:oneOflistOfDataLiteral or
rdf:nil