I apologize, I am back because I realized that my example, below, was 
wrong and I want to correct it.

I had said:
> A -> hasBody -> B -> hasType -> X
> but instead doing:
> A -> X -> B

This is not correct. X cannot be used in both instances. In
     A -> X -> B
X is a property, and that property must have the semantics "asserts a 
body of type X". Any properties used for X must be of the semantics 
"asserts a body of type..."

In this example, I have substituted Y because the object of rdf:type is 
a class:
     A -> hasBody -> B -> rdf:type -> Y

 From the documentation [1]:

|rdf:type| is an instance of |rdf:Property| 
<> that is used to state 
that a resource is an instance of a class.

A triple of the form:

    R rdf:type C

states that C is an instance of |rdfs:Class| 
<> and R is an instance of C.

The |rdfs:domain <>| of 
|rdf:type| is rdfs:Resource 
<>. The |rdfs:range| 
<> of rdf:type is |rdfs:Class| 

Any class is technically valid, although of course the ones that will 
make sense will be ones that describe resource types, like the DC type 
vocabulary, or the product ontology.[3] I admit that this stuff is hard 
to wrap ones head around.



Karen Coyle
[log in to unmask]
ph: 1-510-540-7596
m: 1-510-435-8234
skype: kcoylenet