<owl:ObjectProperty rdf:about="http://ontology.eil.utoronto.ca/icity/Person/SchemaOrgProperty">
<dc:description>Added for organizational purposes, to capture the properties reused from Schema.org. Notice that since we cannot import schema.org we must manually reference the individual IRIs.</dc:description>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="http://schema.org/address">
<rdfs:subPropertyOf rdf:resource="http://ontology.eil.utoronto.ca/icity/Person/SchemaOrgProperty"/>
<dc:description>Physical address of the item.</dc:description>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="http://ontology.eil.utoronto.ca/icity/Person/hasIncome">
<rdfs:subPropertyOf rdf:resource="http://ontology.eil.utoronto.ca/icity/Person/PersonOntologyProperty"/>
</owl:ObjectProperty>
If you use RDFS, a repository would have to infer from every instance of the specific props hasIncome and address,
an instance of the "organizational" props PersonOntologyProperty and SchemaOrgProperty.
A forward-chaining repo like GraphDB will have to infer actual new triples.
But one would never use the "organizational" props for querying, so this is wasteful.
Use rdfs:isDefinedBy to find all props defined by an ontology
Use rdfs:domain :Person (which is monomorphic) or schema:domainIncludes :Person (which is polymorphic) to find all props that apply to :Person
Using "organizational props" may make a nice hierarchy in Protege, but is not a good thing to use on real data.
Note: I'm not against super-properties in general. Eg schema:identifier has sub-props, which has a useful competency question: "find by any identifier".
Eg Person.owl has this:
If you use RDFS, a repository would have to infer from every instance of the specific props
hasIncome
andaddress
, an instance of the "organizational" propsPersonOntologyProperty
andSchemaOrgProperty
. A forward-chaining repo like GraphDB will have to infer actual new triples.But one would never use the "organizational" props for querying, so this is wasteful.
rdfs:isDefinedBy
to find all props defined by an ontologyrdfs:domain :Person
(which is monomorphic) orschema:domainIncludes :Person
(which is polymorphic) to find all props that apply to:Person
Using "organizational props" may make a nice hierarchy in Protege, but is not a good thing to use on real data.
Note: I'm not against super-properties in general. Eg schema:identifier has sub-props, which has a useful competency question: "find by any identifier".