Skip to content

[UI] Define the SHACL UI feature set - #1173

Open
smessie wants to merge 5 commits into
gh-pagesfrom
ui/feature-set
Open

[UI] Define the SHACL UI feature set#1173
smessie wants to merge 5 commits into
gh-pagesfrom
ui/feature-set

Conversation

@smessie

@smessie smessie commented Aug 19, 2026

Copy link
Copy Markdown
Member

Addresses the first open point of #1164the feature set itself: what the features are and where the boundaries fall — discussed in the 18 August task-force meeting and proposed by @edmondchuc as the next step.

This is a proposal for discussion, not settled text.

What it does

Replaces the TODO in the Conformance section of shacl12-ui/index.html with:

  • Conformance defined in terms of named features. An implementation records which features it supports, and a claim always states what it covers — no unqualified "conforms to SHACL UI".
  • Interpretation vs presentation. Features constrain interpretation (which fields, order, grouping, labels, widget, value handling) and are defined so conformance is checkable from machine-readable output. Presentation (styling, layout) is unconstrained.
    This checkability depends on [UI] Decision: should the specification define a rendering model separate from presentation? #1165 — whether the specification defines an abstract rendering model, distinct from presentation, as the basis for conformance testing. If that model is not defined, the machine-readable output these features are checked against is not specified.
  • Cross-cutting contracts: no silent omission, fallback on unknown widget IRIs, extensibility beyond any required set, and presentation left unconstrained.
  • A feature catalogue: a single index table (number · feature · what supporting it means · specification sections · suggested conformance level). The authoritative behaviour of each feature stays in the linked sections; the table does not restate the normative requirements, so a section and its feature entry are not kept in sync separately (single source of truth).

Granularity principle

One rule decides the boundaries: a behaviour graded SHOULD or MAY gets its own feature, so it is independently reportable and can be marked not-required, rather than being bundled with a stronger requirement. This lets an implementation's list of supported features tell a user precisely what to expect.
Property paths are split by path kind and by view/edit mode, so a read-only viewer and an editor report path support separately.

What is in the document vs. in this PR

  • In the specification: the feature index table (number, feature, behavioural description, section mapping, suggested-level column), the cross-cutting contracts, and editor's-note / issue-box markers for provisional or not-yet-defined areas. The behavioural definition of each feature lives in the linked sections, not in the table.
  • In this PR body: the proposal framing, the granularity principle above, the boundary rationale below, and the open questions — the material meant for task-force discussion rather than the published draft.

Proposed features (26)

Feature Suggested level
Language preference via sh:languageIn Required
Application and browser language preference Recommended
Cross-language fallback Optional
Label resolution Required
Local name humanization Recommended
Direct role annotation Required
Qualified role annotation Recommended
Explicit sh:order Required
Default order configuration (shui:defaultOrder) Required
Unordered-member fallback Recommended
Deterministic tie-breaking Required
Standard tie-breaking algorithm Recommended
Grouping (sh:group) Required
Nested groups Recommended
Built-in widgets Required
Widget scoring Required
Default widget selection Recommended
Declared widgets (shui:editor/shui:viewer) Required
Widget switching Optional
Value preservation Required
Predicate and inverse paths — view Required
Predicate and inverse paths — edit Required
Alternative paths — view Recommended
Alternative paths — edit Recommended
Complex paths — view Recommended
Complex paths — edit Optional

Boundary rationale

  • Language is split into sh:languageIn (MUST → Required), application/browser preference (SHOULD → Recommended) and cross-language fallback (MAY → Optional), so an implementation without browser context can report only what it does.
  • Label resolution keeps the property and value-node chains together (both MUST) but separates local name humanization (SHOULD).
  • Property roles separate direct (Required) from qualified precedence (SHOULD, incl. the RDF 1.2 triple-annotation form).
  • Ordering follows the normative lines of [UI] Decision: what behaviour is defined when sh:order is absent? #1162: explicit sh:order and shui:defaultOrder (Required), unordered-member fallback (Recommended — [UI] Decision: what behaviour is defined when sh:order is absent? #1162 proposes MUST → SHOULD, dependency noted in the draft), deterministic tie-breaking (Required) split from the specific label-then-identifier algorithm (Recommended).
  • Grouping separates flat membership (Required) from nested groups (Recommended; the draft already makes nesting optional).
  • Widgets separate scoring (Required) from default selection (SHOULD → Recommended), declared widgets (Required), and switching (MAY → Optional).
  • Value preservation is distinct from the no-silent-omission contract: the contract covers properties an implementation cannot handle at all; the feature covers not dropping values for properties it does handle.
  • Property paths are split by kind and mode so viewing and editing are reported independently.

Open questions

Related: #1083, #1162, #1165, #1146, #1160, #1142, #823.


Address the first open point of #1164: define the set of named SHACL UI
features and where their boundaries fall, as the basis for a conformance
claim.

Replace the conformance TODO with:
- conformance stated in terms of named features, a claim always saying
  what it covers, and the interpretation/presentation boundary;
- cross-cutting contracts (no silent omission, unknown-widget fallback,
  extensibility, presentation unconstrained);
- a feature catalogue as a single index table (number, feature, a short
  description of what supporting it means, specification sections, and
  suggested conformance level). The authoritative behaviour stays in the
  linked sections; the table does not restate the normative requirements,
  so a section and its feature entry do not have to be kept in sync.

Feature boundaries follow one rule: a behaviour graded SHOULD or MAY gets
its own feature so it is independently reportable and can be marked
not-required, rather than being bundled with a stronger requirement. This
splits language, label, ordering, grouping, widget and path behaviour
accordingly; property paths are split by kind and by view/edit mode.

Suggested conformance levels are marked as suggestions via an editor's
note; the unordered-member fallback links its dependency on #1162;
features not yet defined (logical constraints, validation feedback) are
flagged with an editor's note referencing #1083 and #823.
@danielbeeke

Copy link
Copy Markdown
Contributor

I like this very much, thanks for making (a start of) the list of features.

I think it is a good start!

@danielbeeke danielbeeke left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, some request for changes

Comment thread shacl12-ui/index.html Outdated
Comment thread shacl12-ui/index.html
Comment thread shacl12-ui/index.html Outdated
Comment thread shacl12-ui/index.html Outdated
Comment thread shacl12-ui/index.html Outdated
Comment thread shacl12-ui/index.html
Comment thread shacl12-ui/index.html
<td id="feature-builtin-widgets">Built-in widgets</td>
<td>Provide the built-in editors and viewers defined by this specification so they participate in scoring and selection.</td>
<td><a href="#builtin-widgets">Built-in Widgets</a></td>
<td>Required</td>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering whether this should be recommended rather than required. We could perhaps split this so that a small set of widgets capable of handling IRIs, blank nodes, and literals are required and can be selected by the scoring system as fallbacks, while all other widgets are recommended.

The idea is that this small set of required widgets would still allow a SHACL Renderer to be functional without requiring implementations to support every widget defined by the specification.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@edmondchuc what are your thoughts on #1173 (comment)? There is a somewhat smaller set of required widgets and only the outcome is defined and not the exact IRI of the widget that must be implemented. This gives implementers freedom for example, to create an editor that handles both blank nodes and IRIs so that you can give the possibility to change a blanknode to an IRI.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the feedback, both! I've now applied @danielbeeke's suggestion from the linked comment to define the expected behavior with linked conformance levels, rather than defining the expected widget implementations to be supported.

- State that conforming to SHACL UI means supporting every required feature,
  rather than forbidding an unqualified claim.
- Drop the redundant "and to every implementation" from the contracts intro.
- Rephrase the no-silent-omission contract for readability.
- Make each feature name in the catalogue a self-link to its own row, so every
  feature has a stable fragment IRI that people can reference.
- Replace the single built-in-widgets feature with one row per built-in widget
  (16 editors, 10 viewers), each with its own conformance level. A required base
  set (one editor and one viewer each for IRI, blank node and literal values)
  gives the scoring system a functional fallback for every node kind; all other
  built-in widgets are recommended. Each widget row links to its definition.
- Note the rationale for the required base set near the catalogue.
Remove the opening sentence equating a SHACL UI implementation with a SHACL
Renderer: that term is not defined and is out of scope for the feature-set
discussion.
Comment thread shacl12-ui/index.html Outdated
</tr>
<tr>
<td>15</td>
<td id="feature-autocomplete-editor"><a href="#feature-autocomplete-editor">Auto-complete editor</a></td>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if we would record outcomes instead of specific widgets?
Also we could group them together something like:

Feature What supporting it means Specification sections Conformance level
Editor for IRIs Edit an IRI value. shui:IRIEditor Required
Editor for Blank nodes Edit a value that is a blank node via its nested shape. shui:BlankNodeEditor Required
Editors for xsd:boolean, xsd:date, xsd:dateTime, xsd:integer, xsd:double, xsd:float, xsd:decimal, xsd:string It is possible to edit literals that have these data types. shui:BooleanEditor, shui:DatePickerEditor, shui:DateTimePickerEditor, shui:NumberFieldEditor, shui:TextFieldEditor and shui:TextAreaEditor Required
Editors for rdf:langString It is possible to edit literals with language and set the language. shui:TextAreaWithLangEditor and shui:TextFieldWithLangEditor Required
Editor for rdf:HTML It is possible to edit literals that have these data types. shui:RichTextEditor Recommended

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I like this suggestion! I've applied it in c4a0222 and have also taken into account the viewers.

Instead of defining which exact built-in widgets are required, recommended, and optional, we define what behavior is expected, i.e., editing/viewing

@bergos bergos left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the feature list would be useful as a matrix mapped against use cases, to help identify profiles.

It should not become part of the specification. It's unnecessarily complex, and there are already established ways to define varying conformance within a single specification, such as profiles, conformance levels, or conformance classes. I don't see the point of introducing something new.

@nicholascar
nicholascar self-requested a review August 26, 2026 02:54
@nicholascar

Copy link
Copy Markdown
Contributor

@bergos

I think the feature list would be useful as a matrix mapped against use cases, to help identify profiles.

The Use Cases the UI Task Force has defined are informal - not registered in any way with the W3C - so they are helpful for this TF's work but they cannot be quoted in the document. I'm not sure if you were suggesting that or just a comparison of Features & Use Cases in this PR discussion.

I suggest that you, and other UI UCR authors, compare the list of Features to your Use Cases and see if you can identify any collisions, perhaps in the UCR Issues. Having the Features listed should make this easy.

Regarding Profiles:

If Features can be easily identified and their Conformance levels known, there will be no need for this specification to also articulate Profiles as well - that's another mechanism. The Required Features will make a Core, which you could think of as a Core Profile if you like but it need not be described beyond just the set of Required Features.

Others could do that after this specification's publication, for other purposes.

It should not become part of the specification.

I think it, or something like it, should. The major issue currently seems to be what things are mandatory and what are not. A listing of Features with conformance imperatives - Required, Recommended, Optional as above - would make this clear. The set of Required Features would make the Core of this specification.

It's unnecessarily complex, and there are already established ways to define varying conformance within a single specification, such as profiles, conformance levels, or conformance classes. I don't see the point of introducing something new.

I don't think this is complex: it's just a listing of the parts of SHACL UI and the level of requirement for them to be implemented.

It's true there are different ways of implementing conformance things within a specification - Conformance Classes, Profiles etc - but feature listing with imperatives is a reasonable way of doing this and it reveals the Core, as indicated above.

My only suggestion is that the features should be able to be ordered in their table based on their Conformance Level so that the Core - those with level Required - are able to be grouped easily.

I recommend that this PR be merged and the discussion about what is and isn't mandatory to be implemented be piked up per-Feature, noting that elsewhere I've suggested that data preparation for an implementing engine could likely handle at least one of your Use Cases (#1142).

@bergos

bergos commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

@nicholascar

The Use Cases the UI Task Force has defined are informal - not registered in any way with the W3C - so they are helpful for this TF's work but they cannot be quoted in the document. I'm not sure if you were suggesting that or just a comparison of Features & Use Cases in this PR discussion.

I was proposing that we use the current list of features to compare against the use cases, and then shape the concepts based on that outcome. Since that's not part of this PR, it probably shouldn't happen here.

Regarding Profiles:

If Features can be easily identified and their Conformance levels known, there will be no need for this specification to also articulate Profiles as well - that's another mechanism. The Required Features will make a Core, which you could think of as a Core Profile if you like but it need not be described beyond just the set of Required Features.

Others could do that after this specification's publication, for other purposes.

I agree with that. I made the same point with different wording here: #1164 (comment). I wanted to continue the discussion in the issue I created for that topic, as requested, but no feedback has come through yet.

If we agree to work with concepts, we also agree on profiles. Otherwise, structuring the specification into concepts does not make sense. The set of concepts an implementation supports would already be a profile, at a very low level. I hope we can agree on profiles at a higher level of abstraction.

It should not become part of the specification.

I think it, or something like it, should. The major issue currently seems to be what things are mandatory and what are not. A listing of Features with conformance imperatives - Required, Recommended, Optional as above - would make this clear. The set of Required Features would make the Core of this specification.

The features, as currently structured, can't be traced back to their actual definitions. A single feature may correspond to just part of a sentence, or to an entire paragraph within a section. For example, look at the features listed for Grouping, Ordering, and Layout Hints, then compare them against that section itself.

It's unnecessarily complex, and there are already established ways to define varying conformance within a single specification, such as profiles, conformance levels, or conformance classes. I don't see the point of introducing something new.

I don't think this is complex: it's just a listing of the parts of SHACL UI and the level of requirement for them to be implemented.

What I actually requested — and this is why I use the term "concepts" to distinguish them from "features" — is a list where each entry maps to a clearly defined, discrete part of the specification.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

UI For SHACL 1.2 UI spec

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants