- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Sat, 25 Oct 2014 16:54:52 -0700
- To: Holger Knublauch <holger@topquadrant.com>, public-data-shapes-wg@w3.org
On 10/25/2014 03:50 PM, Holger Knublauch wrote:
>
> On 10/26/14, 8:17 AM, Peter F. Patel-Schneider wrote:
[...]
>> What are the expressive limits, if any, on the OWL ontology?
> None, if people activate OWL inferencing on the query graph then SPARQL will
> see those extra triples.
So, SPIN constraints should work correctly on OWL ontologies and constraints like:
A = B v C
a rdf:type A
B spin:constraint [ sp:text """ CONSTRUCT { _:cv a spin:ConstraintViolation }
WHERE { ?this rdf:type B } """ ]
C spin:constraint [ sp:text """ CONSTRUCT { _:cv a spin:ConstraintViolation }
WHERE { ?this rdf:type C } """ ]
or
A = E1 r . A
a rdf:type A
A spin:constraint [ sp:text """ CONSTRUCT { _:cv a spin:ConstraintViolation }
WHERE { ?this rdf:type A } """ ]
How do I find out which constraint violations are signalled in these two cases?
>>> and a graph that
>>> contains the spin:constraints attached to the classes.
>>>
>>> use owl:imports and spin:imports closure of domain graph
>> How strong is the closure? Can a spin:imports'd document owl:import another
>> document?
>
> Yes, for example if one library extends another library.
>
>>> forEach triple (?class spin:constraint ?constraint) # or sub-properties
>>> forEach ?type := rdfs:subClassOf* ?class
>> How does this interact with allowing an OWL ontology?
>
> SPIN only looks at rdfs:subClassOf, which is used by both RDFS and OWL. There
> are no dependencies on OWL at all, except that owl:imports should be observed.
I thought that OWL inferencing could be done. Is this not the case?
>>> use domain graph only
>> What about enumerations that come from the ontology?
>
> I don't understand that question.
Consider the following situation:
Domain graph:
a rdf:type A .
Ontology
B = { b }
Constraints
spin:constraint [ sp:text """ CONSTRUCT { _:cv a spin:ConstraintViolation }
WHERE { ?this rdf:type B } """ ]
Is there a constraint violation here or not? Where is this behaviour specified?
>
>>
>>> forEach ?instance of ?type
>> Does this mean "can be inferred to be an instance of" or something else?
> It only checks the presence of the rdf:type triple. Whether this is inferred
> or not is irrelevant.
What does "the presence of the rdf:type triple" mean then? I'm guessing that
this is after inference somehow, but if you allow arbitrary OWL then there can
be infinitely many instances of a class.
>>> execute ?constraint, pre-binding ?this with ?instance
>>> -> Collect resulting constraint violations
>>
>> There appears to be quite a bit more going on than this, particularly with
>> respect to ordering. Where is this extra specified?
>
> Constraints are unordered and could be executed in parallel.
As opposed to rules, which are potentially ordered, right?
>>> This algorithm is simplified and not optimized, but the main idea is that the
>>> CONSTRUCTs produce instances of spin:ConstraintViolation which are reported to
>>> the user as a constraint violation. There is no feedback loop here, i.e. the
>>> algorithm neither looks at previous instances of spin:ConstraintViolation, nor
>>> does it iterate.
>>
>> So spin:constraints with construct act differently from spin:rule with
>> construct? Where is this specified?
> It is specified in the SPIN specifications and many other documents online.
Please point me to a particular authoritative document that provides this
specification.
[...]
> Holger
Received on Saturday, 25 October 2014 23:55:24 UTC