W3C home > Mailing lists > Public > www-rdf-logic@w3.org > March 2003

Re: Treating a class as both an individual and a class?

From: Peter F. Patel-Schneider <pfps@research.bell-labs.com>
Date: Sun, 09 Mar 2003 12:44:20 -0500 (EST)
Message-Id: <20030309.124420.123579539.pfps@research.bell-labs.com>
To: costello@mitre.org
Cc: www-rdf-logic@w3.org

From: "Roger L. Costello" <costello@mitre.org>
Subject: Treating a class as both an individual and a class?
Date: Sun, 09 Mar 2003 09:10:26 -0500

> 
> Hi Folks,
> 
> I am not clear on the mechanism of using a class as both an individual
> and as a class.  Consider this example:
> 
> Suppose that River is a subclass of Stream.  Here's the definition of
> the River class:
> 
>     <rdfs:Class rdf:ID="River">
>         <rdfs:subClassOf rdf:resource="#Stream"/>
>     </rdfs:Class>
> 
> Suppose that I want to use this River class as an individual, as shown
> here:
> 
>     <Country rdf:ID="China">
>         <hasFeature rdf:resource="http://geodesy.org#River"/>
>     </Country>
> 
> Note that the property "hasFeature" has as its value the class River. 
> Thus, the River class is being treated as an "individual". (Correct?)

Hmm.  I don't think that this is correct modelling.  You are *not* saying
anything related to whether China has a river in it.  Nevertheless, I'll
assume that you do have some valid use for this, and continue.

> What confuses me is how the property hasFeature would be declared.
> More specifically, what would be the value of its rdfs:range?
> 
>     <rdf:Property rdf:ID="hasFeature">
>         <rdfs:domain rdf:resource="#Country"/>
>         <rdfs:range rdf:resource="???"/>
>     </rdf:Property>
> 
> Could somebody please tell me how to define rdfs:range above?  Thanks! 

I believe that (part of) the answer is in your message

> Note that the property "hasFeature" has as its value the class River. 
							   ^^^^^

so one of the RDFS/OWL classes that have classes as their instances would
be appropriate.  Depending on what you want (in OWL Full, of course) you
might use rdfs:Resource (equivalently owl:Thing (in OWL Full
only, of course)), rdfs:Class (equivalently owl:Class (in OWL Full only, of
course)), or a subclass of these classes.

I expect that you probably only want classes here so, 

>         <rdfs:range rdf:resource="owl:Class"/>

is most appropriate.

However, you do need to remember that metaclasses may not give you all that
you might think that they are giving you.

> /Roger

Peter F. Patel-Schneider
Received on Sunday, 9 March 2003 12:44:38 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:52:43 GMT