- From: Holger Knublauch <holger@topquadrant.com>
- Date: Wed, 19 Aug 2015 10:08:45 +1000
- To: public-data-shapes-wg@w3.org
- Message-ID: <55D3C90D.8010209@topquadrant.com>
On 8/18/2015 10:13, Holger Knublauch wrote:
> On 8/18/2015 2:04, Miika Alonen wrote:
>> This is related to the ISSUE-80, but still separate matter.
>>
>> One way of referencing classifications etc. would be to create lists
>> from existing concepts. However, if you create such lists then you
>> should also describe how the list is created and add some human
>> readable documentation to it. I tried to think of a way to validate
>> data that references to members in skos:Collection. You could
>> validate skos:Collections with skos:member using inverse property
>> constraints, but skos:memberList is bit difficult. I tried to refence
>> the same list (blank node) in both skos:memberList and
>> sh:allowedValues but it seems that its a bad idea.
>>
>> Could it be possible to support instances of skos:Collection with the
>> sh:allowedValues predicate? Allowed values could come from the list
>> defined by skos:memberList. This would also mean that you could reuse
>> the same value lists in multiple constraints. Same functionality
>> could also be achieved by creating similar sh:Collection and
>> sh:memberList to the SHACL specification.
>
> I believe this is technically no problem, although I would prefer to
> introduce a new keyword such as sh:allowedValuesCollection. But a
> question is whether SHACL can/should support on anything from the SKOS
> namespace. SKOS is popular and well-established, and I think it would
> be better to reuse skos:Collection instead of creating yet another
> variation of it. However, the layering feels a bit weird for the SHACL
> Core Language. For example, if we were to add SKOS constraints, then
> why not schema:Enumeration or Hydra Collection?
>
> I don't want to sound like a broken record, but I believe such things
> would be best handled by a separate SHACL vocabulary, such as
> SHACL-SKOS. That library could also hold the other SKOS-related
> constraints, such as those captured as User Story 21:
>
> http://www.w3.org/TR/2015/WD-shacl-ucr-20150414/#uc21-skos-constraints
>
> Such work could be outsourced to a corresponding special interest group.
FWIW I have ported the small SKOS library used by TopBraid from SPIN to
SHACL, and this now also includes a template for allowed values based on
SKOS collections, e.g.
skos-shacl-test:CollectionTestClass
a sh:ShapeClass ;
sh:property [
a shskos:CollectionPropertyConstraint ;
sh:allowedValuesCollection skos-shacl-test:OrderedCollection_1 ;
sh:predicate skos-shacl-test:myProperty ;
] ;
.
skos-shacl-test:OrderedCollection_1
a skos:OrderedCollection ;
skos:member skos-shacl-test:A ;
skos:member skos-shacl-test:B ;
skos:member skos-shacl-test:C ;
skos:memberList (
skos-shacl-test:A
skos-shacl-test:B
skos-shacl-test:C
) ;
.
skos-shacl-test:CollectionTestInstance
a skos-shacl-test:CollectionTestClass ;
skos-shacl-test:myProperty skos-shacl-test:A ;
skos-shacl-test:myProperty skos-shacl-test:Other ; # Invalid
.
While doing this I got reminded that these two patterns happen quite
frequently:
- shskos:DisjointPropertyPairConstraint (?predicate1, ?predicate2)
- shskos:UniqueLanguagePropertyConstraint (?predicate)
The WG may want to add those to the Core language, and I have opened two
corresponding tickets to discuss their inclusion:
https://www.w3.org/2014/data-shapes/track/issues/81
https://www.w3.org/2014/data-shapes/track/issues/82
Holger
Attachments
- text/plain attachment: skos.shacl.ttl
Received on Wednesday, 19 August 2015 00:09:21 UTC