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