- From: Christoph LANGE <math.semantic.web@gmail.com>
- Date: Thu, 18 Jun 2020 10:36:30 +0200
- To: Irene Polikoff <irene@topquadrant.com>
- Cc: public-rdf-shapes@w3.org
Hi, On 2020-06-17 20:55, Irene Polikoff wrote: > It is expected that owl:imports in a data graph is used to refer to a shapes graph data is based on. really? Isn't it rather like this that a data graph should refer to a shapes graph via sh:shapesGraph? (https://www.w3.org/TR/shacl/#sh-shapes-graph) – and that shapes graphs can reuse other shapes graphs using owl:imports? In any case that's not what I would like to do. I would like to link from a data graph to one or a few individual sh:Shape's, like we did with the following non-standard property: ex:DataGraph a dcat:Dataset ; ids:relatesToShape ex:PersonShape . # <-- here ex:PersonShape a sh:NodeShape ; sh:targetClass ex:Person ; sh:property [ sh:path ex:email ; sh:minCount 1 ] . For my retrieval use case, I would imagine queries such as "please tell me all datasets in which there are persons with email addresses". (I know that that's not exactly what this shape says, because it would also successfully validate a data graph without any persons.) > Of course, the shapes graph could contain shapes that go beyond what is in the data e.g., data may be about people and the shapes graph has shapes for people as well as companies. But typically ontologies (by ontologies, I broadly mean schema definitions in SHACL) are modular and organized based on the domain of interest. > > Further, shapes target data and the most common target uses classes. Thus, it is easy to figure out the relationship between shapes and instance data and vice versa - simply follow the target. Correct, but that's not my use case. Given the above example, I don't have the need to follow the link ex:PersonShape sh:targetClass ex:Person in order to find data graphs that contain instances of ex:Person, and then to check whether these instances validate against ex:PersonShape. I simply trust the data catalogue's maintainer when they say "ex:DataGraph validates against ex:PersonShape" (in the sense of "validation of a data graph against a shape", cf. https://www.w3.org/TR/shacl/#validation-definition). > A shape like the one below does not “do” anything without the target. One very pattern is to specify targets together with the shape - either explicitly or implicitly be declaring a node shape to also be a class. Sure, I agree that my first example was confusing because I omitted the sh:targetClass. > When shapes are re-used for different data, you can declare your class as a subclass of the target class. This would look as follows: […] Thank you, that's useful to know, but not my use case. Cheers, Christoph -- Dr. Christoph Lange Fraunhofer FIT: Head of Knowledge Pipelines Department http://langec.wordpress.com/about/, Skype duke4701
Received on Thursday, 18 June 2020 08:36:50 UTC