Re: Suggested changes to concrete datatypes proposal

From: Jeff Heflin (heflin@cs.umd.edu)
Date: 01/30/01


I have made a few comments on Peter's skeleton for the third view of
concrete and abstract domains (they are interspersed with his text).
With these changes, I'd be willing to support this proposal.

"Peter F. Patel-Schneider" wrote:
> 
> Here is one *possible* skeleton for the third view.  I have not analyzed
> this extensively, so there is the distinct chance of problems herein.
> 
> daml:Thing                              the entire domain
> rdfs:Literal <= daml:Thing              the concrete subdomain
>                                         this requires a union type for all
>                                         concrete types
> rdfs:Resource <= daml:Thing             the abstract subdomain ?

The RDF Schema Spec says "All things being described by RDF expressions
are called resources, and are considered to be instances of the class
rdfs:Resource." Therefore, I don't think Resource can be a subclass of
daml:Thing. I'd rather see it the otherway around, i.e.,

rdfs:Resource				the entire domain
rdfs:Literal <= rdfs:Resource		the concrete subdomain
daml:Thing <= rdfs:Resource		the abstract subdomain
 
> rdfs:Class                              the class of all classes
>                                         note that concrete datatypes are
>                                         now classes (I think)
> 
> daml:AbstractClass                      the class of all abstract classes
> daml:ConcreteClass                      the class of all concrete classes

This is fine. Note that with my suggestion, it might clarify things to
think of rdfs:Literal as the top (most general) class of
daml:ConcreteClass and daml:Thing as the top class of daml:AbstractClass
(as rdfs:Resource is the top class of rdfs:Class).

> rdf:Property
>         rdfs:domain = rdfs:Resource
>         rdfs:range = rdfs:Thing

This isn't quite right. When specifying a property, its subject is an
instance of an AbstractClass (not a specific individual), and its object
is an instance of a Class. Thus, this should be:

rdf:Property
        rdfs:domain = daml:AbstractClass
        rdfs:range = rdfs:Class

> daml:AbstractProperty
>         rdfs:range = rdfs:Resource      this requires the change to rdfs:range
> 
> daml:ConcreteProperty
>         rdfs:range = rdfs:Literal       this requires the change to rdfs:range

Similar to above, these should be:

daml:AbstractProperty
         rdfs:range = rdfs:AbstractClass    this requires the change to
rdfs:range
 
daml:ConcreteProperty
         rdfs:range = rdfs:ConcreteClass    this requires the change to
rdfs:range

 
> daml:disjoint                           these can only involve abstract classes
> daml:unionOf
> daml:disjointUnionOf
> daml:intersectionOf
> 
> daml:disjointWith
>         rdfs:domain = daml:AbstractClass
>         rdfs:range  = daml:AbstractClass
> 
> daml:complementOf
>         rdfs:domain = daml:AbstractClass
>         rdfs:range  = daml:AbstractClass
> 
> daml:Restriction <= daml:AbstractClass
> 
> daml:onProperty
>         rdfs:domain = daml:Restriction
>         rdfs:range  = rdfs:Property
> 
> daml:toType
>         rdfs:domain = daml:Restriction
>         rdfs:range  = rdfs:Class
> 
> daml:hasValue
>         rdfs:domain = daml:Restriction
>         rdfs:range  = daml:Thing

If rdfs:Resource is the set of all values in both the concrete and
abstract domains, then this should be:

daml:hasValue
        rdfs:domain = daml:Restriction
        rdfs:range  = rdfs:Resource

 
> daml:hasType
>         rdfs:domain = daml:Restriction
>         rdfs:range  = rdfs:Class
> 
> daml:hasTypeQ
>         rdfs:domain = daml:Restriction
>         rdfs:range  = rdfs:Class
> 
> daml:minCardinality
>         rdfs:domain = daml:Restriction
>         rdfs:range = >=0
> 
> daml:maxCardinality
>         rdfs:domain = daml:Restriction
>         rdfs:range = >=0
> 
> daml:cardinality
>         rdfs:domain = daml:Restriction
>         rdfs:range = >=0
> 
> daml:minCardinalityQ
>         rdfs:domain = daml:Restriction
>         rdfs:range = >=0
> 
> daml:maxCardinalityQ
>         rdfs:domain = daml:Restriction
>         rdfs:range = >=0
> 
> daml:cardinalityQ
>         rdfs:domain = daml:Restriction
>         rdfs:range = >=0


This archive was generated by hypermail 2.1.4 : 04/02/02 EST