- From: Simon Steyskal <simon.steyskal@gmail.com>
- Date: Mon, 5 Sep 2016 07:49:05 +0200
- To: Antoine Zimmermann <antoine.zimmermann@emse.fr>
- Cc: Paul Houle <ontology2@gmail.com>, Graham Klyne <gk@ninebynine.org>, "semantic-web@w3.org" <semantic-web@w3.org>
- Message-ID: <CACBz3FpuJ7kkP1AcNPZh7_kPg61z8A3w0v2XJ5xRrNfbYdekNQ@mail.gmail.com>
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 ;
] .
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.
----
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>:
> 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>> 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
>> >.
>>
>>
>> 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/#Propert
>> y_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 paul.houle on Skype ontology2@gmail.com
>> <mailto:ontology2@gmail.com>
>>
>> Ontology2 Edition of DBpedia 2015-10
>> https://aws.amazon.com/marketplace/pp/B01HMUNH4Q/ <
>> http://basekb.com/gold/>
>> http://ontology2.com/the-book/o2dbpedia-info.html
>> http://ontology2.com/book/chapter2/part1/dbpedia-examples.html
>>
>> RDF: A new Slant
>> http://ontology2.com/the-book/rdf-a-new-slant.html
>> <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
>>
>
>
>
Received on Monday, 5 September 2016 05:49:36 UTC