Some comments on the changes in DAML+OIL
========================================
1. Thing is made equal to the union of Nothing and the complement of
Nothing. This isn't necessary, but it does give it some built-in
semantics.
2. Local cardinality restrictions have been added. These allow both
simple and qualified (including a class restriction) restrictions.
3. The semantics of restrictions has been changed to being a necessary
AND sufficient condition in line with all the other "class
constructors" (and, or, not etc.). "Primitive" classes can be
specified by adding restrictions with the restrictedBy (or subClassOf)
property, while "defined" classes can be specified with the
equivalentTo property. e.g.:
2
states that all Animals have 2 parents (primitive), while
2
states that something is an Animal IF AND ONLY IF it has 2 parents
(defined). More complex defined classes can be created using the
boolean connectives. e.g.:
states that something is a Human IF AND ONLY IF it is an Animal that
has some Human parent.
4. Cardinality facets on slots have been deleted as they are now
redundant and have strange/doubtful semantics. If it is really
necessary to add a global cardinality restriction to a property, this
can be done by placing a restriction on "Thing":
2
5. The distinction between restrictions and qualifications has been
removed - there are now only restrictions. Having both restrictions
and qualifications meant that the domain of "onProperty" had to be the
union of the two. This was done by relying on the disputed union
semantics for rdfs:domain (although it could have been done by using a
superclass of restriction and qualification).
This isn't an important point as the problems could be solved by using
a subClass hierarchy of restriction, qualification and
cardinalityQualification. This would allow some finer grained
restrictions to be placed on the domains of the restriction
properties, if it is deemed to be worth the extra complexity.
6. While DAML-ont generally did a better job of naming classes and
properties than OIL, the choices of "toValue" and "hasValue" are not
so good: "hasValue" and "hasClass" respectively are better
choices. These names reflect more clearly the meaning of the two
restrictions. In particular, in the old scheme toValue suggests the
same kind of restriction as toClass, which is not the case: toClass is
a universal quantification (and is satisfied in the case where there
is no relevant property), while toValue insists on the existence of a
relevant property (but does not exclude the existence of additional
values for the same property). In fact toValue(R, V) is equivalent to
{hasValue(R, X), oneOf(X, V)}. To sum up, DAML+OIL implements the
following property renamings:
DAML DAML+OIL
toValue --> hasValue
hasValue --> hasClass
7. "default" was removed due to its lack of semantics.
8. Local namespace equivalents for rdf and rdfs resources are defined,
but may compromise portability if used.