- From: Michael Kifer <kifer@cs.sunysb.edu>
- Date: Thu, 16 Aug 2007 12:12:47 -0400
- To: public-rif-wg@w3.org (RIF WG)
Following up on the issue of whether RIF needs its own subclassOf thingie, I would argue that in order to support exchange of data models (strongly argued for by Gary and, as I understood at the last f2f, favored by Christian) we also need a minimalistic way to specify domains and ranges. Similar to RDF but, again, without RDFS's ad hoc assumptions (about the globality of definitions, etc.). As in the case of the rif:subclassOf relationship, RDFS and other systems will be able to map their models into RIF and thus present (much of) them for exchange. What I have in mind is, again, minimalistic and shared by all languages I know of. We need constructs like abc[foo => xyz] or (abc[foo rif:hasType xyz], if you wish) which say that class abc has a property foo. For any object in abc, the value of this property must be a member of class xyz. The semantics will support only the following axioms: Inheritance: ?Cl[?Prop => ?Type] <- ?Cl rif:subclassOf ?SC and ?SC[?Prop =>?Type]. Relaxation: ?Cl[?Prop => ?Type] <- ?SubType rif:subclassOf ?Type and ?Cl[?Prop =>?SubType]. One of the problems in RDFS is that a statement like ``foo rdfs:range bar'' says that 'bar' is always the range of 'foo'. One cannot say that in one class the range of foo is bar, but in some other class it is something else (perhaps completely unrelated to bar). Ditto with rdfs:domain. Such global scoping is a no-no for OO languages. In particular, for PR languages whose data model is based on Java. But with the above model, one could state, say, Person[name=>PersonName]. Dog[name=>String]. PersonName[first=>String, last=>String]. without problems. Here the range of name on objects in class Person is one thing and on objects in class Dog some other thing. RDFS and other systems can be directly mapped into the above model. To capture RDFS semantics, one would add additional axioms. For instance, if we add the class of everything, Object, then the globality of rdfs:range and rdfs:domain are captured by these axioms: Object[?P => ?T] <- ?P rdfs:range ?T. Likewise, for rdfs:domain one would add ?D[?P => Object] <- ?P rdfs:domain ?D. --michael
Received on Thursday, 16 August 2007 16:12:53 UTC