13.  OWL Axioms and Entailment Rules

13.1  OWL Axioms

The OWL vocabulary is defined in the OWL definition file. The contents are listed in the table below. In the table, the namespace ‘owl’ at QNames is omitted. ‘Resource’ stands for rdfs:Resource, and ‘Property’ stands for rdf:Property. ‘type’ stands for rdf:type. ‘subPropertyOf’ stands for rdfs:subPropertyOf. ‘domain’ and ‘range’ stand for rdfs:domain and rdfs:range. ‘List’ stands for rdf:List.

Table 13.1  The OWL Axioms
OWL Axioms in http://www.w3.org/2002/07/owl.rdf
(rdfs:Class Class (subClassOf rdfs:Class))
(Class Thing (unionOf Nothing (complementOf Nothing)))
(Class Nothing (complementOf Thing))
(Property equivalentClass (subPropertyOf subClassOf) (domain Class) (range Class))
(Property disjointWith (domain Class) (range Class))
(Property equivalentProperty (subPropertyOf subPropertyOf))
(Property sameAs (domain Thing) (range Thing))
(Property differentFrom (domain Thing) (range Thing))
(rdfs:Class AllDifferent)
(Property distinctMembers (domain AllDifferent) (range List))
(Property unionOf (domain Class) (range List))
(Property intersectionOf (domain Class) (range List))
(Property complementOf (domain Class) (range Class))
(Property oneOf (domain Class) (range List))
(rdfs:Class Restriction (subClassOf Class))
(Property onProperty (domain Restriction) (range Property))
(Property allValuesFrom (domain Restriction) (range Class))
(Property hasValue (domain Restriction))
(Property someValuesFrom (domain Restriction) (range Class))
(Property minCardinality (domain Restriction) (range xsd:nonNegativeInteger))
(Property maxCardinality (domain Restriction) (range xsd:nonNegativeInteger))
(Property cardinality (domain Restriction) (range xsd:nonNegativeInteger))
(rdfs:Class ObjectProperty (subClassOf Property))
(rdfs:Class DatatypeProperty (subClassOf Property))
(Property inverseOf (domain ObjectProperty) (range ObjectProperty))
(rdfs:Class TransitiveProperty (subClassOf ObjectProperty))
(rdfs:Class SymmetricProperty (subClassOf ObjectProperty))
(rdfs:Class FunctionalProperty (subClassOf Property))
(rdfs:Class InverseFunctionalProperty (subClassOf ObjectProperty))
(rdfs:Class AnnotationProperty (subClassOf Property))
(AnnotationProperty rdfs:label)
(AnnotationProperty rdfs:comment)
(AnnotationProperty rdfs:seeAlso)
(AnnotationProperty rdfs:isDefinedBy)
(rdfs:Class Ontology)
(rdfs:Class OntologyProperty (subClassOf Property))
(Property imports (type OntologyProperty) (domain Ontology) (range Ontology))
(Property versionInfo (type AnnotationProperty))
(Property priorVersion (type OntologyProperty) (domain Ontology) (range Ontology))
(Property backwardCompatibleWith
             (type OntologyProperty) (domain Ontology) (range Ontology))
(Property incompatibleWith (type OntologyProperty) (domain Ontology) (range Ontology))
(rdfs:Class DeprecatedClass (subClassOf rdfs:Class))
(rdfs:Class DeprecatedProperty (subClassOf Property))
(rdfs:Class DataRange)

However, this is not enough to reason OWL semantics. We have added two axioms to the above definitions in SWCLOS, as follows.

Table 13.2  Additional Axioms
name Additional OWL Axioms
axiom1 (Class Thing (subClassOf Resource))
axiom2 (rdfs:Class Class (subClassOf Thing))

Axiom1 enables owl:Thing to inherit slot definitions from rdfs:Resource instances, i.e., rdfs:label, rdfs:comment, etc. Axiom2 is crucial to treat OWL classes as individual. Namely, it enables OWL classes to have slots for instances of owl:Thing, i.e., owl:sameAs, owl:differentFrom, etc.

13.2  OWL Semantics and Entailment Rules

To realize OWL semantics as an extension of RDFS, we developed the OWL module that is loaded after RDFS modules in SWCLOS. The OWL module reads up the the OWL definition file, and defines many functions that implement the OWL entailment rules on top of RDFS/RDF semantics. In this section, such entailment rules are explained.

The complete set of entailment rules in OWL is unknown. Table 13.3 shows entailment rules in OWL which is disclosed by ter Horst [Horst]. These rules are realized in OWL module. In addition, we have implemented some extra entailment rules shown in Table 13.4

Table 13.3  Entailment Rules by ter Horst [Horst]
name If Then note
rdfp1 p type FunctionalProperty .
u p v .
u p w .
v sameAs w . functional property
rdfp2 p type InverseFunctionalProperty .
u p w .
v p w .
u sameAs v . inverse functional property
rdfp3 p type SymmetricProperty .
v p w .
w p v . symmetric property
rdfp4 p type TransitiveProperty .
u p v .
v p w .
u p w . transitive property
rdfp5a v p w . v sameAs v . self-evident sameAs
rdfp5b v p w . w sameAs w .
rdfp6 v sameAs w . w sameAs v . reflexive sameAs
rdfp7 u sameAs v .
v sameAs w .
u sameAs w . transitive sameAs
rdfp8ax p inverseOf q .
v p w .
w q v . inverse of property
rdfp8bx p inverseOf q .
v q w .
w p v .
rdfp9 v type Class .
v sameAs w .
v subClassOf w . subsumption on
same classes
rdfp10 p type Property .
p sameAs q .
p subPropertyOf q . subsumption
on same properties
rdfp11 u p v .
u sameAs u' .
v sameAs v' .
u' p v' . property extension
through sameAs
rdfp12a v equivalentClass w . v subClassOf w . subsumption on
equivalentClass
rdfp12b v equivalentClass w . w subClassOf v .
rdfp12c v subClassOf w .
w subClassOf v .
v equivalentClass w . equivalency from
subsumption classes
rdfp13a v equivalentPropety w . v subPropertyOf w . subsumption on
equivalent property
rdfp13b v equivalentPropety w . w subPropertyOf v .
rdfp13c v subPropertyOf w .
w subPropertyOf v .
v equivalentProperty w . equivalency from
subsumption properties
rdfp14a v hasValue w .
v onProperty p .
u p w .
u type v . filler restriction entailment
rdfp14bx v hasValue w .
v onProperty p .
u type v .
u p w . hasValue definition
rdfp15 v someValuesFrom w .
v onProperty p .
u p x .
x type w .
u type v . full existential
restriction entailment
rdfp16 v allValuesFrom w .
v onProperty p .
u type v .
u p x .
x type w . allvaluesfrom definition

The rule1a and rule1b is an alternative of rdfs4a and rdfs4b in the W3C RDF Semantics document. The other rules are explained in the next succeeding sub-subsections.

Table 13.4  Additional Entailment Rules
name If Then note
rule1a v p w . v type Thing . default top in OWL
rule1b v p w . w type Thing .
rule2a u intersectionOf { v ... } . v type Class . default metaclass for
intersection and union list
rule2b u unionOf { v ... } . v type Class .
rule3 u distinctMembers {v ... } . v type Thing . default class for distincts
rule4 u disjointWith v .
u' subClassOf u .
v' subClassOf v .
u' disjointWith v' . permeation of disjointness
rule5 u complementOf v . v complementOf u . reflexive complementOf .
rule6 u complementOf v . u disjointWith v . disjoint complementOf .
rule7 u oneOf { x ... } . x type u . oneOf entailment
rule8 p type SymmetricProperty .
p domain C .
p range D .
C equivalentClass D . domain/range equivalency
by SymmetricProperty
rule9 p equivalentProperty q . q equivalentProperty p . reflexive equivalentProperty
rule10 p equivalentProperty q .
q equivalentProperty r .
p equivalentProperty r . transitive equivalentProperty
rule11a p equivalentProperty q .
p domain u .
q domain u . domain by equivalentProperty
rule11b p equivalentProperty q .
p range u .
q range u . range by equivalentProperty
rule12a p inverseOf q .
p domain u .
q domain u . domain by inverseOf
rule12b p inverseOf q .
p range u .
q range u . range by inverseOf
rule13 x differentFrom y . y differentFrom x . reflexive differentFrom
rule14 u intersectionOf { v w } .
x type v .
x type w .
x type u . intersection entailment

In the case of no interpretation for a set of input assertions, it is called clash or unsatisfiable. We summarized unsatisfiability conditions in Table 13.5.

Table 13.5  Unsatisfiability Rules
name Unsatisfiable Conditions
oneof-condition-unsatisfiable u oneOf { xi ... } .
y type u .
y differentFrom xi . ( 1 ≤ in )
sameas-condition-unsatisfiable or
differentfrom-condition-unsatisfiable
x sameAs y .
x differentFrom y .
disjointwith-condition-unsatisfiable or
equivalentclass-condition-unsatisfiable
u disjointWith v .
u equivalentOf v .
disjoint-instances-condition-unsatisfiable u disjointWith v .
x type u .
x type v .
domain-condition-unsatisfiable u disjointWith v .
x domain u .
x domain v .
range-condition-unsatisfiable u disjointWith v .
x range u .
x range v .
complementof-condition-unsatiafiable u complementOf v .
x type u .
x type v .

13.2.1  Intersection of Concepts (owl:intersectionOf)

The intersection of concepts is represented by owl:intersectionOf property in OWL. In Wine Ontology, DryRedWine is defined as an intersection of DryWine and RedWine. Figure 13.1 shows the concept intersection of DryWine and RedWine. The class DryWine stands for a set of DryWine individuals and the class RedWine stands for a set of RedWine individuals. So, the class DryRedWine represents an intersection of the two sets of individuals. Therefore, the class DryRedWine turns a subclass of DryWine class and RedWine class.

gx-user(11): (get-form vin:DryRedWine)
(owl:Class vin:DryRedWine (owl:intersectionOf vin:DryWine vin:RedWine))
gx-user(12): (subtypep vin:DryRedWine vin:DryWine)
t
t
gx-user(13): (subtypep vin:DryRedWine vin:RedWine)
t
t

Intersection of DryWine and RedWine

Figure 13.1 Intersection of DryWine and RedWine

In SWCLOS, the values of owl:intersectionOf slot are automatically placed into the class-direct-superclasses list of subjective class metaobject. In the above example, vin:DryWine and vin:RedWine are placed into the class-direct-superclasses list of vin:DryRedWine.

The range of owl:intersectionOf is defined as rdf:List in the axioms. Then, we added rule2a for the member element of collection on owl:intersectionOf.

As described at Section 12.5, owl:intersectionOf is complete in definition. Therefore, if something is known as an individual of DryWine and RedWine, then it is concluded that the thing is an individual of DryRedWine. See rule14 and the following demonstration.

gx(14): (defIndividual MyWine (rdf:type vin:DryWine))
#<vin:DryWine MyWine>
gx(15): (defIndividual MyWine (rdf:type vin:RedWine))
#<vin:DryRedWine MyWine>

13.2.2  Union of Concepts (owl:unionOf)

Contrary to the intersection, the union of concepts makes subclasses of union members. See Fig. 13.2, where Fruit is defined as union of SweetFruit and NonSweetFruit in Food Ontology. Note that if food:SweetFruit is disjoint with food:NonSweetFruit, there is no overlapping portion. So, Fig. 13.2 should be redrawn.

< gx-user(15): (get-form food:Fruit)
(owl:Class food:Fruit (owl:unionOf food:SweetFruit food:NonSweetFruit))
gx-user(16): (subtypep food:SweetFruit food:Fruit)
t
t
gx-user(17): (subtypep food:NonSweetFruit food:Fruit)
t
t

Union of SweetFruit and NonSweetFruit

Figure 13.2 Union of SweetFruit and NonSweetFruit
There is no overlap exactly, when SweetFruit and NonSweetFruit are disjoint.

In SWCLOS, the subjective class metaobject is automatically placed into the class-direct-superclasses of each class in the values of property owl:unionOf. In the example above, food:Fruit is placed into the class-direct-superclasses list of food:SweetFruit and food:NonSweetFruit.

As well as owl:intersectionOf, we added rule2b for the element of the collection on owl:unionOf.

13.2.3  Negation of Concept(owl:complementOf)

The negation of a concept stands for all individuals in the universe with the exception of the individuals of the concept. The owl:complementOf is a reflexive relation. Namely, if a concept C is a negation of concept D, then D is also a negation of C. See rule5 in Table 13.4. In SWCLOS, the inverse relation of negation is also registered into the negated class object.

Furthermore, a concept is disjoint with its negation. See rule6. In SWCLOS, the negation results to register the disjoint relation each other in both concept objects.

gx-user(4): (get-form food:NonConsumableThing)
(owl:Class food:NonConsumableThing (owl:complementOf food:ConsumableThing))
gx-user(5): (defConcept food::PlasticSample
                        (rdfs:subClassOf food:NonConsumableThing))
#<rdfs:Class food:PlasticSample>
gx-user(6): (defIndividual food::PlasticChineseNoodle
                           (rdf:type food::PlasticSample))
#<food:PlasticSample food:PlasticChineseNoodle>
gx-user(7): (typep food::PlasticChineseNoodle food:ConsumableThing)
nil
t
gx-user(8): (typep food::PlasticChineseNoodle food:EdibleThing)
nil
t
gx-user(9): (disjoint-p food::PlasticSample food:EdibleThing)
t
t

13.2.4  Instance Enumeration for Concept(owl:oneOf)

Using owl:oneOf, a concept may be defined as the enumeration of individuals. For example, WineColor is defined as a subclass of WineDescriptor and a concept whose individuals are only Red, White, and Rose. See rule7 in Table 13.4.

gx-user(2): (defpackage vin)
#<The vin package>
gx-user(3): (defConcept vin::WineColor
                        (rdfs:subClassOf vin::WineDescriptor)
                        (owl:oneOf vin::Red vin::Rose vin::White))
Warning: Range entailX1 by rdfs:subClassOf:
         vin::WineDescriptor rdf:type rdfs:Class.
#<rdfs:Class vin:WineColor>
gx-user(4): vin:Red
#<vin:WineColor vin:Red>
gx-user(5): vin:Rose
#<vin:WineColor vin:Rose>
gx-user(6): vin:White
#<vin:WineColor vin:White>
gx-user(7): (typep vin:Red vin:WineDescriptor)
t
t

The definition of owl:oneOf is also the complete definition. So, typically the subject of owl:oneOf should be defined just once and not be multiply defined. However, in this version the multiple definition of owl:oneOf can be accepted with warning. See the followings.

gx-user(8): (defConcept vin:WineColor
                        (owl:oneOf vin:Red vin:Rose Green))
Warning: (#<vin:WineColor Green>) is added to owl:oneOf value
         (#<vin:WineColor vin:Red> #<vin:WineColor vin:Rose>
          #<vin:WineColor vin:White>) of #<rdfs:Class vin:WineColor>.
#<rdfs:Class vin:WineColor>

If the same members are enumerated in multiple definitions, it is accepted and does not cause any effect. If the disjoint members are enumerated, SWCLOS signals an alarm. See oneof-condition-unsatisfiable in Table 13.5.

13.2.5  Functional Property(owl:FunctionalProperty)

An instance of owl:FunctionalProperty entails that objects in triples are the same, if the subjects in triples are the same. See the rule rdfp1 in Table 13.3 that is by ter Horst.

gx-user(5): (defProperty hasband (rdf:type owl:ObjectProperty)
                         (rdf:type owl:FunctionalProperty)
                         (rdfs:domain Woman)
                         (rdfs:range Man))
Warning: Range entailX3 by rdfs:domain: Woman rdf:type rdfs:Class.
Warning: Range entailX3 by rdfs:range: Man rdf:type rdfs:Class.
Warning: Multiple classing with
         (#<rdfs:Class owl:ObjectProperty>
          #<rdfs:Class owl:FunctionalProperty>) for
         #<owl:ObjectProperty hasband>
#<owl:ObjectProperty.0 hasband>
gx-user(6): (defIndividual MarieTherese (hasband LouisXIVdeFrance))
Warning: Range entailX3 by hasband: LouisXIVdeFrance rdf:type Man.
#<Woman MarieTherese>
gx-user(7): (defIndividual MarieTherese (hasband Roi-Soleil))
Warning: Range entailX3 by hasband: Roi-Soleil rdf:type Man.
#<Woman MarieTherese>
gx-user(8): (-> MarieTherese hasband)
(#<Man Roi-Soleil> #<Man LouisXIVdeFrance>)
gx-user(9): (owl-same-p LouisXIVdeFrance Roi-Soleil)
t

In SWCLOS, the inverse of owl:FunctionalProperty is registered to the object, and the predicate owl-same-p and equivalent-property-p use the registered information.

13.2.6  Inverse Functional Property(owl:InverseFunctionalProperty)

An instance of owl:InverseFunctionalProperty entails that subjects in triples are the same, if the objects in triples are the same. See the rule rdfp2 in Table 13.3.

As well as owl:FunctionalProperty, the inverse of owl:InverseFunctionalProperty is registered to the object, and the predicate owl-same-p and equivalent-property-p use the registered information.

gx-user(2): (defProperty hasWife (rdf:type owl:ObjectProperty)
                         (rdf:type owl:InverseFunctionalProperty)
                         (rdfs:domain Man)
                         (rdfs:range Woman))
Warning: Range entailX3 by rdfs:domain: Man rdf:type rdfs:Class.
Warning: Range entailX3 by rdfs:range: Woman rdf:type rdfs:Class.
#<owl:InverseFunctionalProperty hasWife>
gx-user(3): (defIndividual Bill (hasWife Hillary))
Warning: Range entailX3 by hasWife: Hillary rdf:type Woman.
#<Man Bill>
gx-user(4): (defIndividual 42ndPresident (hasWife Hillary))
#<Man 42ndPresident>
gx-user(5): (owl-same-p Bill 42ndPresident)
t

13.2.7  Symmetric Property(owl:SymmetricProperty)

An instance of owl:SymmetricProperty entails the reflexive relation of subject and object in triple. See the rule rdfp3 in Table 13.3.

In SWCLOS, the reflexive relation of symmetric property is automatically added into memory. Namely, the subject in triple is added to the role value of the object's predicate.

gx-user(2): (defpackage vin)
#<The vin package>
gx-user(3): (defProperty vin::adjacentRegion (rdf:type owl:ObjectProperty)
                         (rdf:type owl:SymmetricProperty)
                         (rdfs:domain vin::Region)
                         (rdfs:range vin::Region))
Warning: Range entailX3 by rdfs:domain: vin::Region rdf:type rdfs:Class.
Warning: #<rdfs:Class vin:Region> rdf:type owl:Class
         by owl:SymmetricProperty entailment.
#<owl:SymmetricProperty vin:adjacentRegion>
gx-user(4): (defIndividual vin::MendocinRegion (rdf:type vin:Region)
                           (vin::locatedIn vin::CaliforniaRegion)
                           (vin:adjacentRegion vin::SonomaRegion))
Warning: Entail by rdf1: vin::locatedIn rdf:type rdf:Property.
Warning: Range entailX3 by vin:adjacentRegion:
         vin::SonomaRegion rdf:type vin:Region.
#<vin:Region vin:MendocinRegion>
gx-user(5): (slot-value vin:MendocinRegion 'vin:adjacentRegion)
#<vin:Region vin:SonomaRegion>
gx-user(6): (slot-value vin:SonomaRegion 'vin:adjacentRegion)
#<vin:Region vin:MendocinRegion>

13.2.8  Transitive Property(owl:TransitiveProperty)

An instance of owl:TransitiveProperty entails the transitivity upon the property. For example, vin:SonomaRegion is located in vin:CaliforniaRegion and vin:CaliforniaRegion is located in vin:USRegion, then vin:SonomaRegion is located in vin:USRegion. See the rule rdfp4 in Table 13.3.

In SWCLOS, the transitivity is unified to the subsumption notion. The predicate subsumed-p is also effect to the transitivity relation. See the following demonstration, after loading Wine Ontology.

gx-user(7): (defProperty vin:locatedIn (rdf:type owl:ObjectProperty)
                         (rdf:type owl:TransitiveProperty)
                         (rdfs:domain owl:Thing)
                         (rdfs:range vin:Region))
#<owl:TransitiveProperty vin:locatedIn>
gx-user(8): (defIndividual vin::SantaCruzMountainsRegion
                           (vin:locatedIn vin::CaliforniaRegion))
Warning: Range entailX4 by vin:locatedIn:
         #<|rdfs:Resource| vin:CaliforniaRegion> rdf:type vin:Region.
#<owl:Thing vin:SantaCruzMountainsRegion>
gx-user(9): (defIndividual vin:CaliforniaRegion (rdf:type vin:Region)
                           (vin:locatedIn vin::USRegion))
Warning: Range entailX3 by vin:locatedIn: vin::USRegion rdf:type vin:Region.
#<vin:Region vin:CaliforniaRegion>
gx-user(10): (subsumed-p vin::SantaCruzMountainsRegion vin:USRegion)
t
t

13.2.9  Equivalency for Individuals(owl:sameAs)

The property owl:sameAs is used to represent the equivalency of two individuals. In OWL Full, the class can be also captured as individual. Therefore, it is applicable to classes. See the rule rdfp5, rdfp6, rdfp7, and rdfp9, rdfp10, rdfp11 in Table 13.3. In Semantic Webs, we do not stand on Unique Name Assumption, which is usually taken in computer languages. Namely, two different URIs may denote the same thing or may not. The statement of owl:sameAs means the two URIs can be captured as the same thing.

The relation of owl:sameAs is reflexive and transitive. It implies that owl:sameAs makes groups among related entities. In SWCLOS, all members of a group are registered to each member object. The predicate owl-same-p uses this registered information to check whether two objects are the same or not. See the following demonstration, after loading Wine Ontology.

gx-user(4): (owl-same-p food:Red vin:Red)
t
gx-user(5): (owl-same-p vin:Red food:Red)
t

13.2.10  Difference for Individuals(owl:differentFrom)

The property owl:differentFrom is used to denote the difference of two individuals. In OWL Full, the class is also captured as individual. Therefore, it is applicable to classes. In non-Unique Name Assumption of Semantic Webs, two different URIs may be the same through owl:sameAs statements. Contrary, owl:differentFrom states that two URIs are different and cannot be captured as the same thing.

The relation of owl:differentFrom is pairwise and reflexive. See rule7 in Table 13.4. In SWCLOS, each object has the information of difference on the object. The owl:differentFrom property and owl:AllDifferent statements create this information. The predicate owl-different-p uses this information. See the following demonstration for Wine Ontology.

gx-user(17): (owl-different-p vin:Dry vin:OffDry)
t
t
gx-user(18): (owl-different-p vin:OffDry vin:Dry)
t
t
gx-user(19): (owl-different-p vin:DAnjou vin:Cotturi)
t
t
gx-user(20): (owl-different-p vin:Cotturi vin:DAnjou)
t
t

13.2.11  Inverse Relation of Property(owl:inverseOf)

owl:inverseOf takes two object properties as subject and object in triple, and defines the two is in the inverse relation. See rdfp8ax and rdfp8bx in Table 13.3.

SWCLOS provides two slot value accessors, '->' and get-value that facilitate getting slot value(s) through owl:inverseOf functionality.

gx-user(8): (defProperty hasChild (rdf:type owl:ObjectProperty)
                         (owl:inverseOf hasParent))
Warning: Range entailX3 by owl:inverseOf:
         hasParent rdf:type owl:ObjectProperty.
#<owl:ObjectProperty hasChild>
gx-user(9): (defIndividual LeopoldMozart (rdf:type Musician)
                           (hasChild AmadeusMozart))
Warning: Range entail by rdf:type: Musician rdf:type rdfs:Class.
#<Musician LeopoldMozart>
gx-user(10): (-> AmadeusMozart hasParent)
#<Musician LeopoldMozart>

13.2.12  Equivalency for Classes(owl:equivalentClass)

The property owl:equivalentClass is used to represent the equivalency of two classes as class. Namely, the equivalent classes share exactly the same set of individuals. See the rule rdfp12.

gx-user(14): (get-form food:Wine)
(owl:Class food:Wine (owl:equivalentClass vin:Wine))
gx-user(15): (owl-equivalent-p food:Wine vin:Wine)
t

13.2.13  Difference for Classes(owl:disjointWith)

The property owl:disjointWith is used to represent the difference of two classes as class. Namely two classes never share any individual as a member of class. If two classes are disjoint, then each subclasses of the classes also disjoint. See rule7 in Table 13.4.

gx-user(18): (get-form food:NonSweetFruit)
(owl:Class food:NonSweetFruit
  (rdf:about
    <http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#NonSweetFruit>)
  (rdfs:subClassOf food:EdibleThing) (owl:disjointWith food:SweetFruit))
gx-user(19): (disjoint-p food:SweetFruit food:NonSweetFruit)
t
t

13.2.14  Value Restriction(owl:allValuesFrom)

The value restriction plays a role of constraint for the instance slot value. See rdfp16 in Table 13.3. SWCLOS entails that a filler that is restricted by owl:allValuesFrom should be an instance of the constraint.

gx-user(2): (get-form vin:Wine)
(owl:Class vin:Wine
  (rdf:about
    <http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#Wine>)
  (rdfs:label (:en "wine") (:fr "vin"))
  (rdfs:subClassOf food:PotableLiquid
    (owl:Restriction (owl:onProperty vin:hasMaker)
      (owl:cardinality "1"^^xsd:nonNegativeInteger))
  (owl:Restriction (owl:onProperty vin:hasMaker)
      (owl:allValuesFrom vin:Winery))
              ...
      (owl:Restriction (owl:onProperty vin:locatedIn)
        (owl:someValuesFrom vin:Region))))
gx-user(3): (defIndividual MyHomeMadeWine (rdf:type vin:Wine)
                           (vin:hasMaker MyHome))
#<vin:Wine MyHomeMadeWine>
gx-user(4): MyHome
#<vin:Winery MyHome>

13.2.15  Full Existential Restriction(owl:someValuesFrom)

On the other hand, the full existential restriction, rdfp15 in Table 13.3, does not entail anything useful results about the filler type in rigorous Open Word Assumption. We cannot conclude unsatisfiability even if an individual does not have the restricted filler on the role of the full existential quantification, because there may be a piece of such knowledge anywhere in the Web World. Moreover, the filler whose type is different from one that is directed for the filler is acceptable. However, we set a frag to switch between Open World Assumption and Closed World Assumption, and then it is set to Closed World Assumption as default. This advanced topic is described in one of Japanese papers and Phd. thesis.

Note that we can conclude unsatisfiability for the value restriction (owl:allValuesFrom), if an individual has a role of the value restriction and one of the values does not satisfy the restriction, even in the open world. However, you should note on owl:allValuesFrom that an individual that has no slots on the value restriction property is also satisfiable for the directed class.

13.2.16  Filler Restriction(owl:hasValue)

The hasValue restriction directs for individuals to have at least one designated value (not class restriction) as slot value. It is rephrased that if a concept has a filler restriction on a role, the individuals must have the same filler on the role at least one. However, this involves the same problem for rigorous Open World Assumption as the full existential restriction mentioned above. Moreover, this implies the same entailment for the subject entity as the full existential restriction mentioned above, for the constraint of filler itself instead of filler class. See rdfp14bx and rdfp14a in Table 13.3.

gx-user(2): (get-form vin:TableWine)
(owl:Class vin:TableWine
  (rdf:about
    <http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#TableWine>)
  (owl:intersectionOf vin:Wine
    (owl:hasValueRestriction (owl:onProperty vin:hasSugar)
                             (owl:hasValue vin:Dry))))
gx-user(3): (get-form vin:DryWine)
(owl:Class vin:DryWine
  (owl:intersectionOf vin:Wine
    (owl:hasValueRestriction (owl:onProperty vin:hasSugar)
                             (owl:hasValue vin:Dry))))
gx-user(4): (get-form vin:MariettaOldVinesRed)
(vin:RedTableWine vin:MariettaOldVinesRed
  (vin:hasMaker vin:Marietta)
  (vin:hasFlavor vin:Moderate)
  (vin:hasBody vin:Medium)
  (vin:locatedIn vin:SonomaRegion)
  (vin:hasColor vin:Red)
  (vin:hasSugar vin:Dry))
gx-user(5): (typep vin:MariettaOldVinesRed vin:TableWine)
t
t
gx-user(6): (typep vin:MariettaOldVinesRed vin:DryWine)
t
t

In this demonstration, DryWine and TableWine is defined to have the filler restriction of Dry, and MariettaOldVinesRed has a filler Dry for role hasSugar, then SWCLOS can conclude it is a TableWine and a DryWine, too.

We would like to claim that correct but harsh treatment often tends to produce no results. Rigorous Open Word Assumption will often not produce useful results. You may make your owl rule for the full existential quantification and make a balance between Open World Assumption vs. Closed World Assumption. For example, you might want to close the world around you when you felt making an ontology completed, and you might want to check the unsatisfiability of the full existential quantification. We say that it is a sort of auto-epistemic logic. The latest SWCLOS provides such pedantic function, but it should be discussed later as a more advanced topic.


Author: Seiji Koide. Copyright (c) 2005, 2006 GALAXY EXPRESS CORPORATION. Feb. 2006
Copyright (c) 2007-2010 Seiji Koide. Oct.2010