Inference Rule Reference
This topic provides reference information for the RDFS-plus and OWL 2 RL rules that inference steps run.
RDFS-Plus Rules
The tables below define the RDFS-plus inference rules.
Semantics of Class Axioms
Rule | Description | IF | THEN |
---|---|---|---|
cax-eqc1 | Two classes are synonymous. | T(?c1, owl:equivalentClass, ?c2)
T(?x, rdf:type, ?c1) |
T(?x, rdf:type, ?c2) |
cax-eqc2 | Two classes are synonymous. | T(?c1, owl:equivalentClass, ?c2) T(?x, rdf:type, ?c2) |
T(?x, rdf:type, ?c1) |
cax-sco | Members of a subclass are also members of the superclass. | T(?c1, rdfs:subClassOf, ?c2) T(?x, rdf:type, ?c1) |
T(?x, rdf:type, ?c2) |
Semantics of Axioms about Properties
Rule | Description | IF | THEN |
---|---|---|---|
prp-dom | Infer the subject's type from the predicate's domain. | T(?p, rdfs:domain, ?c) T(?x, ?p, ?y) |
T(?x, rdf:type, ?c) |
prp-eqp1 | Two properties are synonymous. | T(?p1, owl:equivalentProperty, ?p2) T(?x, ?p1, ?y) |
T(?x, ?p2, ?y) |
prp-eqp2 | Two properties are synonymous. | T(?p1, owl:equivalentProperty, ?p2)
T(?x, ?p2, ?y) |
T(?x, ?p1, ?y) |
prp-fp | If predicate p is a functional property, then a subject can be related to only one specific object by p. | T(?p, rdf:type, owl:FunctionalProperty) T(?x, ?p, ?y1) T(?x, ?p, ?y2) |
T(?y1, owl:sameAs, ?y2) |
prp-ifp | If predicate p is an inverse functional property, then a specific object can be related to only one subject by p. | T(?p, rdf:type, owl:InverseFunctionalProperty) T(?x1, ?p, ?y) T(?x2, ?p, ?y) |
T(?x1, owl:sameAs, ?x2) |
prp-inv1 | Two properties are the inverse of each other. | T(?p1, owl:inverseOf, ?p2)
T(?x, ?p1, ?y) |
T(?y, ?p2, ?x) |
prp-inv2 | Two properties are the inverse of each other. | T(?p1, owl:inverseOf, ?p2) T(?x, ?p2, ?y) |
T(?y, ?p1, ?x) |
prp-rng | Infer the object's type from the predicate's range. | T(?p, rdfs:range, ?c) T(?x, ?p, ?y) |
T(?y, rdf:type, ?c) |
prp-spo1 | Relationships that are described by a subproperty also hold for the superproperty. | T(?p1, rdfs:subPropertyOf, ?p2) T(?x, ?p1, ?y) |
T(?x, ?p2, ?y) |
prp-symp | The inverse is true for a property. | T(?p, rdf:type, owl:SymmetricProperty) T(?x, ?p, ?y) |
T(?y, ?p, ?x) |
prp-trp | Chains of relationships collapse into a single relationship. | T(?p, rdf:type, owl:TransitiveProperty) T(?x, ?p, ?y) T(?y, ?p, ?z) |
T(?x, ?p, ?z) |
Semantics of Schema Vocabulary
Rule | Description | IF | THEN |
---|---|---|---|
scm-cls | Every class is its own subclass and equivalent class, and it is a subclass of owl:Thing. | T(?c, rdf:type, owl:Class) | T(?c, rdfs:subClassOf, ?c) T(?c, owl:equivalentClass, ?c) T(?c, rdfs:subClassOf, owl:Thing) T(owl:Nothing, rdfs:subClassOf, ?c) |
scm-dom1 | A property with domain c also has domain c's superclasses. | T(?p, rdfs:domain, ?c1) T(?c1, rdfs:subClassOf, ?c2) |
T(?p, rdfs:domain, ?c2) |
scm-dom2 | A subproperty inherits the domains of the superproperties. | T(?p2, rdfs:domain, ?c) T(?p1, rdfs:subPropertyOf, ?p2) |
T(?p1, rdfs:domain, ?c) |
scm-eqc1 | Equivalent classes are subclasses of each other. | T(?c1, owl:equivalentClass, ?c2) | T(?c1, rdfs:subClassOf, ?c2) T(?c2, rdfs:subClassOf, ?c1) |
scm-eqc2 | If two classes are subclasses, they are also equivalent classes. | T(?c1, rdfs:subClassOf, ?c2) T(?c2, rdfs:subClassOf, ?c1) |
T(?c1, owl:equivalentClass, ?c2) |
scm-eqp1 | Equivalent properties are subproperties of each other. | T(?p1, owl:equivalentProperty, ?p2) | T(?p1, rdfs:subPropertyOf, ?p2) T(?p2, rdfs:subPropertyOf, ?p1) |
scm-eqp2 | If two properties are subproperties, they are also equivalent properties. | T(?p1, rdfs:subPropertyOf, ?p2) T(?p2, rdfs:subPropertyOf, ?p1) |
T(?p1, owl:equivalentProperty, ?p2) |
scm-rng1 | A property with range c also has range c's superclasses. | T(?p, rdfs:range, ?c1) T(?c1, rdfs:subClassOf, ?c2) |
T(?p, rdfs:range, ?c2) |
scm-rng2 | A subproperty inherits the ranges of its superproperties. | T(?p2, rdfs:range, ?c) T(?p1, rdfs:subPropertyOf, ?p2) |
T(?p1, rdfs:range, ?c) |
scm-sco | owl:subClassOf relationships are transitive | T(?c1, rdfs:subClassOf, ?c2) T(?c2, rdfs:subClassOf, ?c3) |
T(?c1, rdfs:subClassOf, ?c3) |
scm-spo | owl:subPropertyOf relationships are transitive. | T(?p1, rdfs:subPropertyOf, ?p2) T(?p2, rdfs:subPropertyOf, ?p3) |
T(?p1, rdfs:subPropertyOf, ?p3) |
Note: The scm-dp and scm-op schema vocabulary rules are not run. Those rules add significant compute overhead but do not result in meaningful inference results.
OWL 2 RL Rules
The tables below define the OWL 2 RL inference rules.
Semantics of Schema Vocabulary
Rule | Description | IF | THEN |
---|---|---|---|
scm-svf1 | A property restriction c1 is a subclass of c2 if they are both someValuesFrom restrictions on the same property and c1's target class is a subclass of c2's target class. | T(?c1, owl:someValuesFrom, ?y1) T(?c1, owl:onProperty, ?p) T(?c2, owl:someValuesFrom, ?y2) T(?c2, owl:onProperty, ?p) T(?y1, rdfs:subClassOf, ?y2) |
T(?c1, rdfs:subClassOf, ?c2) |
scm-svf2 | A property restriction c1 is a subclass of c2 if they are both someValuesFrom restrictions on the same class where c1's target property is a subproperty of c2's target property. | T(?c1, owl:someValuesFrom, ?y) T(?c1, owl:onProperty, ?p1) T(?c2, owl:someValuesFrom, ?y) T(?c2, owl:onProperty, ?p2) T(?p1, rdfs:subPropertyOf, ?p2) |
T(?c1, rdfs:subClassOf, ?c2) |
scm-int | T(?c, owl:intersectionOf, ?x) LIST[?x, ?c1, ..., ?cn] |
T(?c, rdfs:subClassOf, ?c1) T(?c, rdfs:subClassOf, ?c2) ... T(?c, rdfs:subClassOf, ?cn) |
Semantics of Classes
Rule | Description | IF | THEN |
---|---|---|---|
cls-svf1 | At least one object of a property is a member of the specified class. | T(?x, owl:someValuesFrom, ?y) T(?x, owl:onProperty, ?p) T(?u, ?p, ?v) T(?v, rdf:type, ?y) |
T(?u, rdf:type, ?x) |
cls-int1 | An instance belongs to every one of the specified classes. | T(?c, owl:intersectionOf, ?x)
LIST[?x, ?c1, ..., ?cn] T(?y, rdf:type, ?c1) T(?y, rdf:type, ?c2) ... T(?y, rdf:type, ?cn) |
T(?y, rdf:type, ?c) |