SHACL Rules draft review (2026-05, -06) #904
Replies: 5 comments 5 replies
|
Hi David, Thanks for this to-do agenda, very useful. My comments are below:
Cheers, |
Suggestions for what subject area that example might be? |
|
Thank you @recalcitrantsupplant,
More to come on PR #916 |
I've reworked the dependency section but not reversed R1/R2; I hope it is a bit clearer and, when completed, the examples will help. I didn't find reversing R1/R2 as that much better. "RA depends on RB" becomes "RX is a dependency for RY" which, to me, isn't that much better. |
|
PR #916 merged - I hope I have caught all comments. The document is always open for review. Issues spun off: |
Uh oh!
There was an error while loading. Please reload this page.
Starting with a discussion & happy to raise one or more PRs depending on feedback
Structural/flow
It would be good to carry one worked example through the document, including working through the stratification step by step. Probably this should be an example involving negation, but with as few triples / rules as possible so it does not bloat the document. This would also help tie Sections 3, 4 and 6 together more concretely.
In the section 3 introduction, add an explicit reference to SPARQL, as this will make it a lot easier for users with RDF/SPARQL experience to understand and connect to the head/body concepts. Perhaps this was the intention once S3.8 is complete.
Section 3.1 "Basic Usage" sticks out as a general heading where the others are "feature" centric ("Recursion" etc.). Could it be changed to a feature like heading. "Pattern Matching" is the best name I can come up with.
Data blocks should be mentioned somewhere in S3. Would seem excessive to have its own section but not sure what else it could go under.
In S6, we should add brief introductions to the evaluation subsections before the pseudocode.
Minor points
For responsibility for avoiding infinite loops (Section 1 Introduction), I wonder whether the introduction is the right place for this sentence. To what extent do end users, as opposed to implementers, need to be aware of this? End users may instead benefit from implementations that do cycle detection, have iteration limits, etc. Perhaps S3.2 (Recursion) and one of the evaluation sections in S6 are better places.
Also in the S1 introduction, the wording around stratification could be read that different outcomes from different ordering are permitted and then corrected for. The stratification should prevent different orderings though, so this could be reworded to frame this as the motivation.
Section 3.5 should say explicitly that if a
SETexpression evaluates with an error, the current solution is dropped and the rule emits nothing for that solution.In S4.3 Rule Dependency, I found the
R1/R2direction unintuitive. My instinct is to readR1as the earlier or producing rule andR2as the later or dependent rule, so for "R1 depends on R2" I need to make a mental note while reading the rest of the paragraph. I recall this was discussed previously and there was a desire to follow a mathematical convention where variables are introduced in order. If others also find this counterintuitive, I think the best solution would be to add a sentence such as: "RuleR1may produce triples which ruleR2depends on, makingR2a dependency ofR1." TheR1/R2references can then be inverted.In S4.3, the definitions of open / closed dependency are a bit repetitive between the intro and then again under "Rule dependency". Was there a merge issue here? I think the second half of this sentence was a copy paste error "matches a triple template of
R2in a negation element".@afs @simonstey @robert-david @liviorobaldo @osavkovic
All reactions