[UI] Define the SHACL UI feature set - #1173
Conversation
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.
|
I like this very much, thanks for making (a start of) the list of features. I think it is a good start! |
danielbeeke
left a comment
There was a problem hiding this comment.
Looks good, some request for changes
| <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> |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
@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.
There was a problem hiding this comment.
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.
| </tr> | ||
| <tr> | ||
| <td>15</td> | ||
| <td id="feature-autocomplete-editor"><a href="#feature-autocomplete-editor">Auto-complete editor</a></td> |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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
left a comment
There was a problem hiding this comment.
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.
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.
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.
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). |
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.
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.
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.
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. |
Addresses the first open point of #1164 — the 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
TODOin the Conformance section ofshacl12-ui/index.htmlwith: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.
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
Proposed features (26)
sh:languageInsh:ordershui:defaultOrder)sh:group)shui:editor/shui:viewer)Boundary rationale
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.sh:orderis absent? #1162: explicitsh:orderandshui:defaultOrder(Required), unordered-member fallback (Recommended — [UI] Decision: what behaviour is defined whensh:orderis absent? #1162 proposes MUST → SHOULD, dependency noted in the draft), deterministic tie-breaking (Required) split from the specific label-then-identifier algorithm (Recommended).Open questions
SHOULD(RDF Abstract Model Compatibility). It is kept in that section rather than added as a feature; whether it should also be a reportable feature is open.Related: #1083, #1162, #1165, #1146, #1160, #1142, #823.