Great to see the work being done to represent the schema.org vocabulary in RDFa [1]. I continue to be confused about the sense of defining datatypes in the schema: namespace (e.g., schema:Text, which is a sub-class of schema:DataType). To an RDFS (or OWL) reasoner, this makes it seem as if properties that have this as a range are ObjectProperties rather than DatatypeProperties. Asserting that schema:DataType is a subclass of rdfs:Datatype would make this transformation better. Going further, schema:URL could be made equivalent to xsd:anyURI, same with the date types. Any thoughts on going there?
schema:Text a rdfs:Class;
rdfs:label "Text";
rdfs:comment "Data type: Text.";
rdfs:subClassOf schema:DataType .
schema:DataType a rdfs:Class;
rdfs:label "DataType";
rdfs:comment "The basic data types such as Integers, Strings, etc." .
Similarly, schema:domain and schema:range are undefined. I understand that they have union semantics instead of intersection, as with rdfs:domain and rdfs:range. However, it would be great to see these defined along with inference rules that would create equivalent owl:unionOf assertions.
Lastly, asserting a rdfs:subPropertyOf relationship to rdf:type for schema:additionalType would help, but the fact that the range is schema:URL confuses this; this makes it seem that has a literal range.
schema:additionalType a rdf:Property;
rdfs:label "additionalType";
schema:domain schema:Thing;
schema:range schema:URL;
rdfs:comment "An additional type for the item, typically used for adding more specific types from external vocabularies in microdata syntax. This is a relationship between something and a class that the thing is in. In RDFa syntax, it is better to use the native RDFa syntax - the 'typeof' attribute - for multiple types. Schema.org tools may have only weaker understanding of extra types, in particular those defined externally." .
Gregg Kellogg
gregg@greggkellogg.net
[1] http://schema.org/docs/schema_org_rdfa.html