Questions on RDF mapping of OWL 2 data ranges

Dear group,

I am unsure about the right (and best) way of mapping user-defined OWL  
2 datatypes to RDF graphs. I have been skimming through the OWL specs  
but all examples I saw were of the following format (see http://www.w3.org/TR/2009/REC-owl2-syntax-20091027/#Datatype_Definitions 
):

	a:SSN rdf:type rdfs:Datatype .
	a:SSN owl:equivalentClass _:x .
	_:x rdf:type rdfs:Datatype .
	_:x owl:onDatatype xsd:string .
	_:x owl:withRestrictions ( _:y ) .
	_:y xsd:pattern "[0-9]{3}-[0-9]{2}-[0-9]{4}" .

This means that a datatype is an instance of rdfs:Datatype that has an  
owl:equivalentClass of another (anonymous) datatype which then points  
to the fact restrictions as an rdf:List.

1) Would it also be allowed to use rdfs:subClassOf instead of  
owl:equivalentClass?

2) Would it be legal to attach the restrictions directly on the named  
datatype instead of going through the (very verbose!) blank node, e.g.

	a:SSN rdf:type rdfs:Datatype .
	a:SSN owl:onDatatype xsd:string .
	a:SSN owl:withRestrictions ( _:y ) .
	a:SSN xsd:pattern "[0-9]{3}-[0-9]{2}-[0-9]{4}" .

3) Is it legal (and good practice) to subclass existing datatypes,  
such as

	a:SNN rdfs:subClass xsd:string .

Thanks for clarifying these, so that we can built the best practices  
into our tools.
Holger

Received on Monday, 9 November 2009 21:07:00 UTC