Date: Mon, 5 Jan 2026 12:59:31 +0100
Subject: [PATCH 07/26] feat(ui): add details editor score
---
shacl12-ui/index.html | 4 ++--
shacl12-ui/widgets/editors/details-editor.ttl | 9 +++++++++
shacl12-ui/widgets/score-shapes.ttl | 7 +++++++
3 files changed, 18 insertions(+), 2 deletions(-)
create mode 100644 shacl12-ui/widgets/editors/details-editor.ttl
diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html
index ce6906d3..976556b0 100644
--- a/shacl12-ui/index.html
+++ b/shacl12-ui/index.html
@@ -1120,8 +1120,8 @@ shui:DetailsEditor
Score:
- null for non-literals, i.e., it can be selected manually via shui:editor.
- - 0 otherwise.
+ 0 for non-literals, i.e., it can be selected manually via shui:editor.
+ 0 otherwise.
diff --git a/shacl12-ui/widgets/editors/details-editor.ttl b/shacl12-ui/widgets/editors/details-editor.ttl
new file mode 100644
index 00000000..bb1f79f3
--- /dev/null
+++ b/shacl12-ui/widgets/editors/details-editor.ttl
@@ -0,0 +1,9 @@
+PREFIX shui:
+PREFIX xsd:
+
+shui:detailsEditorScore0
+ a shui:WidgetScore ;
+ shui:score 0 ;
+ shui:shapesGraphShape shui:isNotLiteral ;
+ shui:widget shui:DetailsEditor ;
+.
diff --git a/shacl12-ui/widgets/score-shapes.ttl b/shacl12-ui/widgets/score-shapes.ttl
index 4eaa4955..2e7e9bc9 100644
--- a/shacl12-ui/widgets/score-shapes.ttl
+++ b/shacl12-ui/widgets/score-shapes.ttl
@@ -39,3 +39,10 @@ shui:literalsAllowedAndNoDatatypeSpecified
sh:path sh:datatype ;
] ;
.
+
+shui:isNotLiteral
+ a sh:NodeShape ;
+ sh:not [
+ sh:nodeKind sh:Literal ;
+ ] ;
+.
From 1186abfd15c8d30a0fe7860e2c57222461bd72a1 Mon Sep 17 00:00:00 2001
From: smessie
Date: Mon, 5 Jan 2026 13:44:51 +0100
Subject: [PATCH 08/26] feat(ui): add enum select editor score
---
shacl12-ui/index.html | 2 +-
shacl12-ui/widgets/editors/enum-select-editor.ttl | 9 +++++++++
shacl12-ui/widgets/score-shapes.ttl | 9 +++++++++
3 files changed, 19 insertions(+), 1 deletion(-)
create mode 100644 shacl12-ui/widgets/editors/enum-select-editor.ttl
diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html
index 976556b0..f54dbb73 100644
--- a/shacl12-ui/index.html
+++ b/shacl12-ui/index.html
@@ -1192,7 +1192,7 @@ shui:EnumSelectEditor
Score:
- 10 if there exists a
sh:in constraint for the same property at the current focus node.
- - 0 otherwise.
+ 0 otherwise.
diff --git a/shacl12-ui/widgets/editors/enum-select-editor.ttl b/shacl12-ui/widgets/editors/enum-select-editor.ttl
new file mode 100644
index 00000000..5942e6cf
--- /dev/null
+++ b/shacl12-ui/widgets/editors/enum-select-editor.ttl
@@ -0,0 +1,9 @@
+PREFIX shui:
+PREFIX xsd:
+
+shui:enumSelectEditorScore10
+ a shui:WidgetScore ;
+ shui:score 10 ;
+ shui:shapeGraphShape shui:hasInConstraint ;
+ shui:widget shui:EnumSelectEditor ;
+.
diff --git a/shacl12-ui/widgets/score-shapes.ttl b/shacl12-ui/widgets/score-shapes.ttl
index 2e7e9bc9..6ce64201 100644
--- a/shacl12-ui/widgets/score-shapes.ttl
+++ b/shacl12-ui/widgets/score-shapes.ttl
@@ -46,3 +46,12 @@ shui:isNotLiteral
sh:nodeKind sh:Literal ;
] ;
.
+
+shui:hasInConstraint
+ a sh:NodeShape ;
+ sh:property [
+ sh:path sh:in ;
+ sh:minCount 1 ;
+ ] ;
+.
+
From 17edf4a30acf8b84421a0d550eeb1e2cb69b4b8d Mon Sep 17 00:00:00 2001
From: smessie
Date: Mon, 5 Jan 2026 14:58:57 +0100
Subject: [PATCH 09/26] feat(ui): add instances select editor score
---
shacl12-ui/index.html | 4 ++--
shacl12-ui/widgets/editors/instances-select-editor.ttl | 9 +++++++++
shacl12-ui/widgets/score-shapes.ttl | 7 +++++++
3 files changed, 18 insertions(+), 2 deletions(-)
create mode 100644 shacl12-ui/widgets/editors/instances-select-editor.ttl
diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html
index f54dbb73..2a77b4a6 100644
--- a/shacl12-ui/index.html
+++ b/shacl12-ui/index.html
@@ -1212,8 +1212,8 @@ shui:InstancesSelectEditor
Score:
- null if there exists a sh:class for the property.
- - 0 otherwise.
+ 0 if there exists a sh:class for the property.
+ 0 otherwise.
diff --git a/shacl12-ui/widgets/editors/instances-select-editor.ttl b/shacl12-ui/widgets/editors/instances-select-editor.ttl
new file mode 100644
index 00000000..e6131dea
--- /dev/null
+++ b/shacl12-ui/widgets/editors/instances-select-editor.ttl
@@ -0,0 +1,9 @@
+PREFIX shui:
+PREFIX xsd:
+
+shui:instancesSelectEditorScore0
+ a shui:WidgetScore ;
+ shui:score 0 ;
+ shui:shapeGraphShape shui:hasClassConstraint ;
+ shui:widget shui:InstancesSelectEditor ;
+.
diff --git a/shacl12-ui/widgets/score-shapes.ttl b/shacl12-ui/widgets/score-shapes.ttl
index 6ce64201..ede53297 100644
--- a/shacl12-ui/widgets/score-shapes.ttl
+++ b/shacl12-ui/widgets/score-shapes.ttl
@@ -55,3 +55,10 @@ shui:hasInConstraint
] ;
.
+shui:hasClassConstraint
+ a sh:NodeShape ;
+ sh:property [
+ sh:path sh:class ;
+ sh:minCount 1 ;
+ ] ;
+.
From ca6769474467c9594cbe2989ebbbff71a543ab8d Mon Sep 17 00:00:00 2001
From: smessie
Date: Mon, 5 Jan 2026 15:05:37 +0100
Subject: [PATCH 10/26] feat(ui): add rich text editor score
---
shacl12-ui/index.html | 2 +-
shacl12-ui/widgets/editors/rich-text-editor.ttl | 9 +++++++++
shacl12-ui/widgets/score-shapes.ttl | 6 ++++++
3 files changed, 16 insertions(+), 1 deletion(-)
create mode 100644 shacl12-ui/widgets/editors/rich-text-editor.ttl
diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html
index 2a77b4a6..374132f4 100644
--- a/shacl12-ui/index.html
+++ b/shacl12-ui/index.html
@@ -1235,7 +1235,7 @@ shui:RichTextEditor
Score:
- 10 for
rdf:HTML literals.
- - 0 otherwise.
+ 0 otherwise.
diff --git a/shacl12-ui/widgets/editors/rich-text-editor.ttl b/shacl12-ui/widgets/editors/rich-text-editor.ttl
new file mode 100644
index 00000000..12f50ac6
--- /dev/null
+++ b/shacl12-ui/widgets/editors/rich-text-editor.ttl
@@ -0,0 +1,9 @@
+PREFIX shui:
+PREFIX xsd:
+
+shui:richTextEditorScore10
+ a shui:WidgetScore ;
+ shui:dataGraphShape shui:isHTML ;
+ shui:score 10 ;
+ shui:widget shui:RichTextEditor ;
+.
diff --git a/shacl12-ui/widgets/score-shapes.ttl b/shacl12-ui/widgets/score-shapes.ttl
index ede53297..49984c6c 100644
--- a/shacl12-ui/widgets/score-shapes.ttl
+++ b/shacl12-ui/widgets/score-shapes.ttl
@@ -1,6 +1,7 @@
PREFIX sh:
PREFIX shui:
PREFIX xsd:
+@prefix rdf: .
shui:isBlankNode
a sh:NodeShape ;
@@ -62,3 +63,8 @@ shui:hasClassConstraint
sh:minCount 1 ;
] ;
.
+
+shui:isHTML
+ a sh:NodeShape ;
+ sh:datatype rdf:HTML ;
+.
From 615fdb37ec24dd06fafe774c1f822e2916e98cde Mon Sep 17 00:00:00 2001
From: smessie
Date: Mon, 5 Jan 2026 15:18:10 +0100
Subject: [PATCH 11/26] feat(ui): add sub class editor score
---
shacl12-ui/index.html | 2 +-
shacl12-ui/widgets/editors/sub-class-editor.ttl | 8 ++++++++
2 files changed, 9 insertions(+), 1 deletion(-)
create mode 100644 shacl12-ui/widgets/editors/sub-class-editor.ttl
diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html
index 374132f4..3ed80ed8 100644
--- a/shacl12-ui/index.html
+++ b/shacl12-ui/index.html
@@ -1256,7 +1256,7 @@ shui:SubClassEditor
Score:
- null, i.e., this should be selected explicitly through a shui:editor statement.
+ 0, i.e., this should be selected explicitly through a shui:editor statement.
However, this widget is typically only used if the property has a
dash:rootClass
constraint, or (at minimum) only allows classes as values.
diff --git a/shacl12-ui/widgets/editors/sub-class-editor.ttl b/shacl12-ui/widgets/editors/sub-class-editor.ttl
new file mode 100644
index 00000000..6bf04ed6
--- /dev/null
+++ b/shacl12-ui/widgets/editors/sub-class-editor.ttl
@@ -0,0 +1,8 @@
+PREFIX shui:
+PREFIX xsd:
+
+shui:subClassEditorScore0
+ a shui:WidgetScore ;
+ shui:score 0 ;
+ shui:widget shui:SubClassEditor ;
+.
From 9a5319959807455696c752de3b439cd09ef85498 Mon Sep 17 00:00:00 2001
From: smessie
Date: Mon, 5 Jan 2026 15:36:40 +0100
Subject: [PATCH 12/26] feat(ui): add text area editor score
---
shacl12-ui/index.html | 6 +--
.../widgets/editors/text-area-editor.ttl | 37 ++++++++++++++++
shacl12-ui/widgets/score-shapes.ttl | 43 +++++++++++++++++++
3 files changed, 83 insertions(+), 3 deletions(-)
create mode 100644 shacl12-ui/widgets/editors/text-area-editor.ttl
diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html
index 3ed80ed8..424e4235 100644
--- a/shacl12-ui/index.html
+++ b/shacl12-ui/index.html
@@ -1282,12 +1282,12 @@ shui:TextAreaEditor
Score:
- - 0 if the property is marked
sh:singleLine true.
+ - -1 if the property is marked
sh:singleLine true.
- 20 if the value is an
xsd:string literal and sh:singleLine false.
- 5 if the value is an
xsd:string literal.
- 2 if the property has
xsd:string among the permissible datatypes.
- null if the property has a custom datatype (not from xsd or rdf namespaces but for example geo:wktLiteral).
- - 0 otherwise.
+ 0 if the property has a custom datatype (not from xsd or rdf namespaces but for example geo:wktLiteral).
+ 0 otherwise.
diff --git a/shacl12-ui/widgets/editors/text-area-editor.ttl b/shacl12-ui/widgets/editors/text-area-editor.ttl
new file mode 100644
index 00000000..63c38369
--- /dev/null
+++ b/shacl12-ui/widgets/editors/text-area-editor.ttl
@@ -0,0 +1,37 @@
+PREFIX shui:
+PREFIX xsd:
+
+shui:textAreaEditorScoreMinus1
+ a shui:WidgetScore ;
+ shui:shapesGraphShape shui:isSingleLineTrue ;
+ shui:score -1 ;
+ shui:widget shui:TextAreaEditor ;
+.
+
+shui:textAreaEditorScore20
+ a shui:WidgetScore ;
+ shui:dataGraphShape shui:isString ;
+ shui:shapesGraphShape shui:isSingleLineFalse ;
+ shui:score 20 ;
+ shui:widget shui:TextAreaEditor ;
+.
+
+shui:textAreaEditorScore5
+ a shui:WidgetScore ;
+ shui:dataGraphShape shui:isString ;
+ shui:score 5 ;
+ shui:widget shui:TextAreaEditor ;
+.
+
+shui:textAreaEditorScore2
+ a shui:WidgetScore ;
+ shui:shapesGraphShape shui:permitsString ;
+ shui:score 2 ;
+ shui:widget shui:TextAreaEditor ;
+.
+
+shui:textAreaEditorScore0
+ a shui:WidgetScore ;
+ shui:shapesGraphShape shui:hasCustomDatatype ;
+ shui:widget shui:TextAreaEditor ;
+.
diff --git a/shacl12-ui/widgets/score-shapes.ttl b/shacl12-ui/widgets/score-shapes.ttl
index 49984c6c..96a4d734 100644
--- a/shacl12-ui/widgets/score-shapes.ttl
+++ b/shacl12-ui/widgets/score-shapes.ttl
@@ -68,3 +68,46 @@ shui:isHTML
a sh:NodeShape ;
sh:datatype rdf:HTML ;
.
+
+shui:isSingleLineTrue
+ a sh:NodeShape ;
+ sh:property [
+ sh:path sh:singleLine ;
+ sh:hasValue true ;
+ ] ;
+.
+
+shui:isSingleLineFalse
+ a sh:NodeShape ;
+ sh:property [
+ sh:path sh:singleLine ;
+ sh:hasValue false ;
+ ] ;
+.
+
+shui:isString
+ a sh:NodeShape ;
+ sh:datatype xsd:string ;
+.
+
+shui:permitsString
+ a sh:NodeShape ;
+ sh:property [
+ sh:path sh:datatype ;
+ sh:hasValue xsd:string ;
+ ] ;
+.
+
+shui:hasCustomDatatype
+ a sh:NodeShape ;
+ sh:property [
+ sh:path sh:datatype ;
+ sh:minCount 1 ;
+ ] ;
+ sh:not [
+ sh:property [
+ sh:path sh:datatype ;
+ sh:pattern "^http://www.w3.org/2001/XMLSchema#|^http://www.w3.org/1999/02/22-rdf-syntax-ns#" ;
+ ] ;
+ ] ;
+.
From 40ad98c737d3a9b04bbcfb89644622f6be4ec499 Mon Sep 17 00:00:00 2001
From: smessie
Date: Mon, 5 Jan 2026 15:40:08 +0100
Subject: [PATCH 13/26] feat(ui): add text area with lang editor score
---
shacl12-ui/index.html | 4 +--
.../editors/text-area-with-lang-editor.ttl | 31 +++++++++++++++++++
shacl12-ui/widgets/score-shapes.ttl | 13 ++++++++
3 files changed, 46 insertions(+), 2 deletions(-)
create mode 100644 shacl12-ui/widgets/editors/text-area-with-lang-editor.ttl
diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html
index 424e4235..d0c5c4d2 100644
--- a/shacl12-ui/index.html
+++ b/shacl12-ui/index.html
@@ -1308,10 +1308,10 @@ shui:TextAreaWithLangEditor
Score:
- - 0 if the property is marked
sh:singleLine true.
+ - -1 if the property is marked
sh:singleLine true.
- 15 if the value is an
rdf:langString literal and sh:singleLine false.
- 5 if the value is an
rdf:langString literal or the property permits such values.
- - 0 otherwise.
+ 0 otherwise.
diff --git a/shacl12-ui/widgets/editors/text-area-with-lang-editor.ttl b/shacl12-ui/widgets/editors/text-area-with-lang-editor.ttl
new file mode 100644
index 00000000..356b66d4
--- /dev/null
+++ b/shacl12-ui/widgets/editors/text-area-with-lang-editor.ttl
@@ -0,0 +1,31 @@
+PREFIX shui:
+PREFIX xsd:
+
+shui:textAreaWithLangEditorScoreMinus1
+ a shui:WidgetScore ;
+ shui:shapesGraphShape shui:isSingleLineTrue ;
+ shui:score -1 ;
+ shui:widget shui:TextAreaWithLangEditor ;
+.
+
+shui:textAreaWithLangEditorScore15
+ a shui:WidgetScore ;
+ shui:dataGraphShape shui:isLangString ;
+ shui:shapesGraphShape shui:isSingleLineFalse ;
+ shui:score 15 ;
+ shui:widget shui:TextAreaWithLangEditor ;
+.
+
+shui:textAreaWithLangEditorScore5
+ a shui:WidgetScore ;
+ shui:dataGraphShape shui:isLangString ;
+ shui:score 5 ;
+ shui:widget shui:TextAreaWithLangEditor ;
+.
+
+shui:textAreaWithLangEditorScore5Permits
+ a shui:WidgetScore ;
+ shui:shapesGraphShape shui:permitsLangString ;
+ shui:score 5 ;
+ shui:widget shui:TextAreaWithLangEditor ;
+.
diff --git a/shacl12-ui/widgets/score-shapes.ttl b/shacl12-ui/widgets/score-shapes.ttl
index 96a4d734..6794a885 100644
--- a/shacl12-ui/widgets/score-shapes.ttl
+++ b/shacl12-ui/widgets/score-shapes.ttl
@@ -111,3 +111,16 @@ shui:hasCustomDatatype
] ;
] ;
.
+
+shui:isLangString
+ a sh:NodeShape ;
+ sh:datatype rdf:langString ;
+.
+
+shui:permitsLangString
+ a sh:NodeShape ;
+ sh:property [
+ sh:path sh:datatype ;
+ sh:hasValue rdf:langString ;
+ ] ;
+.
From 7c8f820c897efe83a6fdfe3088b50aacc18e544e Mon Sep 17 00:00:00 2001
From: smessie
Date: Mon, 5 Jan 2026 16:35:23 +0100
Subject: [PATCH 14/26] feat(ui): add text field editor score
---
shacl12-ui/index.html | 2 +-
shacl12-ui/widgets/editors/text-field-editor.ttl | 9 +++++++++
shacl12-ui/widgets/score-shapes.ttl | 7 +++++++
3 files changed, 17 insertions(+), 1 deletion(-)
create mode 100644 shacl12-ui/widgets/editors/text-field-editor.ttl
diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html
index d0c5c4d2..aebfbf90 100644
--- a/shacl12-ui/index.html
+++ b/shacl12-ui/index.html
@@ -1333,7 +1333,7 @@ shui:TextFieldEditor
Score:
- 10 if the value is a literal that is neither
rdf:langString nor xsd:boolean.
- - 0 otherwise.
+ 0 otherwise.
diff --git a/shacl12-ui/widgets/editors/text-field-editor.ttl b/shacl12-ui/widgets/editors/text-field-editor.ttl
new file mode 100644
index 00000000..cd74b04d
--- /dev/null
+++ b/shacl12-ui/widgets/editors/text-field-editor.ttl
@@ -0,0 +1,9 @@
+PREFIX shui:
+PREFIX xsd:
+
+shui:textFieldEditorScore10
+ a shui:WidgetScore ;
+ shui:dataGraphShape shui:isPlainLiteral ;
+ shui:score 10 ;
+ shui:widget shui:TextFieldEditor ;
+.
diff --git a/shacl12-ui/widgets/score-shapes.ttl b/shacl12-ui/widgets/score-shapes.ttl
index 6794a885..f9c7b258 100644
--- a/shacl12-ui/widgets/score-shapes.ttl
+++ b/shacl12-ui/widgets/score-shapes.ttl
@@ -124,3 +124,10 @@ shui:permitsLangString
sh:hasValue rdf:langString ;
] ;
.
+
+shui:isPlainLiteral
+ a sh:NodeShape ;
+ sh:nodeKind sh:Literal ;
+ sh:not [ sh:datatype rdf:langString ] ;
+ sh:not [ sh:datatype xsd:boolean ] ;
+.
From fe5caa44588c7a26699557026cdc4e42b28a2e42 Mon Sep 17 00:00:00 2001
From: smessie
Date: Mon, 5 Jan 2026 16:46:34 +0100
Subject: [PATCH 15/26] feat(ui): add text field with lang editor score
---
shacl12-ui/index.html | 2 +-
.../editors/text-field-with-lang-editor.ttl | 23 +++++++++++++++++++
shacl12-ui/widgets/score-shapes.ttl | 23 +++++++++++++++++++
3 files changed, 47 insertions(+), 1 deletion(-)
create mode 100644 shacl12-ui/widgets/editors/text-field-with-lang-editor.ttl
diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html
index aebfbf90..2633e4cb 100644
--- a/shacl12-ui/index.html
+++ b/shacl12-ui/index.html
@@ -1355,7 +1355,7 @@ shui:TextFieldWithLangEditor
- 11 if the value is an
rdf:langString literal or the property permits either rdf:langString or xsd:string.
- 5 if the property is not
sh:singleLine false and permits rdf:langString values.
- - 0 otherwise.
+ 0 otherwise.
diff --git a/shacl12-ui/widgets/editors/text-field-with-lang-editor.ttl b/shacl12-ui/widgets/editors/text-field-with-lang-editor.ttl
new file mode 100644
index 00000000..42bd63b1
--- /dev/null
+++ b/shacl12-ui/widgets/editors/text-field-with-lang-editor.ttl
@@ -0,0 +1,23 @@
+PREFIX shui:
+PREFIX xsd:
+
+shui:textFieldWithLangEditorScore11
+ a shui:WidgetScore ;
+ shui:dataGraphShape shui:isLangString ;
+ shui:score 11 ;
+ shui:widget shui:TextFieldWithLangEditor ;
+.
+
+shui:textFieldWithLangEditorScore11Permits
+ a shui:WidgetScore ;
+ shui:shapesGraphShape shui:permitsLangStringOrString ;
+ shui:score 11 ;
+ shui:widget shui:TextFieldWithLangEditor ;
+.
+
+shui:textFieldWithLangEditorScore5
+ a shui:WidgetScore ;
+ shui:shapesGraphShape shui:isNotSingleLineFalse, shui:permitsLangString ;
+ shui:score 5 ;
+ shui:widget shui:TextFieldWithLangEditor ;
+.
diff --git a/shacl12-ui/widgets/score-shapes.ttl b/shacl12-ui/widgets/score-shapes.ttl
index f9c7b258..adce34e5 100644
--- a/shacl12-ui/widgets/score-shapes.ttl
+++ b/shacl12-ui/widgets/score-shapes.ttl
@@ -131,3 +131,26 @@ shui:isPlainLiteral
sh:not [ sh:datatype rdf:langString ] ;
sh:not [ sh:datatype xsd:boolean ] ;
.
+
+shui:permitsLangStringOrString
+ a sh:NodeShape ;
+ sh:or (
+ [
+ sh:property [
+ sh:path sh:datatype ;
+ sh:hasValue rdf:langString
+ ]
+ ]
+ [
+ sh:property [
+ sh:path sh:datatype ;
+ sh:hasValue xsd:string
+ ]
+ ]
+ ) ;
+.
+
+shui:isNotSingleLineFalse
+ a sh:NodeShape ;
+ sh:not shui:isSingleLineFalse ;
+.
From 479e08d0c6be6462baa0dc961c9ec6e79b0e84d2 Mon Sep 17 00:00:00 2001
From: smessie
Date: Mon, 5 Jan 2026 16:57:13 +0100
Subject: [PATCH 16/26] feat(ui): add uri editor score
---
shacl12-ui/index.html | 4 ++--
shacl12-ui/widgets/editors/uri-editor.ttl | 17 +++++++++++++++++
shacl12-ui/widgets/score-shapes.ttl | 5 +++++
3 files changed, 24 insertions(+), 2 deletions(-)
create mode 100644 shacl12-ui/widgets/editors/uri-editor.ttl
diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html
index 2633e4cb..93d161c8 100644
--- a/shacl12-ui/index.html
+++ b/shacl12-ui/index.html
@@ -1377,8 +1377,8 @@ shui:URIEditor
Score:
- 10 if the value is an IRI node and the property has
sh:nodeKind sh:IRI and no sh:class constraint.
- null if the value is an IRI node.
- - 0 otherwise.
+ 0 if the value is an IRI node.
+ 0 otherwise.
diff --git a/shacl12-ui/widgets/editors/uri-editor.ttl b/shacl12-ui/widgets/editors/uri-editor.ttl
new file mode 100644
index 00000000..3b078e57
--- /dev/null
+++ b/shacl12-ui/widgets/editors/uri-editor.ttl
@@ -0,0 +1,17 @@
+PREFIX shui:
+PREFIX xsd:
+
+shui:uriEditorScore10
+ a shui:WidgetScore ;
+ shui:dataGraphShape shui:isIRI ;
+ shui:shapesGraphShape shui:isIRI, shui:hasNoClassConstraint ;
+ shui:score 10 ;
+ shui:widget shui:URIEditor ;
+.
+
+shui:uriEditorScore0
+ a shui:WidgetScore ;
+ shui:dataGraphShape shui:isIRI ;
+ shui:score 0 ;
+ shui:widget shui:URIEditor ;
+.
diff --git a/shacl12-ui/widgets/score-shapes.ttl b/shacl12-ui/widgets/score-shapes.ttl
index adce34e5..d154773c 100644
--- a/shacl12-ui/widgets/score-shapes.ttl
+++ b/shacl12-ui/widgets/score-shapes.ttl
@@ -154,3 +154,8 @@ shui:isNotSingleLineFalse
a sh:NodeShape ;
sh:not shui:isSingleLineFalse ;
.
+
+shui:hasNoClassConstraint
+ a sh:NodeShape ;
+ sh:not shui:hasClassConstraint ;
+.
From dd624cacc199f3cbe01a6482e8c6a7b92377ea89 Mon Sep 17 00:00:00 2001
From: smessie
Date: Tue, 6 Jan 2026 10:40:47 +0100
Subject: [PATCH 17/26] feat(ui): add blank node viewer score
---
shacl12-ui/index.html | 2 +-
shacl12-ui/widgets/viewers/blank-node-viewer.ttl | 9 +++++++++
2 files changed, 10 insertions(+), 1 deletion(-)
create mode 100644 shacl12-ui/widgets/viewers/blank-node-viewer.ttl
diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html
index 93d161c8..a5097b08 100644
--- a/shacl12-ui/index.html
+++ b/shacl12-ui/index.html
@@ -1407,7 +1407,7 @@ shui:BlankNodeViewer
Score:
- 1 for blank nodes.
- - 0 for all other nodes.
+ 0 for all other nodes.
diff --git a/shacl12-ui/widgets/viewers/blank-node-viewer.ttl b/shacl12-ui/widgets/viewers/blank-node-viewer.ttl
new file mode 100644
index 00000000..cc22e7e4
--- /dev/null
+++ b/shacl12-ui/widgets/viewers/blank-node-viewer.ttl
@@ -0,0 +1,9 @@
+PREFIX shui:
+PREFIX xsd:
+
+shui:blankNodeViewerScore1
+ a shui:WidgetScore ;
+ shui:dataGraphShape shui:isBlankNode ;
+ shui:score 1 ;
+ shui:widget shui:BlankNodeViewer ;
+.
From 75ff04a2268fc660db60d23473973cd107de2623 Mon Sep 17 00:00:00 2001
From: smessie
Date: Tue, 6 Jan 2026 11:10:18 +0100
Subject: [PATCH 18/26] feat(ui): add details viewer score
---
shacl12-ui/index.html | 5 ++---
shacl12-ui/widgets/viewers/details-viewer.ttl | 9 +++++++++
2 files changed, 11 insertions(+), 3 deletions(-)
create mode 100644 shacl12-ui/widgets/viewers/details-viewer.ttl
diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html
index a5097b08..bbd88692 100644
--- a/shacl12-ui/index.html
+++ b/shacl12-ui/index.html
@@ -1120,7 +1120,7 @@ shui:DetailsEditor
Score:
- 0 for non-literals, i.e., it can be selected manually via shui:editor.
+ - 0 for non-literals, i.e., it can be selected manually via
shui:editor.
0 otherwise.
@@ -1423,8 +1423,7 @@ shui:DetailsViewer
Score:
- - 0 for literals.
- null for IRIs and blank nodes.
+ - 0 for non-literals, i.e., it can be selected manually via
shui:Viewer.
diff --git a/shacl12-ui/widgets/viewers/details-viewer.ttl b/shacl12-ui/widgets/viewers/details-viewer.ttl
new file mode 100644
index 00000000..f8a4c69e
--- /dev/null
+++ b/shacl12-ui/widgets/viewers/details-viewer.ttl
@@ -0,0 +1,9 @@
+PREFIX shui:
+PREFIX xsd:
+
+shui:detailsViewerScore0
+ a shui:WidgetScore ;
+ shui:score 0 ;
+ shui:shapesGraphShape shui:isNotLiteral ;
+ shui:widget shui:DetailsViewer ;
+.
From 4c1a3c33b9aab6c153dfd23d7c600c5abe64cf82 Mon Sep 17 00:00:00 2001
From: smessie
Date: Tue, 6 Jan 2026 11:16:07 +0100
Subject: [PATCH 19/26] feat(ui): add HTML viewer score
---
shacl12-ui/index.html | 2 +-
shacl12-ui/widgets/viewers/html-viewer.ttl | 9 +++++++++
2 files changed, 10 insertions(+), 1 deletion(-)
create mode 100644 shacl12-ui/widgets/viewers/html-viewer.ttl
diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html
index bbd88692..377fdbc6 100644
--- a/shacl12-ui/index.html
+++ b/shacl12-ui/index.html
@@ -1439,7 +1439,7 @@ shui:HTMLViewer
Score:
- 50 for literals with datatype
rdf:HTML.
- - 0 for all other values.
+ 0 for all other values.
diff --git a/shacl12-ui/widgets/viewers/html-viewer.ttl b/shacl12-ui/widgets/viewers/html-viewer.ttl
new file mode 100644
index 00000000..d2a9865e
--- /dev/null
+++ b/shacl12-ui/widgets/viewers/html-viewer.ttl
@@ -0,0 +1,9 @@
+PREFIX shui:
+PREFIX xsd:
+
+shui:htmlViewerScore50
+ a shui:WidgetScore ;
+ shui:dataGraphShape shui:isHTML ;
+ shui:score 50 ;
+ shui:widget shui:HTMLViewer ;
+.
From 6e6c5ef3f10c2f129ca1ae1fe61d2ae7dc9bcc99 Mon Sep 17 00:00:00 2001
From: smessie
Date: Tue, 6 Jan 2026 11:19:35 +0100
Subject: [PATCH 20/26] feat(ui): add hyperlink viewer score
---
shacl12-ui/index.html | 4 ++--
shacl12-ui/widgets/score-shapes.ttl | 5 +++++
shacl12-ui/widgets/viewers/hyperlink-viewer.ttl | 16 ++++++++++++++++
3 files changed, 23 insertions(+), 2 deletions(-)
create mode 100644 shacl12-ui/widgets/viewers/hyperlink-viewer.ttl
diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html
index 377fdbc6..bd5cc9fb 100644
--- a/shacl12-ui/index.html
+++ b/shacl12-ui/index.html
@@ -1455,8 +1455,8 @@ shui:HyperlinkViewer
Score:
- 50 for literals with datatype
xsd:anyURI.
- null for xsd:string literals.
- - 0 for all other values.
+ - 0 for
xsd:string literals.
+ 0 for all other values.
diff --git a/shacl12-ui/widgets/score-shapes.ttl b/shacl12-ui/widgets/score-shapes.ttl
index d154773c..0eac0330 100644
--- a/shacl12-ui/widgets/score-shapes.ttl
+++ b/shacl12-ui/widgets/score-shapes.ttl
@@ -159,3 +159,8 @@ shui:hasNoClassConstraint
a sh:NodeShape ;
sh:not shui:hasClassConstraint ;
.
+
+shui:isAnyURI
+ a sh:NodeShape ;
+ sh:datatype xsd:anyURI ;
+.
diff --git a/shacl12-ui/widgets/viewers/hyperlink-viewer.ttl b/shacl12-ui/widgets/viewers/hyperlink-viewer.ttl
new file mode 100644
index 00000000..fff56df6
--- /dev/null
+++ b/shacl12-ui/widgets/viewers/hyperlink-viewer.ttl
@@ -0,0 +1,16 @@
+PREFIX shui:
+PREFIX xsd:
+
+shui:hyperlinkViewerScore50
+ a shui:WidgetScore ;
+ shui:dataGraphShape shui:isAnyURI ;
+ shui:score 50 ;
+ shui:widget shui:HyperlinkViewer ;
+.
+
+shui:hyperlinkViewerScore0
+ a shui:WidgetScore ;
+ shui:dataGraphShape shui:isString ;
+ shui:score 0 ;
+ shui:widget shui:HyperlinkViewer ;
+.
From 8157de5d6a97478f50dcb45d08c97edba0c7b984 Mon Sep 17 00:00:00 2001
From: smessie
Date: Tue, 6 Jan 2026 12:30:49 +0100
Subject: [PATCH 21/26] feat(ui): add image viewer score
---
shacl12-ui/widgets/score-shapes.ttl | 16 ++++++++++++++++
shacl12-ui/widgets/viewers/image-viewer.ttl | 9 +++++++++
2 files changed, 25 insertions(+)
create mode 100644 shacl12-ui/widgets/viewers/image-viewer.ttl
diff --git a/shacl12-ui/widgets/score-shapes.ttl b/shacl12-ui/widgets/score-shapes.ttl
index 0eac0330..98832e04 100644
--- a/shacl12-ui/widgets/score-shapes.ttl
+++ b/shacl12-ui/widgets/score-shapes.ttl
@@ -164,3 +164,19 @@ shui:isAnyURI
a sh:NodeShape ;
sh:datatype xsd:anyURI ;
.
+
+shui:hasImageFileExtension
+ a sh:NodeShape ;
+ sh:property [
+ sh:or (
+ [
+ sh:nodeKind sh:IRI
+ ]
+ [
+ sh:nodeKind sh:Literal
+ ]
+ ) ;
+ sh:pattern "\.(jpg|jpeg|png|gif|bmp|svg|webp|avif)$" ;
+ sh:flags "i" ;
+ ] ;
+.
diff --git a/shacl12-ui/widgets/viewers/image-viewer.ttl b/shacl12-ui/widgets/viewers/image-viewer.ttl
new file mode 100644
index 00000000..6732825b
--- /dev/null
+++ b/shacl12-ui/widgets/viewers/image-viewer.ttl
@@ -0,0 +1,9 @@
+PREFIX shui:
+PREFIX xsd:
+
+shui:imageViewerScore50
+ a shui:WidgetScore ;
+ shui:dataGraphShape shui:hasImageFileExtension ;
+ shui:score 50 ;
+ shui:widget shui:ImageViewer ;
+.
From 22686904fafc6c0feb37166dec3b0ad358854632 Mon Sep 17 00:00:00 2001
From: smessie
Date: Tue, 6 Jan 2026 12:35:46 +0100
Subject: [PATCH 22/26] feat(ui): add label viewer score
---
shacl12-ui/index.html | 2 +-
shacl12-ui/widgets/viewers/label-viewer.ttl | 9 +++++++++
2 files changed, 10 insertions(+), 1 deletion(-)
create mode 100644 shacl12-ui/widgets/viewers/label-viewer.ttl
diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html
index bd5cc9fb..338d2dc3 100644
--- a/shacl12-ui/index.html
+++ b/shacl12-ui/index.html
@@ -1482,7 +1482,7 @@ shui:LabelViewer
Score:
- 5 if the value is an IRI.
- - 0 otherwise.
+ 0 otherwise.
diff --git a/shacl12-ui/widgets/viewers/label-viewer.ttl b/shacl12-ui/widgets/viewers/label-viewer.ttl
new file mode 100644
index 00000000..382364ec
--- /dev/null
+++ b/shacl12-ui/widgets/viewers/label-viewer.ttl
@@ -0,0 +1,9 @@
+PREFIX shui:
+PREFIX xsd:
+
+shui:labelViewerScore5
+ a shui:WidgetScore ;
+ shui:dataGraphShape shui:isIRI ;
+ shui:score 5 ;
+ shui:widget shui:LabelViewer ;
+.
From 5f6b9860fd4a192b4a80f8297cca2647b2790616 Mon Sep 17 00:00:00 2001
From: smessie
Date: Tue, 6 Jan 2026 12:36:59 +0100
Subject: [PATCH 23/26] feat(ui): add lang string viewer score
---
shacl12-ui/index.html | 2 +-
shacl12-ui/widgets/viewers/lang-string-viewer.ttl | 9 +++++++++
2 files changed, 10 insertions(+), 1 deletion(-)
create mode 100644 shacl12-ui/widgets/viewers/lang-string-viewer.ttl
diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html
index 338d2dc3..2478fcef 100644
--- a/shacl12-ui/index.html
+++ b/shacl12-ui/index.html
@@ -1499,7 +1499,7 @@ shui:LangStringViewer
Score:
- 10 if the value is a literal of type
rdf:langString.
- - 0 otherwise.
+ 0 otherwise.
diff --git a/shacl12-ui/widgets/viewers/lang-string-viewer.ttl b/shacl12-ui/widgets/viewers/lang-string-viewer.ttl
new file mode 100644
index 00000000..d6c5e45f
--- /dev/null
+++ b/shacl12-ui/widgets/viewers/lang-string-viewer.ttl
@@ -0,0 +1,9 @@
+PREFIX shui:
+PREFIX xsd:
+
+shui:langStringViewerScore10
+ a shui:WidgetScore ;
+ shui:dataGraphShape shui:isLangString ;
+ shui:score 10 ;
+ shui:widget shui:LangStringViewer ;
+.
From 5b1fd25342f3189212d296ac9c4c01debd2c7005 Mon Sep 17 00:00:00 2001
From: smessie
Date: Tue, 6 Jan 2026 12:41:16 +0100
Subject: [PATCH 24/26] feat(ui): add literal viewer score
---
shacl12-ui/index.html | 2 +-
shacl12-ui/widgets/viewers/literal-viewer.ttl | 9 +++++++++
2 files changed, 10 insertions(+), 1 deletion(-)
create mode 100644 shacl12-ui/widgets/viewers/literal-viewer.ttl
diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html
index 2478fcef..377e685f 100644
--- a/shacl12-ui/index.html
+++ b/shacl12-ui/index.html
@@ -1513,7 +1513,7 @@ shui:LiteralViewer
Score:
- 1 if the value is a literal.
- - 0 otherwise.
+ 0 otherwise.
diff --git a/shacl12-ui/widgets/viewers/literal-viewer.ttl b/shacl12-ui/widgets/viewers/literal-viewer.ttl
new file mode 100644
index 00000000..5999c95c
--- /dev/null
+++ b/shacl12-ui/widgets/viewers/literal-viewer.ttl
@@ -0,0 +1,9 @@
+PREFIX shui:
+PREFIX xsd:
+
+shui:literalViewerScore1
+ a shui:WidgetScore ;
+ shui:dataGraphShape shui:isLiteral ;
+ shui:score 1 ;
+ shui:widget shui:LiteralViewer ;
+.
From 9e0d78cc81fa9711b8c05f9699cc01faea2d9552 Mon Sep 17 00:00:00 2001
From: smessie
Date: Tue, 6 Jan 2026 12:44:42 +0100
Subject: [PATCH 25/26] feat(ui): add uri viewer score
---
shacl12-ui/index.html | 2 +-
shacl12-ui/widgets/viewers/uri-viewer.ttl | 9 +++++++++
2 files changed, 10 insertions(+), 1 deletion(-)
create mode 100644 shacl12-ui/widgets/viewers/uri-viewer.ttl
diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html
index 377e685f..d8b87ae1 100644
--- a/shacl12-ui/index.html
+++ b/shacl12-ui/index.html
@@ -1527,7 +1527,7 @@ shui:URIViewer
Score:
- 1 if the value is an IRI.
- - 0 otherwise.
+ 0 otherwise.
diff --git a/shacl12-ui/widgets/viewers/uri-viewer.ttl b/shacl12-ui/widgets/viewers/uri-viewer.ttl
new file mode 100644
index 00000000..2162e125
--- /dev/null
+++ b/shacl12-ui/widgets/viewers/uri-viewer.ttl
@@ -0,0 +1,9 @@
+PREFIX shui:
+PREFIX xsd:
+
+shui:uriViewerScore1
+ a shui:WidgetScore ;
+ shui:dataGraphShape shui:isIRI ;
+ shui:score 1 ;
+ shui:widget shui:URIViewer ;
+.
From 3fe991512c152a0c43ccf07635d2bbc55cc1b519 Mon Sep 17 00:00:00 2001
From: smessie
Date: Tue, 6 Jan 2026 12:48:14 +0100
Subject: [PATCH 26/26] feat(ui): add value table viewer score
---
shacl12-ui/index.html | 2 +-
shacl12-ui/widgets/viewers/value-table-viewer.ttl | 8 ++++++++
2 files changed, 9 insertions(+), 1 deletion(-)
create mode 100644 shacl12-ui/widgets/viewers/value-table-viewer.ttl
diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html
index d8b87ae1..6fbb4620 100644
--- a/shacl12-ui/index.html
+++ b/shacl12-ui/index.html
@@ -1544,7 +1544,7 @@ shui:ValueTableViewer
Score:
- null, i.e., this should be selected explicitly through a shui:editor statement.
+ - 0, i.e., this should be selected explicitly through a
shui:viewer statement.
diff --git a/shacl12-ui/widgets/viewers/value-table-viewer.ttl b/shacl12-ui/widgets/viewers/value-table-viewer.ttl
new file mode 100644
index 00000000..5b76ac59
--- /dev/null
+++ b/shacl12-ui/widgets/viewers/value-table-viewer.ttl
@@ -0,0 +1,8 @@
+PREFIX shui:
+PREFIX xsd:
+
+shui:valueTableViewerScore0
+ a shui:WidgetScore ;
+ shui:score 0 ;
+ shui:widget shui:ValueTableViewer ;
+.