From 5498be5217323a5f5de15f8731fd88b6723d1115 Mon Sep 17 00:00:00 2001
From: Vladimir Alexiev
Date: Tue, 5 Aug 2025 10:22:02 +0300
Subject: [PATCH 01/10] minor editorial change
---
shacl12-vocabularies/shacl-shacl.ttl | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/shacl12-vocabularies/shacl-shacl.ttl b/shacl12-vocabularies/shacl-shacl.ttl
index 31f7e7a5..fc0536f3 100644
--- a/shacl12-vocabularies/shacl-shacl.ttl
+++ b/shacl12-vocabularies/shacl-shacl.ttl
@@ -23,11 +23,11 @@ shsh:
shsh:ListShape
a sh:NodeShape ;
rdfs:label "List shape"@en ;
- rdfs:comment "A shape describing well-formed RDF lists. Currently does not check for non-recursion. This could be expressed using SHACL-SPARQL."@en ;
+ rdfs:comment "A shape describing well-formed RDF lists. Currently does not check for non-recursion (this could be expressed using SHACL-SPARQL)."@en ;
rdfs:seeAlso ;
sh:property [
sh:path [ sh:zeroOrMorePath rdf:rest ] ;
- rdfs:comment "Each list member (including this node) must be have the shape shsh:ListNodeShape."@en ;
+ rdfs:comment "Each list member (including this node) must have the shape shsh:ListNodeShape."@en ;
sh:hasValue rdf:nil ;
sh:node shsh:ListNodeShape ;
] .
From 8243c01cb58fc65b2dd2ae261dc9c98e27418709 Mon Sep 17 00:00:00 2001
From: Vladimir Alexiev
Date: Tue, 5 Aug 2025 17:20:52 +0300
Subject: [PATCH 02/10] plantuml version of diagram
---
shacl12-core/images/Makefile | 4 +++
shacl12-core/images/SHACL-UML.puml | 47 ++++++++++++++++++++++++++++++
shacl12-core/images/SHACL-UML.svg | 1 +
3 files changed, 52 insertions(+)
create mode 100644 shacl12-core/images/Makefile
create mode 100644 shacl12-core/images/SHACL-UML.puml
create mode 100644 shacl12-core/images/SHACL-UML.svg
diff --git a/shacl12-core/images/Makefile b/shacl12-core/images/Makefile
new file mode 100644
index 00000000..0a74db0f
--- /dev/null
+++ b/shacl12-core/images/Makefile
@@ -0,0 +1,4 @@
+all: SHACL-UML.svg
+
+%.svg: %.puml
+ plantuml -Tsvg $^
diff --git a/shacl12-core/images/SHACL-UML.puml b/shacl12-core/images/SHACL-UML.puml
new file mode 100644
index 00000000..b29fdd53
--- /dev/null
+++ b/shacl12-core/images/SHACL-UML.puml
@@ -0,0 +1,47 @@
+@startuml
+hide circles
+hide empty members
+skinparam topurl https://raw.githack.com/w3c/data-shapes/master/shacl12-core/index.html
+
+class "sh:Shape" as Shape [[#shapes]] {
+ [[#targetClass sh:targetClass]] : rdfs:Class
+ [[#targetNode sh:targetNode]] : any
+ [[#targetObjectsOf sh:targetObjectsOf]] : rdf:Property
+ [[#targetSubjectsOf sh:targetSubjectsOf]] : rdf:Property
+ ....
+ [[#deactivated sh:deactivated]] : xsd:boolean
+ [[#message sh:message]] : xsd:string or rdf:langString
+ [[#severity sh:severity]] : sh:Severity
+}
+
+class "sh:NodeShape" as NodeShape [[#node-shapes]] {
+ [[#constraints Constraint parameters]], for example:
+ [[#closedConstraintComponent sh:closed]] : xsd:boolean or [[#syntax-rule-closed-datatype sh:ByTypes]]
+ [[#orConstraintComponent sh:or]], [[#andConstraintComponent sh:and]], [[#xoneConstraintComponent sh:xone]] : rdf:List
+ [[#notConstraintComponent sh:not]] : [[#shapes sh:Shape]]
+}
+
+class "sh:PropertyShape" as PropertyShape [[#property-shapes]] {
+ [[#constraints Constraint parameters]], for example:
+ [[#MinCountConstraintComponent sh:minCount]], [[#MaxCountConstraintComponent sh:maxCount]] : xsd:integer
+ [[#MinLengthConstraintComponent sh:minLength]], [[#MaxLengthConstraintComponent sh:maxLength]] : xsd:integer
+ [[#ClassConstraintComponent sh:class]] or [[#DatatypeConstraintComponent sh:datatype]] : rdfs:Resource or\n rdf:List of rdfs:Resources
+ [[#NodeConstraintComponent sh:node]] : [[#node-shapes sh:NodeShape]]
+ ....
+ [[#name sh:name]] : xsd:string or rdf:langString
+ [[#desription sh:description]] : xsd:string or rdf:langString
+ [[#syntax-rule-path-defaultValue sh:defaultValue]] : any
+ [[#syntax-rule-path-defaultValue sh:values]] : any
+ [[#order sh:order]] : number
+ [[#property-shapes sh:path]] : rdfs:Resource
+}
+
+class "sh:PropertyGroup" as PropertyGroup [[#group sh:group]] {
+ [[#group sh:order]] : number
+}
+
+Shape <|-- NodeShape
+Shape <|-- PropertyShape
+NodeShape -> PropertyShape : [[#property-shapes sh:property]] *
+PropertyShape --> PropertyGroup : [[#group sh:group]]
+@enduml
diff --git a/shacl12-core/images/SHACL-UML.svg b/shacl12-core/images/SHACL-UML.svg
new file mode 100644
index 00000000..9998fc2d
--- /dev/null
+++ b/shacl12-core/images/SHACL-UML.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
From 3de3e449a9c93e651479352618c7a259c90c1fa4 Mon Sep 17 00:00:00 2001
From: Vladimir Alexiev
Date: Tue, 5 Aug 2025 18:01:41 +0300
Subject: [PATCH 03/10] add manual `` and `` tags to class names
---
shacl12-core/images/SHACL-UML.puml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/shacl12-core/images/SHACL-UML.puml b/shacl12-core/images/SHACL-UML.puml
index b29fdd53..ac3304a1 100644
--- a/shacl12-core/images/SHACL-UML.puml
+++ b/shacl12-core/images/SHACL-UML.puml
@@ -3,7 +3,7 @@ hide circles
hide empty members
skinparam topurl https://raw.githack.com/w3c/data-shapes/master/shacl12-core/index.html
-class "sh:Shape" as Shape [[#shapes]] {
+class "sh:Shape" as Shape [[#shapes]] {
[[#targetClass sh:targetClass]] : rdfs:Class
[[#targetNode sh:targetNode]] : any
[[#targetObjectsOf sh:targetObjectsOf]] : rdf:Property
@@ -14,14 +14,14 @@ class "sh:Shape" as Shape [[#shapes]] {
[[#severity sh:severity]] : sh:Severity
}
-class "sh:NodeShape" as NodeShape [[#node-shapes]] {
+class "sh:NodeShape" as NodeShape [[#node-shapes]] {
[[#constraints Constraint parameters]], for example:
[[#closedConstraintComponent sh:closed]] : xsd:boolean or [[#syntax-rule-closed-datatype sh:ByTypes]]
[[#orConstraintComponent sh:or]], [[#andConstraintComponent sh:and]], [[#xoneConstraintComponent sh:xone]] : rdf:List
[[#notConstraintComponent sh:not]] : [[#shapes sh:Shape]]
}
-class "sh:PropertyShape" as PropertyShape [[#property-shapes]] {
+class "sh:PropertyShape" as PropertyShape [[#property-shapes]] {
[[#constraints Constraint parameters]], for example:
[[#MinCountConstraintComponent sh:minCount]], [[#MaxCountConstraintComponent sh:maxCount]] : xsd:integer
[[#MinLengthConstraintComponent sh:minLength]], [[#MaxLengthConstraintComponent sh:maxLength]] : xsd:integer
From 01b4b1bebc2eac7bfb6e4fcf5a0d2ea725192274 Mon Sep 17 00:00:00 2001
From: Vladimir Alexiev
Date: Tue, 5 Aug 2025 18:03:18 +0300
Subject: [PATCH 04/10] add manual `` and `` tags to class names
---
shacl12-core/images/SHACL-UML.svg | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/shacl12-core/images/SHACL-UML.svg b/shacl12-core/images/SHACL-UML.svg
index 9998fc2d..ead7cf11 100644
--- a/shacl12-core/images/SHACL-UML.svg
+++ b/shacl12-core/images/SHACL-UML.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
From 138b174a1ad80619133109fe18cb30358b827151 Mon Sep 17 00:00:00 2001
From: Vladimir Alexiev
Date: Wed, 6 Aug 2025 19:51:35 +0300
Subject: [PATCH 05/10] Update shacl12-core/images/SHACL-UML.puml
Co-authored-by: Yousouf Taghzouti <48333491+YoucTagh@users.noreply.github.com>
---
shacl12-core/images/SHACL-UML.puml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/shacl12-core/images/SHACL-UML.puml b/shacl12-core/images/SHACL-UML.puml
index ac3304a1..ce77425c 100644
--- a/shacl12-core/images/SHACL-UML.puml
+++ b/shacl12-core/images/SHACL-UML.puml
@@ -16,9 +16,9 @@ class "sh:Shape" as Shape [[#shapes]] {
class "sh:NodeShape" as NodeShape [[#node-shapes]] {
[[#constraints Constraint parameters]], for example:
- [[#closedConstraintComponent sh:closed]] : xsd:boolean or [[#syntax-rule-closed-datatype sh:ByTypes]]
- [[#orConstraintComponent sh:or]], [[#andConstraintComponent sh:and]], [[#xoneConstraintComponent sh:xone]] : rdf:List
- [[#notConstraintComponent sh:not]] : [[#shapes sh:Shape]]
+ [[#ClosedConstraintComponent sh:closed]] : xsd:boolean or [[#syntax-rule-closed-datatype sh:ByTypes]]
+ [[#OrConstraintComponent sh:or]], [[#AndConstraintComponent sh:and]], [[#XoneConstraintComponent sh:xone]] : rdf:List
+ [[#NotConstraintComponent sh:not]] : [[#shapes sh:Shape]]
}
class "sh:PropertyShape" as PropertyShape [[#property-shapes]] {
From b991942f7d1174970e7a51f72b3d12f9a0903da3 Mon Sep 17 00:00:00 2001
From: Vladimir Alexiev
Date: Wed, 6 Aug 2025 19:51:44 +0300
Subject: [PATCH 06/10] Update shacl12-core/images/SHACL-UML.puml
Co-authored-by: Yousouf Taghzouti <48333491+YoucTagh@users.noreply.github.com>
---
shacl12-core/images/SHACL-UML.puml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/shacl12-core/images/SHACL-UML.puml b/shacl12-core/images/SHACL-UML.puml
index ce77425c..6252a34c 100644
--- a/shacl12-core/images/SHACL-UML.puml
+++ b/shacl12-core/images/SHACL-UML.puml
@@ -29,7 +29,7 @@ class "sh:PropertyShape" as PropertyShape [[#property-shapes]] {
[[#NodeConstraintComponent sh:node]] : [[#node-shapes sh:NodeShape]]
....
[[#name sh:name]] : xsd:string or rdf:langString
- [[#desription sh:description]] : xsd:string or rdf:langString
+ [[#description sh:description]] : xsd:string or rdf:langString
[[#syntax-rule-path-defaultValue sh:defaultValue]] : any
[[#syntax-rule-path-defaultValue sh:values]] : any
[[#order sh:order]] : number
From 72e0ff6ec98a952befd01b9370e1710128d7b0f6 Mon Sep 17 00:00:00 2001
From: Vladimir Alexiev
Date: Thu, 7 Aug 2025 13:01:51 +0300
Subject: [PATCH 07/10] - sh:order: xsd:integer or xsd:decimal - sh:path :
predicate or list or blank node and link to #property-paths - add ellipsis as
per TallTed - rdf:List -> "list" because SHACL doesn't require the rdf:List
type - add sh:nodeKind, sh:ignoredProperties
---
shacl12-core/images/SHACL-UML.puml | 17 +++++++++++------
shacl12-core/images/SHACL-UML.svg | 2 +-
2 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/shacl12-core/images/SHACL-UML.puml b/shacl12-core/images/SHACL-UML.puml
index 6252a34c..c9ba5c11 100644
--- a/shacl12-core/images/SHACL-UML.puml
+++ b/shacl12-core/images/SHACL-UML.puml
@@ -6,8 +6,8 @@ skinparam topurl https://raw.githack.com/w3c/data-shapes/master/shacl12-core/ind
class "sh:Shape" as Shape [[#shapes]] {
[[#targetClass sh:targetClass]] : rdfs:Class
[[#targetNode sh:targetNode]] : any
- [[#targetObjectsOf sh:targetObjectsOf]] : rdf:Property
[[#targetSubjectsOf sh:targetSubjectsOf]] : rdf:Property
+ [[#targetObjectsOf sh:targetObjectsOf]] : rdf:Property
....
[[#deactivated sh:deactivated]] : xsd:boolean
[[#message sh:message]] : xsd:string or rdf:langString
@@ -16,28 +16,33 @@ class "sh:Shape" as Shape [[#shapes]] {
class "sh:NodeShape" as NodeShape [[#node-shapes]] {
[[#constraints Constraint parameters]], for example:
+ [[#NodeKindConstraintComponent sh:nodeKind]] a sh:NodeKind
[[#ClosedConstraintComponent sh:closed]] : xsd:boolean or [[#syntax-rule-closed-datatype sh:ByTypes]]
- [[#OrConstraintComponent sh:or]], [[#AndConstraintComponent sh:and]], [[#XoneConstraintComponent sh:xone]] : rdf:List
+ [[#ClosedConstraintComponent sh:ignoredProperties]] : list
+ [[#OrConstraintComponent sh:or]], [[#AndConstraintComponent sh:and]], [[#XoneConstraintComponent sh:xone]] : list of Shape
[[#NotConstraintComponent sh:not]] : [[#shapes sh:Shape]]
+ ...
}
class "sh:PropertyShape" as PropertyShape [[#property-shapes]] {
[[#constraints Constraint parameters]], for example:
[[#MinCountConstraintComponent sh:minCount]], [[#MaxCountConstraintComponent sh:maxCount]] : xsd:integer
[[#MinLengthConstraintComponent sh:minLength]], [[#MaxLengthConstraintComponent sh:maxLength]] : xsd:integer
- [[#ClassConstraintComponent sh:class]] or [[#DatatypeConstraintComponent sh:datatype]] : rdfs:Resource or\n rdf:List of rdfs:Resources
+ [[#ClassConstraintComponent sh:class]] or [[#DatatypeConstraintComponent sh:datatype]] : IRI or list of IRIs
[[#NodeConstraintComponent sh:node]] : [[#node-shapes sh:NodeShape]]
+ ...
....
[[#name sh:name]] : xsd:string or rdf:langString
[[#description sh:description]] : xsd:string or rdf:langString
[[#syntax-rule-path-defaultValue sh:defaultValue]] : any
[[#syntax-rule-path-defaultValue sh:values]] : any
- [[#order sh:order]] : number
- [[#property-shapes sh:path]] : rdfs:Resource
+ [[#order sh:order]] : xsd:integer or xsd:decimal
+ [[#property-paths sh:path]] : predicate or list or blank node
}
class "sh:PropertyGroup" as PropertyGroup [[#group sh:group]] {
- [[#group sh:order]] : number
+ [[#group sh:order]] : xsd:integer or xsd:decimal
+ ... eg rdfs:label
}
Shape <|-- NodeShape
diff --git a/shacl12-core/images/SHACL-UML.svg b/shacl12-core/images/SHACL-UML.svg
index ead7cf11..0969614d 100644
--- a/shacl12-core/images/SHACL-UML.svg
+++ b/shacl12-core/images/SHACL-UML.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
From 1ef89939a8bb9490b48f7cf98f93f69bd07a6597 Mon Sep 17 00:00:00 2001
From: Vladimir Alexiev
Date: Thu, 7 Aug 2025 13:02:48 +0300
Subject: [PATCH 08/10] add to PropertyGroup
---
shacl12-core/images/SHACL-UML.puml | 2 +-
shacl12-core/images/SHACL-UML.svg | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/shacl12-core/images/SHACL-UML.puml b/shacl12-core/images/SHACL-UML.puml
index c9ba5c11..54dcdfb9 100644
--- a/shacl12-core/images/SHACL-UML.puml
+++ b/shacl12-core/images/SHACL-UML.puml
@@ -40,7 +40,7 @@ class "sh:PropertyShape" as PropertyShape [[#property-shapes]] {
[[#property-paths sh:path]] : predicate or list or blank node
}
-class "sh:PropertyGroup" as PropertyGroup [[#group sh:group]] {
+class "sh:PropertyGroup" as PropertyGroup [[#group sh:group]] {
[[#group sh:order]] : xsd:integer or xsd:decimal
... eg rdfs:label
}
diff --git a/shacl12-core/images/SHACL-UML.svg b/shacl12-core/images/SHACL-UML.svg
index 0969614d..72660b47 100644
--- a/shacl12-core/images/SHACL-UML.svg
+++ b/shacl12-core/images/SHACL-UML.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
From 01fe8a27892dd56b8fa0ce364d4591b73f85f673 Mon Sep 17 00:00:00 2001
From: Vladimir Alexiev
Date: Thu, 7 Aug 2025 13:14:42 +0300
Subject: [PATCH 09/10] replace textual diagram with PlantUML SVG diagram
---
shacl12-core/images/Class-Diagram-Arrows.png | Bin 16225 -> 0 bytes
shacl12-core/images/SHACL-UML.puml | 2 +-
shacl12-core/images/SHACL-UML.svg | 2 +-
shacl12-core/index.html | 67 ++-----------------
4 files changed, 8 insertions(+), 63 deletions(-)
delete mode 100644 shacl12-core/images/Class-Diagram-Arrows.png
diff --git a/shacl12-core/images/Class-Diagram-Arrows.png b/shacl12-core/images/Class-Diagram-Arrows.png
deleted file mode 100644
index 7145e83f107c60bee374bcad622ce4e4dc8f4b12..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 16225
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
diff --git a/shacl12-core/images/SHACL-UML.puml b/shacl12-core/images/SHACL-UML.puml
index 54dcdfb9..cd5af8b6 100644
--- a/shacl12-core/images/SHACL-UML.puml
+++ b/shacl12-core/images/SHACL-UML.puml
@@ -1,7 +1,7 @@
@startuml
hide circles
hide empty members
-skinparam topurl https://raw.githack.com/w3c/data-shapes/master/shacl12-core/index.html
+' skinparam topurl https://raw.githack.com/w3c/data-shapes/master/shacl12-core/index.html ' Hope # anchors will resolve to current HTML page
class "sh:Shape" as Shape [[#shapes]] {
[[#targetClass sh:targetClass]] : rdfs:Class
diff --git a/shacl12-core/images/SHACL-UML.svg b/shacl12-core/images/SHACL-UML.svg
index 72660b47..c58d5ee5 100644
--- a/shacl12-core/images/SHACL-UML.svg
+++ b/shacl12-core/images/SHACL-UML.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/shacl12-core/index.html b/shacl12-core/index.html
index f2e51773..90282a0b 100644
--- a/shacl12-core/index.html
+++ b/shacl12-core/index.html
@@ -1115,70 +1115,15 @@
Shapes and Constraints
The following introduction is non-normative.
- The following informal diagram provides an overview of some of the key classes in the SHACL vocabulary.
+ The following UML diagram provides an overview of some of the key classes and properties in the SHACL vocabulary.
Each box represents a class.
The content of the boxes under the class name lists some of the properties that instances of these classes may have, together with their value types.
- The arrows indicate rdfs:subClassOf triples.
+ Empty arrowheads indicate inheritance (rdfs:subClassOf) and normal arrowheads indicate RDF relations.
+
From 367e5a18eb07cd0ec8dd4f220b41e93f95d0fd5d Mon Sep 17 00:00:00 2001
From: Vladimir Alexiev
Date: Thu, 7 Aug 2025 15:54:05 +0300
Subject: [PATCH 10/10] replace with script that embeds SVG content
---
shacl12-core/images/SHACL-UML.puml | 3 ++-
shacl12-core/images/SHACL-UML.svg | 2 +-
shacl12-core/index.html | 20 ++++++++++++++------
3 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/shacl12-core/images/SHACL-UML.puml b/shacl12-core/images/SHACL-UML.puml
index cd5af8b6..feea87ea 100644
--- a/shacl12-core/images/SHACL-UML.puml
+++ b/shacl12-core/images/SHACL-UML.puml
@@ -1,7 +1,8 @@
@startuml
hide circles
hide empty members
-' skinparam topurl https://raw.githack.com/w3c/data-shapes/master/shacl12-core/index.html ' Hope # anchors will resolve to current HTML page
+skinparam pathHoverColor red ' on cover, highlight blue links as red
+' skinparam topurl https://raw.githack.com/w3c/data-shapes/master/shacl12-core/index.html ' links resolve to anchors in current HTML page, when the SVG is embedded
class "sh:Shape" as Shape [[#shapes]] {
[[#targetClass sh:targetClass]] : rdfs:Class
diff --git a/shacl12-core/images/SHACL-UML.svg b/shacl12-core/images/SHACL-UML.svg
index c58d5ee5..2a34e1d6 100644
--- a/shacl12-core/images/SHACL-UML.svg
+++ b/shacl12-core/images/SHACL-UML.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/shacl12-core/index.html b/shacl12-core/index.html
index 90282a0b..274f5bce 100644
--- a/shacl12-core/index.html
+++ b/shacl12-core/index.html
@@ -1120,7 +1120,7 @@
Shapes and Constraints
The content of the boxes under the class name lists some of the properties that instances of these classes may have, together with their value types.
Empty arrowheads indicate inheritance (rdfs:subClassOf) and normal arrowheads indicate RDF relations.