Repository navigation
Conversation
jdsika
force-pushed
the
feat/shaclgen-has-member-qualified-value-shape
branch
from
October 2, 2026 15:08
21e4983 to
a0b2c05
Compare
jdsika
changed the base branch from
feat/shaclgen-class-boolean-expressions
to
feat/shaclgen-inlined-range-sh-node
October 2, 2026 15:08
jdsika
force-pushed
the
feat/shaclgen-inlined-range-sh-node
branch
from
October 2, 2026 15:13
5db175a to
111a453
Compare
jdsika
force-pushed
the
feat/shaclgen-has-member-qualified-value-shape
branch
from
October 2, 2026 15:13
a0b2c05 to
883509a
Compare
jdsika
force-pushed
the
feat/shaclgen-inlined-range-sh-node
branch
3 times, most recently
from
October 5, 2026 09:52
937b986 to
3f14cf9
Compare
jdsika
marked this pull request as draft
October 5, 2026 11:26
Translate has_member to SHACL qualified minimum counts using the shared contextual value translator. Preserve ordinary class membership, reject unsupported slot-level expressions, and keep repeated bounds conjunctive. Correct JSON Schema contains for explicit ranges, empty expressions, inlined members and contextual collection metadata. Validate generated artifacts with both consumers and document representation boundaries. Signed-off-by: jdsika <carlo.van-driesten@vdl.digital>
jdsika
force-pushed
the
feat/shaclgen-has-member-qualified-value-shape
branch
from
October 5, 2026 11:47
883509a to
c94f379
Compare
jdsika
marked this pull request as ready for review
October 5, 2026 12:01
3 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A multivalued slot's
has_memberrequires at least one value satisfying an expression. SHACL previously ignored it, accepting collections with no matching member. Emitsh:qualifiedValueShapewithsh:qualifiedMinCount 1, on ordinary slots and contextual class slot conditions. Correct JSON Schema's correspondingcontainstranslation so it retains explicit member ranges, empty expressions, collection inlining and the owning class's slot context.This is stacked on #30's reviewed contextual-range implementation. No new flag: ordinary class ranges retain their RDF class-membership requirement, and
range_expressionsupplies contextual constraints.Contract and references
multivalued: true; single-valued SHACL uses are rejected.Reuse the scalar slot-condition translator and its supported-field definitions rather than maintaining another member-specific list. Cover explicit ranges, numeric bounds, patterns, string/numeric equality, scalar constant
equals_expression, and nestedrange_expression. Repeated numeric constraints remain conjunctive. Enum meanings and URI-family class identifiers use RDF terms. Unsupported slot-level member expressions fail instead of silently disappearing; the existing whole-operator warning/skip behavior for unsupported class logical expressions is retained.Cross-generator findings and boundaries
has_member: {}requiring a member.containsdoes not validate an omitted optional property, while the SHACL qualified minimum rejects zero arcs. Userequired: truefor portable existence requirements. This boundary is tested and documented, not hidden behind an option.all_membersand direct boolean operators inside SHACL member expressions remain unsupported. JSON Schema does not translate scalarequals_expression; use dedicated equality fields for portable constraints.Origin and validation
The downstream SimulationManifest requirement is generic: at least one artifact from each of four categories. It is expressible with existing
all_of,slot_conditions,has_memberandrange_expression; no project vocabulary is encoded in the compiler. A read-only consumer probe used the actual migrated OMB schema's generated membership expressions and the existing missing-media fixture's category projection: rejection without media, acceptance with media, rejection when any category is removed, and rejection of an uncategorized substitute. This focused probe is not a claim of complete downstream model equivalence; the real OMB checkout remains unchanged.Final head
c94f379d131964e4c7c6ec10bef8756975957b5ais one signed commit on the revised #30 base. All 17 exact-head CI checks passed, including the package build: workflow.