- From: Kurt Cagle <kurt.cagle@gmail.com>
- Date: Mon, 23 Sep 2024 12:43:39 -0700
- To: Vladimir Alexiev <vladimir.alexiev@ontotext.com>
- Cc: David Habgood <dcchabgood@gmail.com>, public-shacl@w3.org
- Message-ID: <CALm0LSHq2c1ggbXkHfdLjepUx-iEfwt1Nrhf+UZRMv5Qyf5qAQ@mail.gmail.com>
Also, Flores Bakker has been working on an rdf representation of sparql that is coming along very well. There may be some overlap here. On Mon, Sep 23, 2024, 12:40 Kurt Cagle <kurt.cagle@gmail.com> wrote: > This looks like it may be incredibly useful. > > On Mon, Sep 23, 2024, 12:07 Vladimir Alexiev < > vladimir.alexiev@ontotext.com> wrote: > >> These may be useful: >> >> https://shape-fragments.github.io/shape-fragments-spec/ >> https://github.com/Shape-Fragments/SHACL2SPARQL >> https://github.com/MaximeJakubowski/ssf_project >> https://github.com/MaximeJakubowski/sls_project >> >> >> On Mon, Sep 23, 2024 at 2:57 PM David Habgood <dcchabgood@gmail.com> >> wrote: >> >>> Hi all, >>> >>> I have a library which generates SPARQL queries from SHACL, mostly to >>> support two use cases. The first is listing sets of items, or focus nodes, >>> with constraints on which items are selected. I find this one quite >>> straightforward in SHACL. The second is describing individual objects, i.e. >>> which properties should be included/and or excluded when describing an >>> individual focus node. This one I find less clear - I can see there are a >>> series of SHACL predicates which are relevant, but it's unclear to me if >>> there's a "canonical" way this should be done. >>> >>> My question is whether there's a canonical way to do Use Case 2, and if >>> not, should this form part of the use cases SHACL covers in future or be a >>> part of a SHACL extension. >>> >>> In detail my use cases are: >>> >>> Use Case 1: >>> I want to describe the selection of a set of focus nodes, based on one >>> or a combination of the following focus node attributes: >>> - the class of the focus nodes >>> - the focus nodes' relationship to a specified node (e.g. is member of x) >>> - the focus nodes' relationship to nodes of a specified class (e.g. the >>> dcat:Catalogs that contain any dcat:Dataset, dcat:Resource etc.) >>> - the presence or abscence of properties on the focus nodes, including >>> via path relations (inverse, sequence etc.) >>> >>> Use Case 2: >>> I want to describe a focus node by choosing one of the following two >>> methods: >>> 1. >>> a. including all direct properties, except: >>> - excluding any properties explicitly stated including via path >>> relations (inverse, sequence etc.). (e.g. when describing a dcat:Dataset, >>> not listing it's large number of members) >>> - including any properties explicitly stated via "indirect" path >>> relations (inverse, sequence etc.) >>> b. inclusion of blank nodes to a specified depth >>> >>> 2. >>> a. excluding all direct/indirect properties, except: >>> - including any properties explicitly stated via direct and indirect >>> path relations (inverse, sequence etc.) >>> b. inclusion of blank nodes to a specified depth >>> >>> If SHACL predicates are reused across both use cases I want a clear way >>> to distinguish which they are being used for. E.g. is a SHACL expression >>> which in some way specifies dcterms:hasPart being used to describe how to >>> select a set of focus nodes, or how to describe each focus node. At present >>> I've used extension predicates for the blank node depth and "include all >>> properties" concepts. >>> >>> Thanks, >>> David >>> >>
Received on Monday, 23 September 2024 19:43:56 UTC