Skip to content

Commit d58959b

Browse files
committed
Add SHACL to participants kg example
1 parent fe1154c commit d58959b

1 file changed

Lines changed: 89 additions & 68 deletions

File tree

src/examples/lod-barcamp/participants-kg.ttl

Lines changed: 89 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
ff:graph a ff:Graph;
55
ff:hasId "graph_2025-11-24_11-47-30";
66
ff:hasName "Participants Knowledge Graph";
7-
ff:hasExportTimestamp "2025-11-25T22:23:49.903Z";
8-
ff:hasTranslateX 25;
9-
ff:hasTranslateY 285;
10-
ff:hasNode ff:node1, ff:node2, ff:node3, ff:node4, ff:node5, ff:node6, ff:node7, ff:node8, ff:node9, ff:node10, ff:node11, ff:node12, ff:node13, ff:node14;
11-
ff:hasEdge ff:edge1, ff:edge2, ff:edge3, ff:edge4, ff:edge5, ff:edge6, ff:edge7, ff:edge8, ff:edge9, ff:edge10, ff:edge11, ff:edge12.
7+
ff:hasExportTimestamp "2025-11-26T11:24:13.270Z";
8+
ff:hasTranslateX 235;
9+
ff:hasTranslateY 173;
10+
ff:hasNode ff:node1, ff:node2, ff:node3, ff:node4, ff:node5, ff:node6, ff:node7, ff:node8, ff:node9, ff:node10, ff:node11, ff:node12, ff:node13, ff:node14, ff:node15, ff:node16;
11+
ff:hasEdge ff:edge1, ff:edge2, ff:edge3, ff:edge4, ff:edge5, ff:edge6, ff:edge7, ff:edge8, ff:edge9, ff:edge10, ff:edge11, ff:edge12, ff:edge13, ff:edge14.
1212
ff:node1 a ff:Node;
1313
ff:hasClass ff:TurtleInputNode;
1414
ff:hasName "Turtle Input";
@@ -22,139 +22,160 @@ ff:node2 a ff:Node;
2222
ff:hasPosY "415";
2323
ff:hasValue "@prefix : <https://foerderfunke.org/lod-barcamp-bielefeld#> .\n@prefix wd: <http://www.wikidata.org/entity/> .\n\nwd:Q2112 :hasLabel \"Bielefeld\" ;\n\t:distanceToBielefeld 0 .\n\nwd:Q64 :hasLabel \"Berlin\" ;\n :distanceToBielefeld 336 .\n\nwd:Q586 :hasLabel \"Bonn\" ;\n :distanceToBielefeld 173 .\n\nwd:Q14887 :hasLabel \"Neumarkt i.d.OPf.\" ;\n :distanceToBielefeld 367 .\n\nwd:Q1721 :hasLabel \"Wiesbaden\" ;\n :distanceToBielefeld 215 .\n\nwd:Q2742 :hasLabel \"Münster\" ;\n :distanceToBielefeld 64 .".
2424
ff:node3 a ff:Node;
25+
ff:hasClass ff:TurtleInputNode;
26+
ff:hasName "Particpants need residence";
27+
ff:hasPosX "888";
28+
ff:hasPosY "1366";
29+
ff:hasValue "@prefix : <https://foerderfunke.org/lod-barcamp-bielefeld#> .\n@prefix sh: <http://www.w3.org/ns/shacl#> .\n\n:shaclShape a sh:NodeShape ;\n sh:targetClass :Participant ;\n sh:property [\n sh:path :hasResidence ;\n sh:minCount 1 ;\n ] .".
30+
ff:node4 a ff:Node;
2531
ff:hasClass ff:SparqlInputNode;
2632
ff:hasName "Skill Matching";
2733
ff:hasPosX "530";
2834
ff:hasPosY "-235";
29-
ff:hasWidth 548;
30-
ff:hasHeight 198;
35+
ff:hasWidth 552;
36+
ff:hasHeight 202;
3137
ff:hasValue "PREFIX : <https://foerderfunke.org/lod-barcamp-bielefeld#>\n\nSELECT ?skill ?personWantingIt ?personHavingIt WHERE {\n ?person1 :hasSkill ?skill ;\n :hasName ?personHavingIt .\n \t?person2 :hasDesiredSkill ?skill ;\n :hasName ?personWantingIt .\n}".
32-
ff:node4 a ff:Node;
38+
ff:node5 a ff:Node;
3339
ff:hasClass ff:SparqlInputNode;
3440
ff:hasName "Travel distance";
3541
ff:hasPosX "1043";
3642
ff:hasPosY "213";
37-
ff:hasWidth 594;
38-
ff:hasHeight 320;
43+
ff:hasWidth 598;
44+
ff:hasHeight 324;
3945
ff:hasValue "PREFIX : <https://foerderfunke.org/lod-barcamp-bielefeld#>\n\nSELECT (SUM(?distance * ?numResidents * 2) AS ?totalDistance)\nWHERE {\n {\n SELECT ?city (COUNT(?person) AS ?numResidents)\n WHERE {\n ?person :hasResidence ?city .\n }\n GROUP BY ?city\n }\n\n ?wdId :hasLabel ?city ;\n :distanceToBielefeld ?distance .\n}".
40-
ff:node5 a ff:Node;
46+
ff:node6 a ff:Node;
4147
ff:hasClass ff:SparqlInputNode;
4248
ff:hasName "Interest and question tags ranked";
43-
ff:hasPosX 701;
44-
ff:hasPosY 1552;
45-
ff:hasWidth 502;
46-
ff:hasHeight 264;
49+
ff:hasPosX "760";
50+
ff:hasPosY "2008";
51+
ff:hasWidth 506;
52+
ff:hasHeight 268;
4753
ff:hasValue "PREFIX : <https://foerderfunke.org/lod-barcamp-bielefeld#>\n\nSELECT ?tag (COUNT(*) AS ?count)\nWHERE {\n {\n ?person :hasInterestTag ?tag .\n } UNION {\n ?person :hasLodQuestionTag ?tag .\n }\n}\nGROUP BY ?tag\nORDER BY DESC(?count)".
48-
ff:node6 a ff:Node;
54+
ff:node7 a ff:Node;
4955
ff:hasClass ff:SparqlInputNode;
5056
ff:hasName "Details for top ranked";
51-
ff:hasPosX 1674;
52-
ff:hasPosY 1558;
57+
ff:hasPosX "1810";
58+
ff:hasPosY "2010";
5359
ff:hasValue "PREFIX : <https://foerderfunke.org/lod-barcamp-bielefeld#>\n\nSELECT ?question ?interest WHERE {\n VALUES ?tag {\n \"Tooling\"\n \"LOD_Praxis\"\n \"Zivilgesellschaftliche_Nutzung\"\n }\n {\n ?person :hasInterestTag ?tag ;\n :hasInterest ?interest .\n }\n UNION\n {\n ?person :hasLodQuestionTag ?tag ;\n :hasLodQuestion ?question .\n }\n}".
54-
ff:node7 a ff:Node;
55-
ff:hasClass ff:SparqlSelectExecNode;
56-
ff:hasName "Run SPARQL SELECT";
57-
ff:hasPosX "1150";
58-
ff:hasPosY "-234".
5960
ff:node8 a ff:Node;
60-
ff:hasClass ff:SparqlSelectExecNode;
61-
ff:hasName "Run SPARQL SELECT";
62-
ff:hasPosX "1746";
63-
ff:hasPosY "481".
61+
ff:hasClass ff:SparqlInputNode;
62+
ff:hasName "Population of cities";
63+
ff:hasPosX "1773";
64+
ff:hasPosY "858";
65+
ff:hasWidth 553;
66+
ff:hasHeight 278;
67+
ff:hasValue "PREFIX wd: <http://www.wikidata.org/entity/>\nPREFIX wdt: <http://www.wikidata.org/prop/direct/>\nPREFIX wikibase: <http://wikiba.se/ontology#>\nPREFIX bd: <http://www.bigdata.com/rdf#>\n\nSELECT ?cityLabel ?population WHERE {\n VALUES ?city {\n wd:Q2112 wd:Q64 wd:Q586 wd:Q14887 wd:Q1721 wd:Q2742\n }\n ?city wdt:P1082 ?population .\n SERVICE wikibase:label { bd:serviceParam wikibase:language \"de\". }\n}".
6468
ff:node9 a ff:Node;
6569
ff:hasClass ff:SparqlSelectExecNode;
6670
ff:hasName "Run SPARQL SELECT";
67-
ff:hasPosX 1218;
68-
ff:hasPosY 1553.
71+
ff:hasPosX "1150";
72+
ff:hasPosY "-234".
6973
ff:node10 a ff:Node;
7074
ff:hasClass ff:SparqlSelectExecNode;
7175
ff:hasName "Run SPARQL SELECT";
72-
ff:hasPosX 2111;
73-
ff:hasPosY 1557.
76+
ff:hasPosX "1746";
77+
ff:hasPosY "481".
7478
ff:node11 a ff:Node;
79+
ff:hasClass ff:SparqlSelectExecNode;
80+
ff:hasName "Run SPARQL SELECT";
81+
ff:hasPosX "1286";
82+
ff:hasPosY "2011".
83+
ff:node12 a ff:Node;
84+
ff:hasClass ff:SparqlSelectExecNode;
85+
ff:hasName "Run SPARQL SELECT";
86+
ff:hasPosX "2253";
87+
ff:hasPosY "2011".
88+
ff:node13 a ff:Node;
89+
ff:hasClass ff:SparqlSelectExecNode;
90+
ff:hasName "Run SPARQL SELECT";
91+
ff:hasPosX "2385";
92+
ff:hasPosY "850".
93+
ff:node14 a ff:Node;
7594
ff:hasClass ff:MergeTriplesNode;
7695
ff:hasName "Merge triples";
7796
ff:hasPosX "1178";
7897
ff:hasPosY "581";
7998
ff:hasContentHidden true.
80-
ff:node12 a ff:Node;
99+
ff:node15 a ff:Node;
81100
ff:hasClass ff:ExternalSparqlEndpointInputNode;
82101
ff:hasName "Wikidata SPARQL Endpoint";
83-
ff:hasPosX 1368;
84-
ff:hasPosY 932;
85-
ff:hasWidth 323;
86-
ff:hasHeight 98;
102+
ff:hasPosX "1368";
103+
ff:hasPosY "932";
104+
ff:hasWidth 327;
105+
ff:hasHeight 102;
87106
ff:hasValue "https://query.wikidata.org/sparql".
88-
ff:node13 a ff:Node;
89-
ff:hasClass ff:SparqlInputNode;
90-
ff:hasName "Population of cities";
91-
ff:hasPosX 1773;
92-
ff:hasPosY 858;
93-
ff:hasWidth 549;
94-
ff:hasHeight 274;
95-
ff:hasValue "PREFIX wd: <http://www.wikidata.org/entity/>\nPREFIX wdt: <http://www.wikidata.org/prop/direct/>\nPREFIX wikibase: <http://wikiba.se/ontology#>\nPREFIX bd: <http://www.bigdata.com/rdf#>\n\nSELECT ?cityLabel ?population WHERE {\n VALUES ?city {\n wd:Q2112 wd:Q64 wd:Q586 wd:Q14887 wd:Q1721 wd:Q2742\n }\n ?city wdt:P1082 ?population .\n SERVICE wikibase:label { bd:serviceParam wikibase:language \"de\". }\n}".
96-
ff:node14 a ff:Node;
97-
ff:hasClass ff:SparqlSelectExecNode;
98-
ff:hasName "Run SPARQL SELECT";
99-
ff:hasPosX 2385;
100-
ff:hasPosY 850.
107+
ff:node16 a ff:Node;
108+
ff:hasClass ff:ShaclValidationNode;
109+
ff:hasName "Run SHACL validation";
110+
ff:hasPosX "1363";
111+
ff:hasPosY "1336".
101112
ff:edge1 a ff:Edge;
102113
ff:hasSource ff:node1;
103-
ff:hasTarget ff:node7;
114+
ff:hasTarget ff:node9;
104115
ff:hasPortOut 1;
105116
ff:hasPortIn 2.
106117
ff:edge2 a ff:Edge;
107118
ff:hasSource ff:node1;
108-
ff:hasTarget ff:node9;
119+
ff:hasTarget ff:node11;
109120
ff:hasPortOut 1;
110121
ff:hasPortIn 2.
111122
ff:edge3 a ff:Edge;
112123
ff:hasSource ff:node1;
113-
ff:hasTarget ff:node10;
124+
ff:hasTarget ff:node12;
114125
ff:hasPortOut 1;
115126
ff:hasPortIn 2.
116127
ff:edge4 a ff:Edge;
117128
ff:hasSource ff:node1;
118-
ff:hasTarget ff:node11;
129+
ff:hasTarget ff:node14;
119130
ff:hasPortOut 1;
120131
ff:hasPortIn 2.
121132
ff:edge5 a ff:Edge;
122-
ff:hasSource ff:node2;
123-
ff:hasTarget ff:node11;
133+
ff:hasSource ff:node1;
134+
ff:hasTarget ff:node16;
124135
ff:hasPortOut 1;
125-
ff:hasPortIn 1.
136+
ff:hasPortIn 2.
126137
ff:edge6 a ff:Edge;
127-
ff:hasSource ff:node3;
128-
ff:hasTarget ff:node7;
138+
ff:hasSource ff:node2;
139+
ff:hasTarget ff:node14;
129140
ff:hasPortOut 1;
130141
ff:hasPortIn 1.
131142
ff:edge7 a ff:Edge;
132143
ff:hasSource ff:node4;
133-
ff:hasTarget ff:node8;
144+
ff:hasTarget ff:node9;
134145
ff:hasPortOut 1;
135146
ff:hasPortIn 1.
136147
ff:edge8 a ff:Edge;
137148
ff:hasSource ff:node5;
138-
ff:hasTarget ff:node9;
149+
ff:hasTarget ff:node10;
139150
ff:hasPortOut 1;
140151
ff:hasPortIn 1.
141152
ff:edge9 a ff:Edge;
142153
ff:hasSource ff:node6;
143-
ff:hasTarget ff:node10;
154+
ff:hasTarget ff:node11;
144155
ff:hasPortOut 1;
145156
ff:hasPortIn 1.
146157
ff:edge10 a ff:Edge;
147-
ff:hasSource ff:node11;
148-
ff:hasTarget ff:node8;
158+
ff:hasSource ff:node7;
159+
ff:hasTarget ff:node12;
149160
ff:hasPortOut 1;
150-
ff:hasPortIn 2.
161+
ff:hasPortIn 1.
151162
ff:edge11 a ff:Edge;
152-
ff:hasSource ff:node13;
153-
ff:hasTarget ff:node14;
163+
ff:hasSource ff:node8;
164+
ff:hasTarget ff:node13;
154165
ff:hasPortOut 1;
155166
ff:hasPortIn 1.
156167
ff:edge12 a ff:Edge;
157-
ff:hasSource ff:node12;
158-
ff:hasTarget ff:node14;
168+
ff:hasSource ff:node14;
169+
ff:hasTarget ff:node10;
170+
ff:hasPortOut 1;
171+
ff:hasPortIn 2.
172+
ff:edge13 a ff:Edge;
173+
ff:hasSource ff:node15;
174+
ff:hasTarget ff:node13;
159175
ff:hasPortOut 1;
160176
ff:hasPortIn 2.
177+
ff:edge14 a ff:Edge;
178+
ff:hasSource ff:node3;
179+
ff:hasTarget ff:node16;
180+
ff:hasPortOut 1;
181+
ff:hasPortIn 1.

0 commit comments

Comments
 (0)