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

I had said:
[log in to unmask]" type="cite">
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.

kc

[1] http://www.w3.org/TR/rdf-schema/#ch_type
[2] http://dublincore.org/documents/dcmi-type-vocabulary/
[3] http://www.productontology.org/

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