- From: Holger Knublauch <holger@topquadrant.com>
- Date: Tue, 10 May 2016 09:32:14 +1000
- To: public-data-shapes-wg@w3.org
On 10/05/2016 5:36, Karen Coyle wrote:
>
>
> On 5/9/16 12:14 PM, Irene Polikoff wrote:
>> Karen,
>>
>> As I understand it, RDFS inferencing is one way to address this.
>> However,
>> RDFS inferencing would do more than what is specified here. "Doing more˛
>> doesnąt create a problem, but, on the other hand, it is not required.
>>
>> Another way to address this is to run a query as follows:
>>
>> SELECT ?resource
>> WHERE {
>>
>> ?class rdfs:subClassOf* example:Class1 .
>> ?resource a ?class .
>>
>> }
>>
>> Running this query would not change any graphs.
>
> That assumes a SPARQL query - I believe that is limited to the
> extension mechanism.
>
> As an aside, RDFS
>> inferencing is also often done without modifying any graphs.
>
> We have already decided that SHACL will not do any inferencing.
>
>
> Inferences
>> are calculated on the fly when users/systems query data without any
>> materialization of inferred triples. At least, this is how triple stores
>> that support RDFS inferencing typically work.
>>
>> Does your concern have to do with where the rdfs:subClassOf triples come
>> from - would they exist in the data graph, would they exist in the
>> shapes
>> graph?
>
> The discussion is about sub/super-class relationships in the data
> graph. Section 4.2 says:
>
> "The data graph should include all the ontology axioms related to the
> data and especially all the rdfs:subClassOf triples in order for SHACL
> to correctly identify class scopes and core SHACL constraints. If such
> triples are missing, the validation could report false violations or
> miss to report some violations."
>
> I don't see anything about carrying subclasses in the shapes graph
> that would be applied to the data graph. I can vaguely imagine a
> shapes graph that (re-)defines class relationships in the data graph,
> but I don't think we've entertained that.
To avoid confusion, SHACL has two constructs where rdfs:subClassOf
triples matter, and both are in the data graph:
- sh:class
- sh:scopeClass
In neither of them any form of inferencing is needed - I would be the
last person on this mailing list to make SHACL require inferencing. All
we require is *querying* or pattern matching like SPARQL does it, and
SPARQL provides the rdfs:subClassOf* construct as a convenience, while
the same can easily be programmed in any other execution language.
Holger
>
> kc
>
> They could be in either. If no subclass triples are there, then the
>> first triple match simply binds ?class to example:Class1 and the query
>> result is the same as if we were only looking for nodes that are
>> connected
>> to example:Class1 via rdf:type link.
>>
>> It doesnąt seem to be a role of SHACL to mandate where these triples
>> should be located. If they are available in either of the graphs, a
>> SHACL
>> engine should take them into account. If they are not available, than it
>> doesnąt take them into account.
>>
>> In our experience, users typically put the subclass triples into the
>> shapes graph. At the same time, they need flexibility to do whatever
>> fits
>> their architecture and processes.
>>
>>
>> Irene Polikoff
>>
>>
>> On 5/9/16, 1:47 PM, "Karen Coyle" <kcoyle@kcoyle.net> wrote:
>>
>>> Type
>>> The types of a node are its values of rdf:type as well as the
>>> superclasses of these values.
>>>
>>> This conflates two different relationships: the relationship of a
>>> subject to a class (as defined in RDF/RDFS), defining the subject as an
>>> instance of the class; and the sub-/super-class relationships between
>>> classes. I dont' see how this can be achieved without inferencing.
>>>
>>> If we assume some pre-processing of the data graph to include the
>>> superclasses, then type is precisely as it is defined in RDF - there
>>> are
>>> just more type statements in the graph.
>>>
>>> As stated, this is quite an expansion of the meaning of type. In
>>> addition, it appears to require modifications to the data graph to
>>> include the super classes of each class (presumably up to and including
>>> rdfs:Resource).
>>>
>>> I think it would be best if SHACL defined the shape and data graphs as
>>> immutable, thus expecting that all operations read but do not modify
>>> the
>>> graphs. I thought we had come to that conclusion.
>>>
>>> kc
>>
>>
>>
>
Received on Monday, 9 May 2016 23:32:47 UTC