Re: How to restrict the possible values of a class?

My take would be to define 'DayRange' as a _subclass_ of 'Range', and hence 
an instance of 'rdf:Class'.

I see no definition of '#CompositeValue'.  'Range' might be defined with 
multiple superclasses 'rdf:Class' and '#CompositeValue'.  But the approach 
suggested by your 'gr' and other properties is to simply apply them to the 
'Range' (or 'DayRange') class.

     [#DayRange] --rdf:Type--------> [rdf:Class]
     [         ] --rdf:subClassOf--> [#Range]
     [         ] --#ge-------------> '1'
     [         ] --#le-------------> '31'

Does this not achieve your goal?

(I have problems with the use of fragment identifiers in this way, but 
that's RDF for you.)

#g
--

At 12:26 PM 6/27/00 +0200, Tom Van Eetvelde wrote:
>Hello RDF community,
>
>I have the following practical problem: how can I restrict 
>classes/properties to certain values? I
>ran into this problem with the creation of a Date class:
>
><rdfs:Class rdf:ID="Range">
>   <rdfs:Label> Range </rdfs:Label>
>   <rdfs:comment>
>     This class represents an interval.
>   </rdfs:comment>
>   <rdfs:subClassOf rdf:resource="#CompositeValue"/>
></rdfs:Class>
>
><rdfs:Property rdf:ID="gr">
>   <rdfs:label> gr </rdfs:label>
>   <rdfs:comment>
>     The 'GReater than' property. Defines a lower boundary of the range.
>   </rdfs:comment>
>   <rdfs:domain rdf:resource="#Range"/>
></rdfs:Property>
>
><rdfs:Property rdf:ID="ge">
>   <rdfs:label> ge </rdfs:label>
>   <rdfs:comment>
>     The 'Greater than or Equals' property. Defines a lower boundary of 
> the range.
>   </rdfs:comment>
>   <rdfs:domain rdf:resource="#Range"/>
></rdfs:Property>
>
><rdfs:Property rdf:ID="ls">
>   <rdfs:label> ls </rdfs:label>
>   <rdfs:comment>
>     The 'LeSs than' property. Defines an upper boundary of the range.
>   </rdfs:comment>
>   <rdfs:domain rdf:resource="#Range"/>
></rdfs:Property>
>
><rdfs:Property rdf:ID="le">
>   <rdfs:label> le </rdfs:label>
>   <rdfs:comment>
>     The 'Less than or Equals' property. Defines an upper boundary of the 
> range.
>   </rdfs:comment>
>   <rdfs:domain rdf:resource="#Range"/>
></rdfs:Property>
>
><rdfs:Class rdf:ID="Date">
>   <rdfs:Label> Date </rdfs:Label>
>   <rdfs:comment>
>     This class represents a date in the format DD/MM/YYYY (day-month-year).
>   </rdfs:comment>
>   <rdfs:subClassOf rdf:resource="#CompositeValue"/>
></rdfs:Class>
>
><rdfs:Property rdf:ID="day">
>   <rdfs:label> day </rdfs:label>
>   <rdfs:comment>
>     The day part of the date.
>   </rdfs:comment>
>   <rdfs:domain rdf:resource="#Date"/>
>   <rdfs:range rdf:resource="#DayRange"/>
></rdfs:Property>
>
><rdfs:Property rdf:ID="month">
>   <rdfs:label> month </rdfs:label>
>   <rdfs:comment>
>     The month part of the date.
>   </rdfs:comment>
>   <rdfs:domain rdf:resource="#Date"/>
>   <rdfs:range rdf:resource="#MonthRange"/>
></rdfs:Property>
>
><rdfs:Property rdf:ID="year">
>   <rdfs:label> year </rdfs:label>
>   <rdfs:comment>
>     The year part of the date.
>   </rdfs:comment>
>   <rdfs:domain rdf:resource="#Date"/>
>   <rdfs:range rdf:resource="#YearRange"/>
></rdfs:Property>
>
>The RDF Shema Spec literally says that 'domain' and 'range' may only have 
>values of the type
>'class'. I wanted to make DayRange an instance of the Range class with 
>properties ge = 1 and le =
>31. But clearly, the Spec forbids this as I would have a value type of 
>Range <> Class. So, how can I
>indicate that the Dayrange runs from 1 to 31 (similar question for month 
>and year)?
>
>Regards,
>
>Tom.

------------
Graham Klyne
(GK@ACM.ORG)

Received on Tuesday, 27 June 2000 08:43:12 UTC