@@ -885,7 +885,11 @@ <h3>SHACL Example</h3>
885
885
}
886
886
}</ pre >
887
887
</ div >
888
- </ div >
888
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:PersonShape -> ex:Person {
889
+ closed=true ignoredProperties=[rdf:type] .
890
+ ex:ssn xsd:string [0..1] pattern="^\\d{3}-\\d{2}-\\d{4}$" .
891
+ ex:worksFor IRI ex:Company .
892
+ }</ pre > </ div > </ div >
889
893
</ aside >
890
894
< p >
891
895
We can use the shape declaration above to illustrate some of the key terminology used by SHACL.
@@ -1303,7 +1307,10 @@ <h3>Constraints, Parameters and Constraint Components</h3>
1303
1307
]
1304
1308
}</ pre >
1305
1309
</ div >
1306
- </ div >
1310
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:MultiplePatternsShape {
1311
+ ex:name pattern="^Start" flags="i" .
1312
+ ex:name pattern="End$" .
1313
+ }</ pre > </ div > </ div >
1307
1314
</ aside >
1308
1315
< p >
1309
1316
Constraint components are associated with < dfn data-lt ="validator|validators "> validators</ dfn > , which provide instructions (for example expressed via SPARQL queries)
@@ -1397,7 +1404,9 @@ <h4>Node targets (sh:targetNode)</h4>
1397
1404
}
1398
1405
}</ pre >
1399
1406
</ div >
1400
- </ div >
1407
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:PersonShape {
1408
+ targetNode=ex:Alice .
1409
+ }</ pre > </ div > </ div >
1401
1410
< div class ="data-graph ">
1402
1411
< div class ="turtle ">
1403
1412
< span class ="focus-node-selected "> ex:Alice</ span > a ex:Person .
@@ -1450,7 +1459,8 @@ <h4>Class-based Targets (sh:targetClass)</h4>
1450
1459
}
1451
1460
}</ pre >
1452
1461
</ div >
1453
- </ div >
1462
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:PersonShape -> ex:Person {
1463
+ }</ pre > </ div > </ div >
1454
1464
1455
1465
< div class ="data-graph ">
1456
1466
< div class ="turtle ">
@@ -1568,7 +1578,8 @@ <h4>Implicit Class Targets and sh:ShapeClass</h4>
1568
1578
]
1569
1579
}</ pre >
1570
1580
</ div >
1571
- </ div >
1581
+ < div class ="shaclc "> < pre class ="shaclc "> shapeClass ex:Person {
1582
+ }</ pre > </ div > </ div >
1572
1583
< div class ="data-graph ">
1573
1584
< div class ="turtle ">
1574
1585
< span class ="focus-node-selected "> ex:Alice</ span > a ex:Person .
@@ -1640,7 +1651,9 @@ <h4>Subjects-of targets (sh:targetSubjectsOf)</h4>
1640
1651
}
1641
1652
}</ pre >
1642
1653
</ div >
1643
- </ div >
1654
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:TargetSubjectsOfExampleShape {
1655
+ targetSubjectsOf=ex:knows .
1656
+ }</ pre > </ div > </ div >
1644
1657
< div class ="data-graph ">
1645
1658
< div class ="turtle ">
1646
1659
< span class ="focus-node-selected "> ex:Alice</ span > ex:knows ex:Bob .
@@ -1702,7 +1715,9 @@ <h4>Objects-of targets (sh:targetObjectsOf)</h4>
1702
1715
}
1703
1716
}</ pre >
1704
1717
</ div >
1705
- </ div >
1718
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:TargetObjectsOfExampleShape {
1719
+ targetObjectsOf=ex:knows .
1720
+ }</ pre > </ div > </ div >
1706
1721
< div class ="data-graph ">
1707
1722
< div class ="turtle ">
1708
1723
ex:Alice ex:knows < span class ="focus-node-selected "> ex:Bob</ span > .
@@ -1853,7 +1868,11 @@ <h4>Declaring the Severity of a Shape or Constraint</h4>
1853
1868
}
1854
1869
}</ pre >
1855
1870
</ div >
1856
- </ div >
1871
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:MyShape {
1872
+ targetNode=ex:MyInstance .
1873
+ ex:myProperty xsd:string [1..*] severity=Warning .
1874
+ ex:myProperty maxLength=10 message="Too many characters"@en message="Zu viele Zeichen"@de .
1875
+ }</ pre > </ div > </ div >
1857
1876
< div class ="data-graph ">
1858
1877
< div class ="turtle ">
1859
1878
ex:MyInstance
@@ -3220,7 +3239,10 @@ <h4>sh:class</h4>
3220
3239
]
3221
3240
}</ pre >
3222
3241
</ div >
3223
- </ div >
3242
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:ClassExampleShape {
3243
+ targetNode=ex:Bob targetNode=ex:Alice targetNode=ex:Carol .
3244
+ ex:address ex:PostalAddress .
3245
+ }</ pre > </ div > </ div >
3224
3246
< div class ="data-graph ">
3225
3247
< div class ="turtle ">
3226
3248
ex:Alice a ex:Person .
@@ -3372,7 +3394,10 @@ <h4>sh:datatype</h4>
3372
3394
]
3373
3395
}</ pre >
3374
3396
</ div >
3375
- </ div >
3397
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:DatatypeExampleShape {
3398
+ targetNode=ex:Alice targetNode=ex:Bob targetNode=ex:Carol .
3399
+ ex:age xsd:integer .
3400
+ }</ pre > </ div > </ div >
3376
3401
< div class ="data-graph ">
3377
3402
< div class ="turtle ">
3378
3403
ex:Alice ex:age "23"^^xsd:integer .
@@ -3499,7 +3524,9 @@ <h4>sh:nodeKind</h4>
3499
3524
}
3500
3525
}</ pre >
3501
3526
</ div >
3502
- </ div >
3527
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:NodeKindExampleShape {
3528
+ targetObjectsOf=ex:knows nodeKind=IRI .
3529
+ }</ pre > </ div > </ div >
3503
3530
< div class ="data-graph ">
3504
3531
< div class ="turtle ">
3505
3532
ex:Bob ex:knows ex:Alice .
@@ -3690,7 +3717,10 @@ <h4>sh:maxCount</h4>
3690
3717
}
3691
3718
}</ pre >
3692
3719
</ div >
3693
- </ div >
3720
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:MaxCountExampleShape {
3721
+ targetNode=ex:Bob .
3722
+ ex:birthDate [0..1] .
3723
+ }</ pre > </ div > </ div >
3694
3724
< div class ="data-graph ">
3695
3725
< div class ="turtle ">
3696
3726
ex:Bob ex:birthDate "May 5th 1990" .
@@ -3755,7 +3785,10 @@ <h3>Value Range Constraint Components</h3>
3755
3785
]
3756
3786
}</ pre >
3757
3787
</ div >
3758
- </ div >
3788
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:NumericRangeExampleShape {
3789
+ targetNode=ex:Bob targetNode=ex:Alice targetNode=ex:Ted .
3790
+ ex:age minInclusive=0 maxInclusive=150 .
3791
+ }</ pre > </ div > </ div >
3759
3792
3760
3793
< div class ="data-graph ">
3761
3794
< div class ="turtle ">
@@ -4057,7 +4090,10 @@ <h4>sh:maxLength</h4>
4057
4090
]
4058
4091
}</ pre >
4059
4092
</ div >
4060
- </ div >
4093
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:PasswordExampleShape {
4094
+ targetNode=ex:Bob targetNode=ex:Alice .
4095
+ ex:password minLength=8 maxLength=10 .
4096
+ }</ pre > </ div > </ div >
4061
4097
< div class ="data-graph ">
4062
4098
< div class ="turtle ">
4063
4099
ex:Bob ex:password "123456789" .
@@ -4164,7 +4200,10 @@ <h4>sh:pattern</h4>
4164
4200
]
4165
4201
}</ pre >
4166
4202
</ div >
4167
- </ div >
4203
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:PatternExampleShape {
4204
+ targetNode=ex:Bob targetNode=ex:Alice targetNode=ex:Carol .
4205
+ ex:bCode pattern="^B" flags="i" .
4206
+ }</ pre > </ div > </ div >
4168
4207
< div class ="data-graph ">
4169
4208
< div class ="turtle ">
4170
4209
ex:Bob ex:bCode "b101" .
@@ -4385,7 +4424,10 @@ <h4>sh:languageIn</h4>
4385
4424
]
4386
4425
}</ pre >
4387
4426
</ div >
4388
- </ div >
4427
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:NewZealandLanguagesShape {
4428
+ targetNode=ex:Mountain targetNode=ex:Berg .
4429
+ ex:prefLabel languageIn=["en" "mi"] .
4430
+ }</ pre > </ div > </ div >
4389
4431
< p >
4390
4432
From the example instances, < code > ex:Berg</ code > will lead to constraint violations for all
4391
4433
of its labels.
@@ -4513,7 +4555,10 @@ <h4>sh:uniqueLang</h4>
4513
4555
]
4514
4556
}</ pre >
4515
4557
</ div >
4516
- </ div >
4558
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:UniqueLangExampleShape {
4559
+ targetNode=ex:Alice targetNode=ex:Bob .
4560
+ ex:label uniqueLang=true .
4561
+ }</ pre > </ div > </ div >
4517
4562
< div class ="data-graph ">
4518
4563
< div class ="turtle ">
4519
4564
ex:Alice
@@ -5104,7 +5149,10 @@ <h4>sh:equals</h4>
5104
5149
}
5105
5150
}</ pre >
5106
5151
</ div >
5107
- </ div >
5152
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:EqualExampleShape {
5153
+ targetNode=ex:Bob .
5154
+ ex:firstName equals=ex:givenName .
5155
+ }</ pre > </ div > </ div >
5108
5156
< div class ="data-graph ">
5109
5157
< div class ="turtle ">
5110
5158
ex:Bob
@@ -5197,7 +5245,10 @@ <h4>sh:disjoint</h4>
5197
5245
]
5198
5246
}</ pre >
5199
5247
</ div >
5200
- </ div >
5248
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:DisjointExampleShape {
5249
+ targetNode=ex:USA targetNode=ex:Germany .
5250
+ ex:prefLabel disjoint=ex:altLabel .
5251
+ }</ pre > </ div > </ div >
5201
5252
< div class ="data-graph ">
5202
5253
< div class ="turtle ">
5203
5254
ex:USA
@@ -5293,7 +5344,9 @@ <h4>sh:lessThan</h4>
5293
5344
}
5294
5345
}</ pre >
5295
5346
</ div >
5296
- </ div >
5347
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:LessThanExampleShape {
5348
+ ex:startDate lessThan=ex:endDate .
5349
+ }</ pre > </ div > </ div >
5297
5350
</ aside >
5298
5351
</ section >
5299
5352
@@ -5742,7 +5795,9 @@ <h4>sh:or</h4>
5742
5795
}
5743
5796
}</ pre >
5744
5797
</ div >
5745
- </ div >
5798
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:PersonAddressShape -> ex:Person {
5799
+ ex:address xsd:string|ex:Address .
5800
+ }</ pre > </ div > </ div >
5746
5801
< div class ="data-graph ">
5747
5802
< div class ="turtle ">
5748
5803
ex:Bob ex:address "123 Prinzengasse, Vaduz, Liechtenstein" .
@@ -6074,7 +6129,12 @@ <h4>sh:node</h4>
6074
6129
]
6075
6130
}</ pre >
6076
6131
</ div >
6077
- </ div >
6132
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:AddressShape {
6133
+ ex:postalCode xsd:string [0..1] .
6134
+ }
6135
+ shape ex:PersonShape -> ex:Person {
6136
+ ex:address [1..*] @ex:AddressShape .
6137
+ }</ pre > </ div > </ div >
6078
6138
< div class ="data-graph ">
6079
6139
< div class ="turtle ">
6080
6140
ex:Bob a ex:Person ;
@@ -7069,7 +7129,11 @@ <h3>sh:closed, sh:ignoredProperties</h3>
7069
7129
]
7070
7130
}</ pre >
7071
7131
</ div >
7072
- </ div >
7132
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:ClosedShapeExampleShape {
7133
+ targetNode=ex:Alice targetNode=ex:Bob closed=true ignoredProperties=[rdf:type] .
7134
+ ex:firstName .
7135
+ ex:lastName .
7136
+ }</ pre > </ div > </ div >
7073
7137
< div class ="data-graph ">
7074
7138
< div class ="turtle ">
7075
7139
ex:Alice
@@ -7168,7 +7232,10 @@ <h4>sh:hasValue</h4>
7168
7232
}
7169
7233
}</ pre >
7170
7234
</ div >
7171
- </ div >
7235
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:StanfordGraduate {
7236
+ targetNode=ex:Alice .
7237
+ ex:alumniOf hasValue=ex:Stanford .
7238
+ }</ pre > </ div > </ div >
7172
7239
< div class ="data-graph ">
7173
7240
< div class ="turtle ">
7174
7241
ex:Alice
@@ -7266,7 +7333,10 @@ <h4>sh:in</h4>
7266
7333
}
7267
7334
}</ pre >
7268
7335
</ div >
7269
- </ div >
7336
+ < div class ="shaclc "> < pre class ="shaclc "> shape ex:InExampleShape {
7337
+ targetNode=ex:RainbowPony .
7338
+ ex:color in=[ex:Pink ex:Purple] .
7339
+ }</ pre > </ div > </ div >
7270
7340
< div class ="data-graph ">
7271
7341
< div class ="turtle ">
7272
7342
ex:RainbowPony ex:color ex:Pink .
@@ -7850,4 +7920,5 @@ <h2>Changes between SHACL 1.0 Core and SHACL 1.2 Core</h2>
7850
7920
7851
7921
7852
7922
7923
+
7853
7924
</ body > </ html >
0 commit comments