Skip to content

Issue 869#900

Open
robert-david wants to merge 7 commits into
gh-pagesfrom
issue-869
Open

Issue 869#900
robert-david wants to merge 7 commits into
gh-pagesfrom
issue-869

Conversation

@robert-david

@robert-david robert-david commented May 22, 2026

Copy link
Copy Markdown
Contributor

@robert-david robert-david requested review from bergos and edmondchuc May 22, 2026 11:01
@edmondchuc edmondchuc added the UI For SHACL 1.2 UI spec label May 26, 2026
Comment thread shacl12-ui/index.html Outdated
<p>
A shapes graph may contain a <a>SHACL instance</a> of the class <code>shui:Configuration</code>
to define global configuration properties for rendering the UI.
<code>shui:Configuration</code> is a <a>SHACL subclass</a> of <code>sh:Graph</code>

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.

Suggested change
<code>shui:Configuration</code> is a <a>SHACL subclass</a> of <code>sh:Graph</code>
<code>sh:Graph</code> is a <a>SHACL subclass</a> of <code>shui:Configuration</code>

The order should be reversed. A sh:Graph should be a subtype of sh:Configuration, making it possible to attach configuration properties directly. However, making every sh:Configuration a sh:Graph would prevent nested or alternative configurations from coexisting in the same graph.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggesting an additional trailing dot.

Suggested change
<code>shui:Configuration</code> is a <a>SHACL subclass</a> of <code>sh:Graph</code>
<code>sh:Graph</code> is a <a>SHACL subclass</a> of <code>shui:Configuration </code>.

Comment thread shacl12-ui/index.html Outdated
<td><code>shui:defaultNamespace</code></td>
<td>
The default namespace used to construct fresh user-added nodes.
The value of <code>shui:defaultNamespace</code> is an <a>IRI</a>.

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.

Suggested change
The value of <code>shui:defaultNamespace</code> is an <a>IRI</a>.
The value of <code>shui:defaultNamespace</code> is a <a>Literal</a> whose value is a valid IRI.

It should be a literal whose value is an IRI. The default namespace is not itself a resource — the IRIs derived from it will be.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@bergos, so do I understand it correctly that you suggest to use rather shui:defaultNamespace "http://example.com/ns#" instead of shui:defaultNamespace <http://example.com/ns#> ;?

I see now in #869 it was also suggested as a Literal. Beware that we'll then have to update this example in the PR accordingly.

Comment thread shacl12-ui/index.html Outdated
Comment on lines 1533 to 1605
@@ -1471,13 +1552,13 @@ <h4>Property Labels</h4>
</li>
<li>
If <var>P</var> is a predicate IRI and the <a>data graph</a>
contains one or more <code>rdfs:label</code> triples with subject <var>P</var>, select
contains one or more triples with properties determined by <a>label resolution</a> and with subject <var>P</var>, select
the best matching value using <a>language resolution</a>. If a match is found, use
that literal as the label.
</li>
<li>
If <var>P</var> is a predicate IRI and the <a>shapes graph</a>
contains one or more <code>rdfs:label</code> triples with subject <var>P</var>, select
contains one or more triples with properties determined by <a>label resolution</a> and with subject <var>P</var>, select
the best matching value using <a>language resolution</a>. If a match is found, use
that literal as the label.
</li>
@@ -1512,13 +1593,13 @@ <h4>Value Node Labels</h4>
</li>
<li>
If the <a>data graph</a> contains one or more values for the configured property path for
the value node label resolution (defaulting to <code>rdfs:label</code>) for <var>V</var>,
the value node determined by <a>label resolution</a> for <var>V</var>,
select the best matching value using <a>language resolution</a>. If a match is found, use
that literal as the label.
</li>
<li>
If the <a>shapes graph</a> contains one or more values for the configured property path for
the value node label resolution (defaulting to <code>rdfs:label</code>) for <var>V</var>,
the value node determined by <a>label resolution</a> for <var>V</var>,
select the best matching value using <a>language resolution</a>. If a match is found, use
that literal as the label.
</li>

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.

Defining the logic once and referencing it is a good approach, given it's used four times — but "label resolution" doesn't work as the term here. Since "Property Labels" and "Value Node Labels" are already sub-sections of "Label Resolution" for specific cases, this creates a circular reference. A better approach would be to introduce a new sub-section, as was done for "Local Name Resolution". Additionally, the default should not be defined at the config level but rather within each sub-section: rdfs:label as the default for "Value Node Labels" and sh:name as the default for "Property Labels".

Comment thread shacl12-ui/index.html Outdated
<p>
A shapes graph may contain a <a>SHACL instance</a> of the class <code>shui:Configuration</code>
to define global configuration properties for rendering the UI.
<code>shui:Configuration</code> is a <a>SHACL subclass</a> of <code>sh:Graph</code>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggesting an additional trailing dot.

Suggested change
<code>shui:Configuration</code> is a <a>SHACL subclass</a> of <code>sh:Graph</code>
<code>sh:Graph</code> is a <a>SHACL subclass</a> of <code>shui:Configuration </code>.

Comment thread shacl12-ui/index.html Outdated
<td><code>shui:defaultNamespace</code></td>
<td>
The default namespace used to construct fresh user-added nodes.
The value of <code>shui:defaultNamespace</code> is an <a>IRI</a>.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@bergos, so do I understand it correctly that you suggest to use rather shui:defaultNamespace "http://example.com/ns#" instead of shui:defaultNamespace <http://example.com/ns#> ;?

I see now in #869 it was also suggested as a Literal. Beware that we'll then have to update this example in the PR accordingly.

Comment thread shacl12-ui/index.html
<td>
The language selection for displaying labels in widgets.
The value of <code>shui:hasLanguagePreference</code> is a well-formed SHACL list where all members are language tags.
The preferred language is determined according to the order of priority in the list from beginning (highest) to end (lowest ).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I find the description of an empty Literal behavior useful to add as well. Also a redundant space.

Suggested change
The preferred language is determined according to the order of priority in the list from beginning (highest) to end (lowest ).
The preferred language is determined according to the order of priority in the list from beginning (highest) to end (lowest).
An empty literal (`""`) represents no language, i.e., a string literal with no language tag.

Comment thread shacl12-ui/index.html Outdated
<td><code>shui:timeZone</code></td>
<td>
The time zone used to construct new terms with <a>datatype</a> <code>xsd:dateTime</code>.
The value of <code>shui:timeZone</code> is <code>xsd:string</code>.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
The value of <code>shui:timeZone</code> is <code>xsd:string</code>.
The value of <code>shui:timeZone</code> is of datatype <code>xsd:string</code>.

Comment thread shacl12-ui/index.html Outdated
<tr>
<td><code>shui:shapesLabelPreference</code></td>
<td>
The label properties used to determine labels to display in widgets.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
The label properties used to determine labels to display in widgets.
The properties used to determine the labels to display in widgets.

Comment thread shacl12-ui/index.html Outdated
<td>
The label properties used to determine labels to display in widgets.
Properties are looked up in the <a>shapes graph</a>.
The value of <code>shui:shapesLabelPreference</code> is a well-formed SHACL list where all members are IRIs.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I guess the order is of relevance here as well?

Suggested change
The value of <code>shui:shapesLabelPreference</code> is a well-formed SHACL list where all members are IRIs.
The value of <code>shui:shapesLabelPreference</code> is a well-formed SHACL list where all members are IRIs.
A label is determined by evaluating the properties according to the order of priority in the list from beginning (highest) to end (lowest).

Comment thread shacl12-ui/index.html Outdated
Comment on lines +729 to +731
The label properties used to determine labels to display in widgets and labels to represent nodes values in the widgets.
Properties are looked up in the <a>data graph</a>.
The value of <code>shui:dataLabelPreference</code> is a well-formed SHACL list where all members are IRIs.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

idem

Suggested change
The label properties used to determine labels to display in widgets and labels to represent nodes values in the widgets.
Properties are looked up in the <a>data graph</a>.
The value of <code>shui:dataLabelPreference</code> is a well-formed SHACL list where all members are IRIs.
The properties used to determine the labels to display in widgets and the labels to represent value nodes in the widgets.
Properties are looked up in the <a>data graph</a>.
The value of <code>shui:dataLabelPreference</code> is a well-formed SHACL list where all members are IRIs.
A label is determined by evaluating the properties according to the order of priority in the list from beginning (highest) to end (lowest).

Comment thread shacl12-ui/index.html Outdated
Comment on lines +740 to +742
shui:defaultNamespace &lt;http://example.com/ns#&gt; ;
shui:hasLanguagePreference ("" "en" "de") ;
shui:hasTimeZone "Europe/Vienna" ;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
shui:defaultNamespace &lt;http://example.com/ns#&gt; ;
shui:hasLanguagePreference ("" "en" "de") ;
shui:hasTimeZone "Europe/Vienna" ;
shui:defaultNamespace "http://example.com/ns#" ;
shui:languagePreference ("" "en" "de") ;
shui:timeZone "Europe/Vienna" ;

Comment thread shacl12-ui/index.html
<ul>
<li>A UI feature that allows the user to select a preferred display language or languages priorities.</li>
<li>A predefined language configuration in the application settings.</li>
<li>A <a>global configuration</a> using the property <code>shui:hasLanguagePreference</code>.</li>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
<li>A <a>global configuration</a> using the property <code>shui:hasLanguagePreference</code>.</li>
<li>A <a>global configuration</a> using the property <code>shui:languagePreference</code>.</li>

Comment thread shacl12-ui/index.html Outdated
<td>
The label properties used to determine labels to display in widgets.
Properties are looked up in the <a>shapes graph</a>.
The value of <code>shui:shapesLabelPreference</code> is a well-formed SHACL list where all members are IRIs.

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 remember vaguely that we also discussed using SHACL property paths here so that we would have support for skosxl:literalForm and others.

@robert-david robert-david requested a review from bergos June 6, 2026 13:32
Comment thread shacl12-ui/index.html
<div class="turtle">
ex:config a shui:Configuration ;
shui:defaultNamespace &lt;http://example.com/ns#&gt; ;
shui:defaultNamespace "&lt;"http://example.com/ns#" ;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I may be misreading, but it seems that this URI markup is broken. I think this fixes it.

Suggested change
shui:defaultNamespace "&lt;"http://example.com/ns#" ;
shui:defaultNamespace "&lt;http://example.com/ns#&gt;" ;

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.

Global configuration for SHACL UI

6 participants