From 15c907475dd1d2fb61c4782a2d8679381d27bf17 Mon Sep 17 00:00:00 2001 From: Edmond Chuc Date: Thu, 18 Dec 2025 14:48:38 +1000 Subject: [PATCH 01/26] feat(ui): add boolean select editor score --- shacl12-ui/index.html | 5 +++-- shacl12-ui/widgets/0-data-graph-shapes-graph.ttl | 13 +++++++++++++ .../widgets/0-shapes-graph-shapes-graph.ttl | 16 ++++++++++++++++ .../widgets/editors/boolean-select-editor.ttl | 16 ++++++++++++++++ 4 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 shacl12-ui/widgets/0-data-graph-shapes-graph.ttl create mode 100644 shacl12-ui/widgets/0-shapes-graph-shapes-graph.ttl create mode 100644 shacl12-ui/widgets/editors/boolean-select-editor.ttl diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html index 6e3668c4..0335f4aa 100644 --- a/shacl12-ui/index.html +++ b/shacl12-ui/index.html @@ -131,6 +131,7 @@ company: "KurrawongAI", companyURL: "https://kurrawong.ai", mailto: "edmond@kurrawong.ai", + url: "https://www.edmondchuc.com/", w3cid: 163845, }, { @@ -1053,8 +1054,8 @@

shui:BooleanSelectEditor

Score:

diff --git a/shacl12-ui/widgets/0-data-graph-shapes-graph.ttl b/shacl12-ui/widgets/0-data-graph-shapes-graph.ttl new file mode 100644 index 00000000..4ca807e3 --- /dev/null +++ b/shacl12-ui/widgets/0-data-graph-shapes-graph.ttl @@ -0,0 +1,13 @@ +PREFIX sh: +PREFIX shui: +PREFIX xsd: + +shui:isBoolean + a sh:NodeShape ; + sh:datatype xsd:boolean ; +. + +shui:isDate + a sh:NodeShape ; + sh:datatype xsd:date ; +. diff --git a/shacl12-ui/widgets/0-shapes-graph-shapes-graph.ttl b/shacl12-ui/widgets/0-shapes-graph-shapes-graph.ttl new file mode 100644 index 00000000..50324259 --- /dev/null +++ b/shacl12-ui/widgets/0-shapes-graph-shapes-graph.ttl @@ -0,0 +1,16 @@ +PREFIX sh: +PREFIX shui: +PREFIX xsd: + +shui:literalNoDatatypeSpecified + a sh:NodeShape ; + sh:property + [ + sh:hasValue sh:Literal ; + sh:path sh:nodeKind ; + ] , + [ + sh:maxCount 0 ; + sh:path sh:datatype ; + ] ; +. diff --git a/shacl12-ui/widgets/editors/boolean-select-editor.ttl b/shacl12-ui/widgets/editors/boolean-select-editor.ttl new file mode 100644 index 00000000..cc3f6b04 --- /dev/null +++ b/shacl12-ui/widgets/editors/boolean-select-editor.ttl @@ -0,0 +1,16 @@ +PREFIX shui: +PREFIX xsd: + +shui:booleanSelectEditorScore10 + a shui:WidgetScore ; + shui:dataGraphShape shui:isBoolean ; + shui:score 10 ; + shui:widget shui:BooleanSelectEditor ; +. + +shui:booleanSelectEditorScoreNull + a shui:WidgetScore ; + shui:score 0 ; + shui:shapesGraphShape shui:literalNoDatatypeSpecified ; + shui:widget shui:BooleanSelectEditor ; +. From cfabe40c0632ae38b10aa370c9440799044adbf9 Mon Sep 17 00:00:00 2001 From: Edmond Chuc Date: Thu, 18 Dec 2025 14:51:16 +1000 Subject: [PATCH 02/26] feat(ui): add auto-complete editor score --- shacl12-ui/index.html | 2 +- shacl12-ui/widgets/0-data-graph-shapes-graph.ttl | 5 +++++ shacl12-ui/widgets/editors/auto-complete-editor.ttl | 9 +++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 shacl12-ui/widgets/editors/auto-complete-editor.ttl diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html index 0335f4aa..94e2027b 100644 --- a/shacl12-ui/index.html +++ b/shacl12-ui/index.html @@ -998,7 +998,7 @@

shui:AutoCompleteEditor

Score:

diff --git a/shacl12-ui/widgets/0-data-graph-shapes-graph.ttl b/shacl12-ui/widgets/0-data-graph-shapes-graph.ttl index 4ca807e3..c0aaef5a 100644 --- a/shacl12-ui/widgets/0-data-graph-shapes-graph.ttl +++ b/shacl12-ui/widgets/0-data-graph-shapes-graph.ttl @@ -11,3 +11,8 @@ shui:isDate a sh:NodeShape ; sh:datatype xsd:date ; . + +shui:isIRI + a sh:NodeShape ; + sh:nodeKind sh:IRI ; +. diff --git a/shacl12-ui/widgets/editors/auto-complete-editor.ttl b/shacl12-ui/widgets/editors/auto-complete-editor.ttl new file mode 100644 index 00000000..a4d9b3c4 --- /dev/null +++ b/shacl12-ui/widgets/editors/auto-complete-editor.ttl @@ -0,0 +1,9 @@ +PREFIX shui: +PREFIX xsd: + +shui:autoCompleteEditorScore1 + a shui:WidgetScore ; + shui:dataGraphShape shui:isIRI ; + shui:score 1 ; + shui:widget shui:AutoCompleteEditor ; +. From 3f4efa40d99b67f1ca64abc1a92f56828ddf70eb Mon Sep 17 00:00:00 2001 From: Edmond Chuc Date: Thu, 18 Dec 2025 14:56:14 +1000 Subject: [PATCH 03/26] chore(ui): rename ui shapes graphs --- ...{0-data-graph-shapes-graph.ttl => data-graph-shapes-graph.ttl} | 0 ...hapes-graph-shapes-graph.ttl => shapes-graph-shapes-graph.ttl} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename shacl12-ui/widgets/{0-data-graph-shapes-graph.ttl => data-graph-shapes-graph.ttl} (100%) rename shacl12-ui/widgets/{0-shapes-graph-shapes-graph.ttl => shapes-graph-shapes-graph.ttl} (100%) diff --git a/shacl12-ui/widgets/0-data-graph-shapes-graph.ttl b/shacl12-ui/widgets/data-graph-shapes-graph.ttl similarity index 100% rename from shacl12-ui/widgets/0-data-graph-shapes-graph.ttl rename to shacl12-ui/widgets/data-graph-shapes-graph.ttl diff --git a/shacl12-ui/widgets/0-shapes-graph-shapes-graph.ttl b/shacl12-ui/widgets/shapes-graph-shapes-graph.ttl similarity index 100% rename from shacl12-ui/widgets/0-shapes-graph-shapes-graph.ttl rename to shacl12-ui/widgets/shapes-graph-shapes-graph.ttl From 7509f3f42b13e565fed6f932c730e79fbfaa6a39 Mon Sep 17 00:00:00 2001 From: Edmond Chuc Date: Thu, 18 Dec 2025 15:00:59 +1000 Subject: [PATCH 04/26] feat(ui): add blank node editor score --- shacl12-ui/index.html | 2 +- shacl12-ui/widgets/data-graph-shapes-graph.ttl | 5 +++++ shacl12-ui/widgets/editors/blank-node-editor.ttl | 9 +++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 shacl12-ui/widgets/editors/blank-node-editor.ttl diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html index 94e2027b..10fda813 100644 --- a/shacl12-ui/index.html +++ b/shacl12-ui/index.html @@ -1039,7 +1039,7 @@

shui:BlankNodeEditor

Score:

diff --git a/shacl12-ui/widgets/data-graph-shapes-graph.ttl b/shacl12-ui/widgets/data-graph-shapes-graph.ttl index c0aaef5a..52362b80 100644 --- a/shacl12-ui/widgets/data-graph-shapes-graph.ttl +++ b/shacl12-ui/widgets/data-graph-shapes-graph.ttl @@ -2,6 +2,11 @@ PREFIX sh: PREFIX shui: PREFIX xsd: +shui:isBlankNode + a sh:NodeShape ; + sh:nodeKind sh:BlankNode ; +. + shui:isBoolean a sh:NodeShape ; sh:datatype xsd:boolean ; diff --git a/shacl12-ui/widgets/editors/blank-node-editor.ttl b/shacl12-ui/widgets/editors/blank-node-editor.ttl new file mode 100644 index 00000000..40a51829 --- /dev/null +++ b/shacl12-ui/widgets/editors/blank-node-editor.ttl @@ -0,0 +1,9 @@ +PREFIX shui: +PREFIX xsd: + +shui:blankNodeEditorScore1 + a shui:WidgetScore ; + shui:dataGraphShape shui:isBlankNode ; + shui:score 1 ; + shui:widget shui:BlankNodeEditor ; +. From a26bc5ab485a53db6677f47ab02a8d4ac99cfd84 Mon Sep 17 00:00:00 2001 From: Edmond Chuc Date: Thu, 18 Dec 2025 15:15:28 +1000 Subject: [PATCH 05/26] feat(ui): add date picker editor score --- shacl12-ui/index.html | 2 +- .../widgets/editors/boolean-select-editor.ttl | 2 +- .../widgets/editors/date-picker-editor.ttl | 16 ++++++++++++++++ ...a-graph-shapes-graph.ttl => score-shapes.ttl} | 13 +++++++++++++ shacl12-ui/widgets/shapes-graph-shapes-graph.ttl | 16 ---------------- 5 files changed, 31 insertions(+), 18 deletions(-) create mode 100644 shacl12-ui/widgets/editors/date-picker-editor.ttl rename shacl12-ui/widgets/{data-graph-shapes-graph.ttl => score-shapes.ttl} (60%) delete mode 100644 shacl12-ui/widgets/shapes-graph-shapes-graph.ttl diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html index 10fda813..d1bc2beb 100644 --- a/shacl12-ui/index.html +++ b/shacl12-ui/index.html @@ -1078,7 +1078,7 @@

shui:DatePickerEditor

diff --git a/shacl12-ui/widgets/editors/boolean-select-editor.ttl b/shacl12-ui/widgets/editors/boolean-select-editor.ttl index cc3f6b04..c19359b3 100644 --- a/shacl12-ui/widgets/editors/boolean-select-editor.ttl +++ b/shacl12-ui/widgets/editors/boolean-select-editor.ttl @@ -11,6 +11,6 @@ shui:booleanSelectEditorScore10 shui:booleanSelectEditorScoreNull a shui:WidgetScore ; shui:score 0 ; - shui:shapesGraphShape shui:literalNoDatatypeSpecified ; + shui:shapesGraphShape shui:literalsAllowedAndNoDatatypeSpecified ; shui:widget shui:BooleanSelectEditor ; . diff --git a/shacl12-ui/widgets/editors/date-picker-editor.ttl b/shacl12-ui/widgets/editors/date-picker-editor.ttl new file mode 100644 index 00000000..7f459ab2 --- /dev/null +++ b/shacl12-ui/widgets/editors/date-picker-editor.ttl @@ -0,0 +1,16 @@ +PREFIX shui: +PREFIX xsd: + +shui:datePickerEditorScore10 + a shui:WidgetScore ; + shui:dataGraphShape shui:isDate ; + shui:score 10 ; + shui:widget shui:DatePickerEditor ; +. + +shui:datePickerEditorScore5 + a shui:WidgetScore ; + shui:score 5 ; + shui:shapeGraphShape shui:isDate ; + shui:widget shui:DatePickerEditor ; +. diff --git a/shacl12-ui/widgets/data-graph-shapes-graph.ttl b/shacl12-ui/widgets/score-shapes.ttl similarity index 60% rename from shacl12-ui/widgets/data-graph-shapes-graph.ttl rename to shacl12-ui/widgets/score-shapes.ttl index 52362b80..d52e1409 100644 --- a/shacl12-ui/widgets/data-graph-shapes-graph.ttl +++ b/shacl12-ui/widgets/score-shapes.ttl @@ -21,3 +21,16 @@ shui:isIRI a sh:NodeShape ; sh:nodeKind sh:IRI ; . + +shui:literalsAllowedAndNoDatatypeSpecified + a sh:NodeShape ; + sh:property + [ + sh:hasValue sh:Literal ; + sh:path sh:nodeKind ; + ] , + [ + sh:maxCount 0 ; + sh:path sh:datatype ; + ] ; +. diff --git a/shacl12-ui/widgets/shapes-graph-shapes-graph.ttl b/shacl12-ui/widgets/shapes-graph-shapes-graph.ttl deleted file mode 100644 index 50324259..00000000 --- a/shacl12-ui/widgets/shapes-graph-shapes-graph.ttl +++ /dev/null @@ -1,16 +0,0 @@ -PREFIX sh: -PREFIX shui: -PREFIX xsd: - -shui:literalNoDatatypeSpecified - a sh:NodeShape ; - sh:property - [ - sh:hasValue sh:Literal ; - sh:path sh:nodeKind ; - ] , - [ - sh:maxCount 0 ; - sh:path sh:datatype ; - ] ; -. From 0d8d5582171a8761866335f0d19e7b8635995fe4 Mon Sep 17 00:00:00 2001 From: smessie Date: Mon, 5 Jan 2026 12:03:37 +0100 Subject: [PATCH 06/26] feat(ui): add date time picker editor score --- shacl12-ui/index.html | 8 ++++---- .../widgets/editors/date-time-picker-editor.ttl | 16 ++++++++++++++++ shacl12-ui/widgets/score-shapes.ttl | 7 ++++++- 3 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 shacl12-ui/widgets/editors/date-time-picker-editor.ttl diff --git a/shacl12-ui/index.html b/shacl12-ui/index.html index d1bc2beb..ce6906d3 100644 --- a/shacl12-ui/index.html +++ b/shacl12-ui/index.html @@ -1100,7 +1100,7 @@

shui:DateTimePickerEditor

@@ -1629,12 +1629,12 @@

Property Roles

Direct Role Annotation

- Property roles can be annotated on property shapes by using the shui:propertyRole predicate and linking directly to a property role instance. + Property roles can be annotated on property shapes by using the shui:propertyRole predicate and linking directly to a property role instance. SHACL renderers may use such direct annotations to drive the way specific user-interface elements are displayed.

- It is possible but not recommended to assign the same property role to multiple property shapes that apply to the same focus node using the direct role annotation form. + It is possible but not recommended to assign the same property role to multiple property shapes that apply to the same focus node using the direct role annotation form. When this is done, the resulting behavior is undefined.

@@ -1653,7 +1653,7 @@

Direct Role Annotation

- This example illustrates the common case where a property shape is directly annotated with shui:LabelRole. + This example illustrates the common case where a property shape is directly annotated with shui:LabelRole. This informs user-interfaces that the shape's value nodes represent human-readable labels for resources.

diff --git a/shacl12-ui/widgets/editors/date-time-picker-editor.ttl b/shacl12-ui/widgets/editors/date-time-picker-editor.ttl new file mode 100644 index 00000000..0a14b860 --- /dev/null +++ b/shacl12-ui/widgets/editors/date-time-picker-editor.ttl @@ -0,0 +1,16 @@ +PREFIX shui: +PREFIX xsd: + +shui:dateTimePickerEditorScore10 + a shui:WidgetScore ; + shui:dataGraphShape shui:isDateTime ; + shui:score 10 ; + shui:widget shui:DateTimePickerEditor ; +. + +shui:dateTimePickerEditorScore5 + a shui:WidgetScore ; + shui:score 5 ; + shui:shapeGraphShape shui:isDateTime ; + shui:widget shui:DateTimePickerEditor ; +. diff --git a/shacl12-ui/widgets/score-shapes.ttl b/shacl12-ui/widgets/score-shapes.ttl index d52e1409..4eaa4955 100644 --- a/shacl12-ui/widgets/score-shapes.ttl +++ b/shacl12-ui/widgets/score-shapes.ttl @@ -17,6 +17,11 @@ shui:isDate sh:datatype xsd:date ; . +shui:isDateTime + a sh:NodeShape ; + sh:datatype xsd:dateTime ; +. + shui:isIRI a sh:NodeShape ; sh:nodeKind sh:IRI ; @@ -24,7 +29,7 @@ shui:isIRI shui:literalsAllowedAndNoDatatypeSpecified a sh:NodeShape ; - sh:property + sh:property [ sh:hasValue sh:Literal ; sh:path sh:nodeKind ; From e58645fa723144435726874facac3293fb7f4f38 Mon Sep 17 00:00:00 2001 From: smessie 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 ; +.