To say that X is a Y, is that it is an instance of, or a subclass of, a class Y.
To say that X has a property Y means that statements of the form "X Y z" are valid.
But using the rdfs:domain notation runs into problems: as I undertand it, if there is more than one statement using rdfs:domain for a predicate, any objects for which that predicate is valid must belong to all the domain classes.
Quoting from the spec at http://www.w3.org/TR/rdf-schema/#ch_domain :
So, if we say
person has_a weight
and
non-person has_a weight
we end up with the problem that any x with a weight muse be both a person and a non-person.
Perhaps we can get round this with a formulation like:
person has_a person-weight non-person has_a non-person-weight
and
person-weight = weight non-person-weight = weight
Hmm. I think I'll be sitting down with the OWL definitions for a bit longer.
Another way around this is:
person is_a PHYSOB non-person is_a PHYSOB PHYSOB has_a weight
and use inheritance...
But then we have to get all hierarchies right from the beginning...
Third thinks:
owl:allValuesFrom?
may be what is needed here.
Daniel thinks:
How about loosely coupling with RDF? The more I hear the more I see we could get sucked into a quagmire with RDF.
Perhaps we should concentrate on getting the system to work with itself. We could end up building something that is far more useable than RDF - perhaps. Then just have a concept of translating to and from RDF.
Hmmm...?
OK, let's have
kendra:has_a
and sort out the detailed semantics later. To do this, we may need to have some way of (perhaps) generating an intermediate property tag, as per discussion above: this has to be done in a consistent way across different data-stores, though.
Cool!
See? Now this wiki is behaving like a forum. See my earlier [rant].