- From: Alan Ruttenberg <alanruttenberg@gmail.com>
- Date: Tue, 06 Sep 2016 20:11:33 +0000
- To: Antoine Zimmermann <antoine.zimmermann@emse.fr>, Simon Steyskal <simon.steyskal@gmail.com>
- Cc: Graham Klyne <gk@ninebynine.org>, Paul Houle <ontology2@gmail.com>, "semantic-web@w3.org" <semantic-web@w3.org>
- Message-ID: <CAFKQJ8mm0hMsttPbe+WGww-c4EFsHYm+m73RNozVJy+SJXj_+g@mail.gmail.com>
https://www.w3.org/TR/owl2-syntax/#Functional_Object_Properties On Mon, Sep 5, 2016 at 2:28 AM Antoine Zimmermann < antoine.zimmermann@emse.fr> wrote: > Simon, > > > SHACL may be a viable solution depending on what you want to do but it > does not have the same meaning as the OWL axioms. OWL and SHACL serve > different purposes. SHACL defines a graph structure, OWL defines some > truth about the world and don't care about the shape of the graph. See > the differences below. > > > On 05/09/2016 07:49, Simon Steyskal wrote: > > One could also use SHACL [1] for expressing such constraints, e.g.: > > > > ---- > > ex:SingleValuedInstanceShape > > a sh:Shape ; > > sh:targetNode :instance07 ; > > sh:property [ > > sh:predicate :composedOf ; > > sh:maxCount 1 ; > > ] . > > sh:maxCount and owl:maxCardinality don't have the same meaning. maxCount > is about the structure of the RDF graph, maxCardinality is about the > semantics. Compare: > > :instance07 :composedOf :Lead, :Gold . > > --> the shape is violated. > --> the statements are consistent with the OWL cardinality and allow us > to infer that :Lead owl:sameAs :Gold. > > > > This shape produces a validation result, if :instance07 has more than > > one value for property :composedOf. > > ---- > > ex:JohnIsSingleChildShape > > a sh:Shape ; > > sh:targetNode :John ; > > sh:not [ > > a sh:Shape ; > > sh:property [ > > sh:predicate :sibling ; > > sh:minCount 1 ; > > ] ; > > ] . > > > > This shape produces a validation result, if :John has not <1 (i.e., 0) > > values for property :sibling. > > Again, this has a different meaning. > > :John a [ > a owl:Restriction; > owl:onProperty :sibling; > owl:someValuesFrom owl:Thing > ] . > > --> the shape is not violated (there is simply no value for :sibling) > --> this is inconsistent wrt the ontology because we know that John has > a sibling. > > > ---- > > ex:ActorShape > > a sh:Shape ; > > sh:targetNode :Mike ; > > sh:property [ > > sh:predicate :approves ; > > sh:shape [ > > sh:property [ > > sh:path [ sh:inversePath :actor ] ; > > sh:hasValue :Deadpool_Movie ; > > ] > > ] > > ] . > > > > This shape produces a validation result, if :Mike is approving someone > > who isn't an :actor of :Deadpool_Movie. > > ---- > > > > [1] http://w3c.github.io/data-shapes/shacl/ > > > > 2016-09-04 22:06 GMT+02:00 Antoine Zimmermann > > <antoine.zimmermann@emse.fr <mailto:antoine.zimmermann@emse.fr>>: > > > > Paul, > > > > > > If you want to say that :instance07 is only composed of Lead, then > > you can write: > > > > :instance07 :composedOf :Lead; > > a [ > > a owl:Restriction; > > owl:onProperty :composedOf; > > owl:maxCardinality 1 > > ] . > > > > If you want to say that :John has no sibling, you can say: > > > > :John a [ > > a owl:Restriction; > > owl:onProperty :sibling; > > owl:allValuesFrom owl:Nothing > > ] . > > > > (you could also use owl:cardinality 0) > > > > If you want to say that Mike approves all the actors that play in > > Deadpool, you can say: > > > > [ a owl:Restriction; > > owl:onProperty [ owl:inverseOf :actor ]; > > owl:hasValue :Deadpool_Movie > > ] rdfs:subClassOf [ > > a owl:Restriction; > > owl:onProperty [ owl:inverseOf :approves ]; > > owl:hasValue :Mike > > ] . > > > > Of course, there are legitimate reasons why one would not want to > > use these axioms in their system. You can do all kinds of weird > > tricks internally but if you want to publish the data on the Web, > > it's better done with the standards. In turn, nothing prevent anyone > > who consumes these axioms to rearrange the triples with all kinds of > > internal tricks for convenience. > > > > > > Best, > > --AZ > > > > > > On 04/09/2016 17:28, Paul Houle wrote: > > > > These particular examples *are* cardinality constraints but they > are > > applied to a single subject as applied to a class. Also the > > thing I am > > trying to name is the mechanism for > > > > "making a statement about all the set of all ?s ?p values" for > > a given > > (?s ?p) > > > > for instance > > > > :Deadpool_Movie :mikeApproves :actor . > > > > to state that Mike approves the actor list for the Deadpool > > movie. It > > competes with other ways of making "statements-about-statements" > > except > > it only lets you talk about ?s ?p pairs rather than ?s ?p ?o > > triples. > > It also competes with the conventional uses of schemas, except > > schemas > > tend to be a way of > > > > "making statements about ?s ?p pairs where ?s a ?c" > > parameterized by (?c > > and ?p) > > > > For instance if we were round tripping data to and from Java > > objects, > > and the target object looks like > > > > class Car { > > Set<Key> key; > > } > > > > at some point the system knows it is producing a certain Java > > object and > > it as clear as day that it is going to populate a Set object for > > key. > > That knowledge is implicit in the Java reflection data and could > be > > represented in RDF if that was desired. > > > > In the case of DynamoDB, for instance, there is a distinction > > between > > a String and a Set<String> that is necessary to make when you > > create the > > object, but this is not a function of a "class" but rather > > something > > which can be different for every instance because it isn't > > enforced by a > > schema. > > > > On Sun, Sep 4, 2016 at 6:23 AM, Graham Klyne <gk@ninebynine.org > > <mailto:gk@ninebynine.org> > > <mailto:gk@ninebynine.org <mailto:gk@ninebynine.org>>> wrote: > > > > Not sure if this helps... but OWL can define a notion of a > > singleton > > class - e.g. > > > https://lists.w3.org/Archives/Public/semantic-web/2014Nov/0100.html > > < > https://lists.w3.org/Archives/Public/semantic-web/2014Nov/0100.html> > > > > < > https://lists.w3.org/Archives/Public/semantic-web/2014Nov/0100.html > > < > https://lists.w3.org/Archives/Public/semantic-web/2014Nov/0100.html>>. > > > > > > I understand this is sometimes used for modelling > > specific-values in > > OWL or Description Logic domain descriptions. > > > > Or maybe what you describe is simply a cardinality > constraint: > > > http://www.w3.org/TR/2012/REC-owl2-primer-20121211/#Property_Cardinality_Restrictions > > < > http://www.w3.org/TR/2012/REC-owl2-primer-20121211/#Property_Cardinality_Restrictions > > > > > > < > http://www.w3.org/TR/2012/REC-owl2-primer-20121211/#Property_Cardinality_Restrictions > > < > http://www.w3.org/TR/2012/REC-owl2-primer-20121211/#Property_Cardinality_Restrictions > >> > > > > #g > > -- > > > > > > On 04/09/2016 01:33, Paul Houle wrote: > > > > Imagine I have some facts about an instance such as > > > > :instance07 :composedOf :Lead . > > > > and then I say something like > > > > :instance07 :singleValued :composedOf . > > > > to distinguish the case of "a single valued property" > > from "a > > set of of > > property values which just happens to have one > > member". The > > difference > > doesn't usually matter in RDF-world but if you have to > > round > > trip with > > Lucene or DynamoDB you can attach supplementary data > > with the > > > > "make a statement about an ?s ?p pair by writing ?s ?p1 > ?p" > > > > This permits writing > > > > :John :hasNo :sibling . > > > > This is parallel to how people typically write RDF so > > it does > > not get in > > the way, but it queries just fine with SPARQL, Jena > > Rules and such. > > > > Is there a name for this trick? > > > > > > > > > > > > -- > > Paul Houle > > > > (607) 539 6254 <tel:%28607%29%20539%206254> paul.houle on > > Skype ontology2@gmail.com <mailto:ontology2@gmail.com> > > <mailto:ontology2@gmail.com <mailto:ontology2@gmail.com>> > > > > Ontology2 Edition of DBpedia 2015-10 > > https://aws.amazon.com/marketplace/pp/B01HMUNH4Q/ > > <https://aws.amazon.com/marketplace/pp/B01HMUNH4Q/> > > <http://basekb.com/gold/> > > http://ontology2.com/the-book/o2dbpedia-info.html > > <http://ontology2.com/the-book/o2dbpedia-info.html> > > http://ontology2.com/book/chapter2/part1/dbpedia-examples.html > > <http://ontology2.com/book/chapter2/part1/dbpedia-examples.html> > > > > RDF: A new Slant > > http://ontology2.com/the-book/rdf-a-new-slant.html > > <http://ontology2.com/the-book/rdf-a-new-slant.html> > > <https://www.linkedin.com/grp/home?gid=8267275 > > <https://www.linkedin.com/grp/home?gid=8267275>> > > > > Data Lakes, Data Ponds, and Data Droplets > > http://ontology2.com/the-book/data-lakes-ponds-and-droplets.html > > < > http://ontology2.com/the-book/data-lakes-ponds-and-droplets.html> > > > > > > > > > > >
Received on Tuesday, 6 September 2016 20:12:13 UTC