From: Peter F. Patel-Schneider ([email protected])
Date: 12/04/01
As it is sort of on today's agenda, here is the current status of my effort
to reconcile DAML+OIL with the new RDF model theory.
Note: This is only a draft. It is undergoing continuous revisions as I
detect (and, hopefully, fix) problems. I believe that there are missing
semantic conditions, particularly in the RDFS conditions. Nevertheless, it
does provide, I think, a coherent and reasonable approach to layering
DAML+OIL on top of the new definition of RDF.
peter
Bringing the new RDF Model Theory to DAML+OIL
Peter F. Patel-Schneider
Bell Labs Research
(4 December 2001)
[This is a draft. There are probably minor pieces missing.]
This is a new way of looking at DAML+OIL that is more compatible with the
new RDF model theory. I have tried to identify the tricky points below.
The basic idea is to stay with the RDF approach of having the syntax of
semantically-meaningful constructs like subclass also show up as
relationships in interpretations. This is extended to what I think is a
reasonable point that does not exhibit any paradoxes. However, the
class-forming operators of DAML+OIL do not get this treatment, as doing so
would result in paradoxes and an ill-formed model theory.
The RDF constructs like subclass are also given a more-powerful meaning.
This meaning is upward compatible with the RDF meaning but is more in
keeping with DAML+OIL.
Knowledge Bases:
A DAML+OIL knowledge base is a collection of statements.
Some of these statements are RDF triples, some are not.
[I will leave the syntax of the non-RDF constructs vague for now.]
Datatypes:
A datatyping scheme is a collection of datatypes, DT.
A datatype d in DT is a triple <Ld,Vd,LVd>
where Ld is its lexical space
Vd is its value space
LVd : Ld -> Vd is its lexical-to-value mapping
Given a datatyping scheme, let L = union over d in DT of Ld, lexical values
V = union over d in DT of Vd, data values
LV = union over d in DT of LVd
[This way works best if there is a collection of primitive datatypes, like
integer, and the range-restriction of LV to the value spaces of each of
these datatypes is functional. The presence of datatypes where this is not
true, like XML Schema union datatypes, does not cause severe problems, as
long as one realizes that the DAML+OIL type theory only restricts the
result of the lexical-to-value map, not the actual map. Thus stating that
the range of a property is integer union string does not turn sequences of
digit characters into integers.]
Lexical Issues:
N is a collection of names (URIs).
E is a collection of identifiers (blank node ids), disjoint from N.
K is a collection of literal occurences, of the form
<l,d> where l is in L, d is in DT
l:n where l is in L, n is an integer (or some other tag)
Interpretations:
A DAML+OIL interpretation, I, over a datatyping scheme DT is a
generalized simple RDFS interpretation,
consisting of R, nonempty the domain of resources
P <= R, nonempty properties
C <= R, nonempty classes
EXT : P -> 2^(Rx(RuV)) property extensions
CEXT : C -> 2^(RuV) class extensions
M : N -> R mapping from names to denotation
an extended DAML+OIL interpretation, I', is an interpretation with the
following additional component
A : E -> R mapping from blank nodes to denotation
I' is said to extend I if they agree on R, P, C, EXT, CEXT, and M.
Both have the following conditions.
>From RDF:
M(rdf:type) in P
for x in R x in CEXT(y) iff <x,y> in EXT(M(rdf:type))
[rdf:type only lines up with CEXT on resources, not data values
>From RDFS:
[Note: I may be missing some semantic relationships in this section.]
CEXT(M(rdfs:Resource)) = R
CEXT(M(rdf:Property)) = P
CEXT(M(rdfs:Class)) = C
CEXT(M(rdfs:Literal)) = V
M(rdfs:Resource), M(rdf:Property) in C\DT
M(rdfs:Class), M(rdfs:Literal) in C\DT
< M(rdfs:Class), M(rdfs:Resource) > in EXT(M(rdfs:subClassOf))
< M(rdfs:Property), M(rdfs:Resource) > in EXT(M(rdfs:subClassOf))
M(rdfs:subClassOf), M(rdfs:subPropertyOf) in P
M(rdfs:domain), M(rdfs:range) in P
for x,y in C\DT <x,y> in EXT(M(rdfs:subClassOf)) iff CEXT(x) <= CEXT(y)
[rdf:subClassOf only lines up with CEXT on non-datatypes]
<r,s> in EXT(IS(rdfs:subPropertyOf)) iff EXT(r) <= EXT(s)
if <x,y> in EXT(p) and <p,c> in EXT(M(rdfs:domain)) then x in CEXT(c)
if <x,y> in EXT(p) and <p,c> in EXT(M(rdfs:range)) then y in CEXT(c)
< M(rdf:type), M(rdfs:Class) > in EXT(M(rdfs:range))
< M(rdfs:subClassOf), M(rdfs:Class) > in EXT(M(rdfs:domain))
< M(rdfs:subClassOf), M(rdfs:Class) > in EXT(M(rdfs:range))
< M(rdfs:subPropertyOf), M(rdfs:Property) > in EXT(M(rdfs:domain))
< M(rdfs:subPropertyOf), M(rdfs:Property) > in EXT(M(rdfs:range))
< M(rdfs:domain), M(rdfs:Property) > in EXT(M(rdfs:domain))
< M(rdfs:domain), M(rdfs:Class) > in EXT(M(rdfs:range))
< M(rdfs:range), M(rdfs:Property) > in EXT(M(rdfs:domain))
< M(rdfs:range), M(rdfs:Class) > in EXT(M(rdfs:range))
< M(rdfs:label), M(rdfs:Literal) > in EXT(M(rdfs:range))
< M(rdfs:comment), M(rdfs:Literal) > in EXT(M(rdfs:range))
M(rdfs:seeAlso), M(rdfs:isDefinedBy) in P
< M(rdfs:isDefinedBy), M(rdfs:seeAlso) > in EXT(M(rdfs:subPropertyOf))
< M(rdf:seeAlso), M(rdfs:Resource) > in EXT(M(rdfs:range))
For datatypes:
DT <= C
M(daml:Datatype) in C\DT
CEXT(M(daml:Datatype)) = DT
for d in DT CEXT(d) = Vd
For DAML+OIL:
M(daml:Class) in C\DT
M(daml:ObjectProperty), M(daml:DatatypeProperty) in C\DT
M(daml:UniqueProperty), M(daml:UnambiguousProperty) in C\DT
M(daml:TransitiveProperty) in C\DT
<M(daml:Class), M(rdfs:Class)> in EXT(M(rdfs:subClassOf)
<M(daml:ObjectProperty), M(rdf:Property)> in EXT(M(rdfs:subClassOf)
<M(daml:DatatypeProperty), M(rdf:Property)> in EXT(M(rdfs:subClassOf)
<M(daml:UniqueProperty), M(rdf:Property)> in EXT(M(rdfs:subClassOf)
<M(daml:UnambiguousProperty),M(daml:ObjectProperty)> in EXT(M(rdfs:subClassOf)
<M(daml:TransitiveProperty), M(daml:ObjectProperty)> in EXT(M(rdfs:subClassOf)
x in CEXT(M(daml:Class)) iff CEXT(x) <= R
x in CEXT(M(daml:ObjectProperty)) iff x in P and EXT(x) <= R x R
x in CEXT(M(daml:DatatypeProperty)) iff x in P and EXT(x) <= R x V
x in CEXT(M(daml:UniqueProperty)) iff x in P and EXT(x) is functional
x in CEXT(M(daml:UnambiguousProperty)) iff
x in CEXT(M(daml:ObjectProperty)) and converse EXT(x) is functional
x in CEXT(M(daml:TransitiveProperty)) iff
x in CEXT(M(daml:ObjectProperty)) and EXT(x) o EXT(x) <= EXT(x)
M(daml:sameClassAs), M(daml:disjointWith) in P
M(daml:samePropertyAs) in P
M(daml:sameIndividualAs), M(daml:differentIndividualFrom) in P
<M(daml:sameClassAs), M(rdfs:subClassOf)> in EXT(M(rdfs:subPropertyOf)
<M(daml:samePropertyAs), M(rdfs:subPropertyOf)> in EXT(M(rdfs:subPropertyOf)
<M(daml:sameClassAs),M(rdfs:Class)> in EXT(M(rdfs:domain))
<M(daml:sameClassAs),M(rdfs:Class)> in EXT(M(rdfs:range))
<M(daml:disjointWith),M(rdfs:Class)> in EXT(M(rdfs:domain))
<M(daml:disjointWith),M(rdfs:Class)> in EXT(M(rdfs:range))
<M(daml:samePropertyAs),M(rdf:Property)> in EXT(M(rdfs:domain))
<M(daml:samePropertyAs),M(rdf:Property)> in EXT(M(rdfs:range))
<M(daml:sameIndividualAs),M(rdfs:Resource)> in EXT(M(rdfs:domain))
<M(daml:sameIndividualAs),M(rdfs:Resource)> in EXT(M(rdfs:range))
<M(daml:differentIndividualFrom),M(rdfs:Resource)> in EXT(M(rdfs:domain))
<M(daml:differentIndividualFrom),M(rdfs:Resource)> in EXT(M(rdfs:range))
<x,y> in EXT(M(rdfs:subClassOf)) iff x,y in C\DT and CEXT(x) <= CEXT(y)
<x,y> in EXT(M(daml:sameClassAs)) iff x,y in C\DT and CEXT(x) = CEXT(y)
<x,y> in EXT(M(daml:disjointWith)) iff x,y in C\DT and CEXT(x)^CEXT(y) = {}
<x,y> in EXT(M(rdfs:subPropertyOf)) iff x,y in P and EXT(x) <= EXT(y)
<x,y> in EXT(M(daml:samePropertyAs)) iff x,y in P and EXT(x) = EXT(y)
<x,y> in EXT(M(daml:sameIndividualAs)) iff x,y in R and x=y
<x,y> in EXT(M(daml:differentIndividualFrom)) iff x,y in R and x/=y
Satisfaction:
An extended interpretation DAML+OIL-satisfies statements as follows. Note
that some statements match multiple conditions, e.g., S rdfs:subClassOf O.
Statement Condition
S P O [an RDF triple] < IO(S), IO(O) > in EXT(M(P)) [as in RDF MT]
S rdf:type D IO(S) in ID(D)
D1 rdfs:subClassOf D2 ID(D1) <= ID(D2)
D1 daml:sameClassAs D2 ID(D1) = ID(D2)
D1 daml:disjointWith D2 ID(D1) disjoint from ID(D2)
P1 rdfs:subPropertyOf P2 EXT(M(P1)) <= EXT(M(P2))
P1 daml:samePropertyAs P2 EXT(M(P1)) = EXT(M(P2))
P rdfs:domain D EXT(M(P)) <= ID(Q) x R
P rdfs:range D EXT(M(P)) <= R x ID(Q)
where {S P O} is an RDF triple
P, P1, P2 are names
S, S1, S2 are names or blank node identifiers
D, D1, D2 are descriptions (see below)
Q, Q1, Q2 are roles (see below)
O is a name or blank node identifier or literal occurence
and IO : O -> R v V as follows
Construction Mapping
S a name M(S)
b a blank node A(b)
<l,d> a typed literal occurence LVd(l)
l:n an untyped literal occurence in LV(l)
[untyped literal occurences are underspecified]
and ID : D -> 2^R as follows [ID does not allow non-resources in extensions]
Construction Extension
S CEXT(M(S)) ^ R
Thing R
Nothing { }
unionOf D1...Dn ID(D1) v ... v ID(Dn)
intersectionOf D1...Dn ID(D1) ^ ... ^ ID(Dn)
complementOf D R\ID(D)
oneOf S1 ... Sn { M(S1), ..., M(Sn) }
toClass Q D { x : <x,y> in IR(Q) implies y in IC(D) }
hasValue Q O { x : <x,M(O)> in IR(Q) }
hasClass Q D { x : exists y <x,y> in IR(Q) and y in IC(D) }
minCardinality n Q { x : >=n y <x,y> in IR(Q) }
maxCardinality n Q { x : <=n y <x,y> in IR(Q) }
cardinality n Q { x : exactly n <x,y> in IR(Q) }
minCardinalityQ n Q D { x : >=n y <x,y> in IR(Q) and y in IC(D) }
maxCardinalityQ n Q C { x : <=n y <x,y> in IR(Q) and y in IC(D) }
cardinalityQ n Q C { x : exactly n <x,y> in IR(Q) and y in IC(D) }
and IC : D -> 2^(RuV) as follows
Construction Extension
S CEXT(M(S))
D (except S) ID(D)
and IR : Q -> 2^(RxR) as follows
Construction Extension
P EXT(M(P)) if M(P) in CEXT(daml:ObjectProperty)
EXT(M(P)) if M(P) in CEXT(daml:DatatypeProperty)
[unspecified otherwise]
inverseOf R converse of IR(R) if EXT(R) <= RxR
[unspecified otherwise]
Models and entailment:
An extended interpretation DAML+OIL-satisfies a knowledge base if it
DAML+OIL-satisfies every statement in the knowledge base.
An interpretation is a model for a DAML+OIL knowledge base if there is some
extension of the interpretation that satisfies the knowledge base.
A DAML+OIL knowledge base, KB1, entails another, KB2, if all models of KB1
are also models of KB2.
Status of all RDF, RDFS, and ``old'' DAML-OIL constructs not handled above:
Surface syntax - does not show up at this level
xmlns:* rdf:aboutEach rdf:aboutEachPrefix rdf:li rdf:parseType
rdf:RDF rdf:Description rdf:ID rdf:about rdf:resource
Ontology versionInfo imports
Obsolete surface syntax - not needed
rdf:parseType of daml:collection
daml:List daml:nil daml:first daml:rest daml:item
Constructs with no special treatment needed
rdfs:label rdfs:comment rdf:value rdfs:seeAlso rdfs:isDefinedBy
Unneeded description syntax
daml:Restriction daml:onProperty daml:hasClassQ
Not handled (yet)
daml:disjointUnionOf
Problematic Constructs
RDF reification - rdf:subject, rdf:predicate, rdf:object, rdf:Statement
- rdf:bagID
- what does it mean?
RDF containers - rdfs:Container, rdf:Seq, rdf:Bag, rdf:Alt, rdf:_n
- what do they mean?
daml:equivalentTo - what does it mean?
This archive was generated by hypermail 2.1.4 : 04/02/02 EST