- From: Christoph LANGE <math.semantic.web@gmail.com>
- Date: Wed, 17 Jun 2020 19:59:33 +0200
- To: public-rdf-shapes@w3.org
Dear all, tl;dr: rather than pointing to an entire _graph_ of SHACL shapes (i.e., using sh:shapesGraph), is there a standard way of pointing to a few individual shapes? The use case is to retrieve datasets that match a given shape or a small set of shapes – because the maintainer of the dataset asserted so (and, say, this assertion was confirmed by validation), or because a graph matching algorithm found a match, or whatever, we don't care. Long version: this question has come up in the context of the International Data Spaces (IDS, https://www.internationaldataspaces.org/), an architecture for trusted, secure and of course semantic data exchange. The IDS Information Model (https://github.com/International-Data-Spaces-Association/InformationModel/), which I am maintaining, is an ontology based on various W3C standards, including DCAT, ODRL, SHACL, etc. The IDS Information Model goes beyond metadata for datasets-as-a-whole (dcat:Dataset) in that it also supports talking about the structure and semantics of the _content_ of datasets. Not by re-inventing the wheel, but by recommending best practices of how to reuse VoID, Data Cube and SHACL (cf. https://github.com/International-Data-Spaces-Association/InformationModel/tree/develop/examples/domain-specific-semantics-using-SHACL). E.g., when a dataset contains data points with temperature measurements, whose unit is expressed as a string out of { "C", "K", "F" }, we can say that the dataset has a sh:shapesGraph, which contains a shape like this: ex:TemperatureDataShape a sh:NodeShape ; sh:property [ sh:path ex:unit ; sh:datatype xsd:string ; sh:in ( "C" "K" "F" ) ; ] . (My point here is not to discuss the best way of modelling such data, but to provide a simple example.) More recently, we have thought about _retrieving_ from, well, think of a dcat:Catalog, datasets that match a given shape. See https://github.com/International-Data-Spaces-Association/InformationModel/tree/develop/examples/queries-using-sparql for the overall idea, https://github.com/International-Data-Spaces-Association/InformationModel/blob/develop/examples/queries-using-sparql/SparqlQueries/src/main/resources/1_LIFE_EXPECTANCY_RESOURCE.ttl#L301 for the SHACL shapes, and https://github.com/International-Data-Spaces-Association/InformationModel/blob/develop/examples/queries-using-sparql/SparqlQueries/src/main/resources/1_LIFE_EXPECTANCY_RESOURCE.ttl#L61 for how we are linking the dataset to them. Rather than inventing our own property ids:relatesToShape, we would like to use something that conforms to the SHACL standard. At the very least, we would like to align our own property with the standard, e.g., saying that, whenever a dataset ?d has a sh:shapesGraph, which contains (*) a resource ?r of rdf:type sh:Shape, then ?d ids:relatesToShape ?r. But even for expressing the situation (*), i.e., a graph containing a resource, I am not aware of any standard property. There is rdfg:subGraphOf, but not, say, rdfg:memberOf. It should be possible to perform the given retrieval task with a SPARQL query over the dataset's metadata and the SHACL shape(s). What would you recommend? Many thanks in advance for your help, Christoph -- Dr. Christoph Lange Fraunhofer FIT: Head of Knowledge Pipelines Department http://langec.wordpress.com/about/, Skype duke4701
Received on Wednesday, 17 June 2020 17:59:48 UTC