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.
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 ≤ i ≤ n ) |
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 . |
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
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>
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
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.
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
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.
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.
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
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>
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
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
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
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>
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
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
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>
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.
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.