Re: SHACL constraint on set of URI (sub)patterns

This is great, thanks a lot, Holger.

Regards,

Felix

On Tue, 18 Jun 2019 at 11:24, Holger Knublauch <holger@topquadrant.com>
wrote:

> Here is a solution with a slightly different namespace but the same rules.
> Turtle file attached, TBC screenshot below.
>
> In this solution I have attached a SPARQL query to a shape that gets
> executed over the class itself, which then becomes $this. This has the
> advantage that the inner SELECT to compute the number of instances only
> needs to be made once. The alternative to attach it via sh:targetClass
> would have caused repeated computation.
>
> (Just noticed that rdf:type is not really the predicate of the triple in
> the validation report, so you may want to just remove the ?path result from
> the SELECT).
>
> HTH
> Holger
>
> On 18/06/2019 16:31, Felix Sasaki wrote:
>
> Hi Holger,
>
> the rules applies to subjects that are instance of a given Class, e.g.
> skos:Concepts.
>
> - Felix
>
> On Tue, 18 Jun 2019 at 07:55, Holger Knublauch <holger@topquadrant.com>
> wrote:
>
>> Hi Felix,
>>
>> could you clarify one thing please: how do you define "subject" in these
>> graphs. Does the rule apply to all subjects in the whole data graph,
>> including for example owl:Ontology resources or classes, or is there a
>> relation that you only want to apply to sh:targetSubjectsOf <p> ?
>> Holger
>>
>>
>> On 18/06/2019 3:31 pm, Felix Sasaki wrote:
>>
>> Hi all,
>>
>> I have a dataset with URIs in the subject position of triples as follows:
>>
>> <http://example.com/mydata/1> p o
>> <http://example.com/mydata/2> p o
>> <http://example.com/mydata/3> p o
>> ...
>>
>> I would like to express the following constraints on all subject URIs:
>>
>> 1) The value of the URI pattern after "<http://example.com/mydata/" must
>> always be an integer (in the example 1, 2 or 3
>> 2) The integer must be more than zero and less than the number of the
>> subject URIs. That is, the third triple from the below would be invald:
>> <http://example.com/mydata/1> p o
>> <http://example.com/mydata/2> p o
>> <http://example.com/mydata/4> p o # this should  have been 3
>>
>> I tried to express this via  SPARQL constraint, but did not succeed. Any
>> hints on how to  express via SHACL would be nice - thanks.
>>
>> As some background for the use case: I am generating the URIs in an
>> automated fashion and want to assure that the generation always follows the
>> above constraints, to assure that after the generation no existing URI is
>> "lost" and to assure that new URis follow the pattern described above.
>>
>> Regards,
>>
>> Felix
>>
>>

Received on Tuesday, 18 June 2019 20:25:27 UTC