On 22 January 2015 at 18:28, Gregg Kellogg <gregg@greggkellogg.net> wrote:
>> On Jan 22, 2015, at 3:48 AM, Martin Hepp <martin.hepp@unibw.de> wrote:
>>
>> Ah! Yes, that is also a viable way, much better than my proposal! The key advantage over my proposal is that the Python code for generating the documentation does not need to change - rangeIncludes effectively becomes rangeHint and domainIncludes domainHint, and the integrity constraint axioms will be modeled using rdfs:domain and rdfs:range with complex class definitions, as in this example (from GoodRelations):
>>
>> gr:condition a owl:DatatypeProperty;
>> rdfs:comment "A textual description of the condition of the product or service, or the products or services included in the offer (when attached to a gr:Offering)"@en;
>> rdfs:domain [ a owl:Class;
>> owl:unionOf (gr:Offering gr:ProductOrService) ];
>> rdfs:isDefinedBy <http://purl.org/goodrelations/v1>;
>> rdfs:label "condition (0..1)"@en;
>> rdfs:range rdfs:Literal.
>
> The difference between using the unionOf and domainIncludes variation is that domainIncludes is open, and allows other vocabularies to extend the domain for their purpose (as, for example, yoursports.com does). Whereas, unionOf uses an rdf:List, which can't be extended. Other than the extensibility issues, then domain/rangeIncludes are essentially the same as unionOf.
domainIncludes can be considered closed with respect to a particular
release. Schema.org is in the 'living standard' traditional of
perpetually evolving vocabularies, but it does have the notion of a
release. At each such snapshot, we say "here's how it looks right
now". But we don't make strong and brittle assertions (whether in OWL
or RDFS) that might trip up implementors whose applications
subsequently encounter data from a future expanded version. Since we
are so cross domain, it is pretty hard to predict up front what the
repercussions might be of adding in some new vocabulary. Usually it
involves tweaks to textual definitions, occasionally the addition of
more types as expected range values or domains on an existing
property.
Dan