- From: Holger Knublauch <holger@topquadrant.com>
- Date: Sat, 19 Sep 2015 09:26:47 +1000
- To: public-data-shapes-wg@w3.org
This sounds like a very fundamental change to the language. I believe
this topic should have been raised half a year ago. Could you create a
branch of the spec and work out how all this can be implemented?
How would it work with rdfs:subClassOf, if a shape attached to a
subclass narrows down the sh:valueClass of a property defined for the
superclass?
What would be the meaning of sh:hasValue combined with minCount/maxCount?
How would this work with constraint properties added via the extension
mechanism (sub-templates of sh:PropertyConstraint such as
sh:uniqueLanguage=true)?
Also note that the proposed changes would be very surprising for people
with an OWL background, where multiple occurrence (of owl:Restrictions)
behaves in the same way as in SHACL. I personally find the
interpretation that you propose very unintuitive and complicating.
Holger
On 9/18/15 10:53 PM, Eric Prud'hommeaux wrote:
> I have been working with Karen Coyle and Tom Baker of Dublin Core on
> the following critique of the drafted behavior of repeated properties
> in SHACL. We discussed usability issues and lessons learned with
> respect to Description Set Profile semantics.
>
>
>
> In 2008, DCMI did an analysis evaluating the Scholarly Works
> Application Profile (SWAP DSP), a deliverable of a UK project led by
> UKOLN, for conformance with DCMI's then-current model for DSPs. They
> tested whether the DSPs written by modelers matched their intended
> semantics.
>
> The DSPs failed to behave as modelers' expected; modelers were using
> generic properties like dc:type multiple times with the expectation
> that each constraint would correspond to one triple in the graph. An
> example of this is the resuse of dc:type within a description of an
> expression of an Eprint (it's a library thing). The SWAP DSP for
> this included two dc:type arcs with values of <Expression>¹ and
> <JournalArticle>².
>
> ¹ http://www.ukoln.ac.uk/repositories/digirep/index/Scholarly_Works_Application_Profile#Entity_type_2
> ² http://www.ukoln.ac.uk/repositories/digirep/index/Scholarly_Works_Application_Profile#Type
>
>
> The SWAP DSP was found not to conform to the guidelines, because the
> guidelines specified a matching algorithm whereby each statement in
> the data was assumed to match just one statement template with a
> given property constraint. In SWAP, a single property (dc:type) was
> used in two different templates for statements describing the same
> resource, ¹ and ² above.
>
> At the time, DCMI saw this result as a problem more of the matching
> algorithm than of the SWAP DSP itself. It is not all that uncommon
> in the community of DC users for a property to be used with
> different constraints. To assume otherwise, at any rate, seemed
> needlessly restrictive.
>
> Repeated properties are common in Cultural Heritage data, one of the
> communities served by DCMI, and these communities are actively
> converting their models to make use of RDF. One of the more
> promising models is coming from the Library of Congress, and is
> called BIBFRAME. First, consider an example from Bibframe where each
> bf:Person must have only one bf:identifiedBy and it must come from
> id.loc.gov:
>
> Instance data example:
> <bf_Person1>
> bf:identifiedBy <http://id.loc.gov/authorities/names/n80103961> .
>
> ShEx:
> <BFPersonInterface1> {
> bf:identifiedBy IRI PATTERN "^http://id.loc.gov/"
> }
>
> SHACL:
> <BFPersonInterface1> sh:property [
> sh:predicate bf:identifiedBy ; sh:pattern "^http://id.loc.gov/"
> ] .
>
>
> Another option in BIBFRAME is to have one or more additional
> bf:identifiedBys coming from another source list, such as viaf.org:
>
> Instance data example:
> <bf_Person1>
> bf:identifiedBy <http://id.loc.gov/authorities/names/n80103961#RWO> ;
> bf:identifiedBy <https://viaf.org/viaf/268367832/#Knape,_Joachim> .
>
> ShEx:
> <BFPersonInterface1> {
> bf:identifiedBy IRI PATTERN "^http://id.loc.gov/" ,
> bf:identifiedBy IRI PATTERN "^http://viaf.org/" +
> }
>
> With SHACL, users have to remember to use "Qualified" counts and
> because SHACL defaults to an open graph, the constraints below do
> not prohibit additional bf:identifiedBy properties:
>
> SHACL:
> <BFPersonInterface1> sh:property [
> sh:predicate bf:identifiedBy ; sh:pattern "^http://id.loc.gov/" ;
> sh:minQualifiedCount 1 ; sh:maxQualifiedCount 1
> ], [
> sh:predicate bf:identifiedBy ; sh:pattern "^http://viaf.org/" ;
> sh:minQualifiedCount 1
> ] .
>
> ... would return true for the instance with two bf:identifiedBy
> predicates, but would also erroneously match
>
> <bf_Person1>
> bf:identifiedBy <http://id.loc.gov/authorities/names/n80103961#RWO> ;
> bf:identifiedBy <https://viaf.org/viaf/268367832/#Knape,_Joachim> ;
> bf:identifiedBy "this is a mistake" . # should be an error
>
> If we invent a new construct to handle this, say
> [
> sh:predicate bf:identifiedBy ; sh:patterns
> ("^http://viaf.org/" "^http://viaf.org/");
> sh:minQualifiedCount 1
> ]
> , the cost of repeated properties is painfully high.
>
> =PROPOSAL=
>
> There are plenty of use cases for repeated properties. We propose that
> the syntax for repeated property constraints be identical to that for
> single property constraints, i.e. that
>
> <BFPersonInterface1> sh:property [
> sh:predicate bf:identifiedBy ; sh:pattern "^http://id.loc.gov/" ;
> sh:minCount 1 ; sh:maxCount 1
> ], [
> sh:predicate bf:identifiedBy ; sh:pattern "^http://viaf.org/" ;
> sh:minCount 1
> ] .
>
> is matched by any node with arcs that satisfy each of the property
> requirements.
>
> pass:
> <bf_Person1>
> bf:identifiedBy <http://id.loc.gov/authorities/names/n80103961#RWO> ;
> bf:identifiedBy <https://viaf.org/viaf/268367832/#Knape,_Joachim> .
>
> <bf_Person1>
> bf:identifiedBy <http://id.loc.gov/authorities/names/n80103961#RWO> ;
> bf:identifiedBy <https://viaf.org/viaf/268367832/#Knape,_Joachim,T> .
>
> fail:
> <bf_Person1> # missing id.loc.gov id
> bf:identifiedBy <https://viaf.org/viaf/268367832/#Knape,_Joachim> .
>
> <bf_Person1> # unrecognized identifiedBy property
> bf:identifiedBy <http://id.loc.gov/authorities/names/n80103961#RWO> ;
> bf:identifiedBy <https://viaf.org/viaf/268367832/#Knape,_Joachim> ;
> bf:identifiedBy "this is a mistake" .
>
> <bf_Person1> # too many id.loc.gov ids
> bf:identifiedBy <http://id.loc.gov/authorities/names/n80103961#RWO> ;
> bf:identifiedBy <http://id.loc.gov/authorities/names/n80103961#RWOXT> ;
> bf:identifiedBy <https://viaf.org/viaf/268367832/#Knape,_Joachim> .
>
>> --
>> Karen Coyle
>> kcoyle@kcoyle.net http://kcoyle.net
>> m: 1-510-435-8234
>> skype: kcoylenet/+1-510-984-3600
Received on Friday, 18 September 2015 23:27:23 UTC