- From: Eric Prud'hommeaux <eric@w3.org>
- Date: Sat, 18 Nov 2017 23:14:10 -0500
- To: Hanscools <hanscools@intergga.ch>
- Cc: semantic-web@w3.org
* Hanscools <hanscools@intergga.ch> [2017-11-19 02:45+0100] > Hello, > > I came across a system implementing Semantic Web technology and replacing > rdfs:domain and rdfs:range by its own constraints. > Can this still be considered W3C compliant? > > The (anonymized) declaration: > x:propertyX a owl:ObjectProperty. # replacing rdfs:domain > x:propertyY a owl:ObjectProperty. # replacing rdfs:range > (Note: without any other semantics, e.g. > x:propertyX rdfs:subPropertyOf rdfs:domain.) > > Reason for doing this: 'insufficient control over type of subject and > object', because: > * implementation of the RDF/S model theory for rdfs:domain and rdfs:range > with e.g. N3 rules: > {?P rdfs:domain ?DC. ?x ?P ?y} => {?x a ?DC}. > {?P rdfs:range ?RC. ?x ?P ?y} => {?y a ?RC}. > > * and example with mock-up ontologies and data (without prefix headers): > Ontologies: > y:Rock a rdfs:Class. > z:Human a rdfs:Class. > z:BiologicalSex a rdfs:Class. > z:hasBiologicalSex > a owl:ObjectProperty; > rdfs:domain z:Human; > rdfs:range z:BiologicalSex. > Data: > ex:rock1 > a y:Rock; > z:hasBiologicalSex z:female. > > * leads to following inferences with a machine reasoner using the above > rules: > ex:rock1 a z:Human. # not OK => 'One can state and infer the wrong things.' > z:female a z:BiologicalSex. # OK > > Note: problem can be solved by declaring: > z:Human owl:disjointWith y:Rock. # For the example above this will result in > a conclusion: false. This looks like inaccurate data (if we're talking about minerals here, they don't have a biological sex). There's no modeling which can account for that. If you evaluate the semantics of false models, you'll learn more false factoids. However, your question is kind of close to a textbook use case for OWL restriction classes so it's probably worth mentioning. If cat's offspring are cats and dog's offspring are dogs, we might be tempted to use rdfs:range on ex:hasChild: wrong ex:hasChild rdfs:range ex:Cat . ex:hasChild rdfs:range ex:dog . <Rex> a ex:Dog; ex:hasChild <Fido> . implies that <Fido> a ex:Dog, ex:Cat . # sort of a mule of common pets? But you can say that dogs have dogs and cats have cats: ex:Dog rdfs:subClassOf [ owl:onProperty ex:hasChild ; owl:allValuesFrom ex:Dog ] . ex:Cat rdfs:subClassOf [ owl:onProperty ex:hasChild ; owl:allValuesFrom ex:Cat ] . <Rex> a ex:Dog; ex:hasChild <Fido> . which implies that <Fide> a ex:Dog . > Kind regards, > Hans > -- -ericP office: +1.617.599.3509 mobile: +33.6.80.80.35.59 (eric@w3.org) Feel free to forward this message to any list for any purpose other than email address distribution. There are subtle nuances encoded in font variation and clever layout which can only be seen by printing this message on high-clay paper.
Received on Sunday, 19 November 2017 04:14:14 UTC