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

It ties in with the idea of type ontologies. A number ontology is based
on Herbrand domains, such that an integer instance is a member of the
integer domain [-inf,inf]. Specializations on the domain further
restrict the subsets and from there your case becomes realistic.

Of course, capturing the entire domain in meta-descriptions (classes)
does not scale <grin>, so reasoning algorithms are needed to work the
intervals for isType constraint checking.

One comment I will add to your solution is that things like date and
time need to consider localization (l10n) issues. Mostly, MM/DD/YYYY is
presentation. The date can be stored in such a way as to leave the
presentation to the applications.

Just a thought.

-- 
Frank V. Castellucci
http://corelinux.sourceforge.net
OOA/OOD/C++ Standards and Guidelines for Linux
http://PythPat.sourceforge.net
Pythons Pattern Package

Tom Van Eetvelde wrote:
> 
> Thanks to all the people that contributed to the brainstorm!
> 
> Below solution is the one I was looking for. Can you put a name to this technique Pierre-Antoine? I
> am not an OO expert. Your solution looks like multiple inheritance, but I am sure it is not. You
> once mentioned Meta-classes. Is this what they are: instances that are classes themselves?
> 
> I tried to come up with an explanation myself and this is my synthesis. A class describes a set of
> objects. Instantiating a class means picking out a specific object from the set. In this case,
> 'Range' is a set of sets. Range objects are e.g. [0,2], [aaa,bbb] (lexical ordering), [-10, 1000],
> etc. When I instantiate 'Range', I pick out an object from the set, e.g. [0,2]. This instance
> however describes the set of integers from 0 to 2, which is again a set of objects. Therefore, [0,2]
> is again a class. Instantiating the class means taking a number, e.g. 1.
> So making an instance of 'Range' a subclass of 'Class' is the most elegant way of expressing that
> the instance is again a Class!
> 
> I think this summarizes the situation, but still, I don't know how this construction is called in OO
> terms :-).
> 
> Regards,
> 
> Tom.
> 
> Pierre-Antoine CHAMPIN wrote:
> 
> > "McBride, Brian" wrote:
> > >
> > > >
> > > >It does not seem right to me that DayRange be a subclass of Range :
> > > >typically, Range is a class and DayRange is the instance,
> > > >but DayRange may ALSO be a class (in which case Range is a metaclass)
> > > >
> > > >This is absolutely possible in RDF,
> > > >you just have to declare that Range is a subclass of class
> > > >(and that is IS also a class, as you did - both things are different !)
> > > >
> > >
> > > Yup - thats much cleaner.  To answer Tom's request for RDF:
> > >
> > > <rdfs:Class rdf:ID='DayRange'>
> > >   <rdf:type rdf:resource='#Range'/>
> > >   <thisNameSpace:ge>0</thisNameSpace:ge>
> > >   <thisNameSpace:le>31</thisNameSpace:le>
> > > </rdfs:Class>
> > >
> > > Does that do it?
> >
> > absolutely, furthermore, we have
> >
> > <rdfs:Class rdf:ID='Range'>
> >    <rdfs:subClassOf rdf:resource='&rdfs;Class'/>
> > </rdfs:Class>
> >
> > so Range IS a class, then it can have instances
> > and it is a SUBCLASS of class, then its instances are also instance of class
> > -> DayRange, as an instance of Range, has type Class
> >
> >  hope this helps
> >
> >   Pierre-Antoine
> >
> > --- Quid quid Latine dictum sit, altum viditur
> >     Whatever is said in Latin sounds important.

Received on Tuesday, 27 June 2000 13:02:10 UTC