Skip to content

Commit 163b38f

Browse files
committed
Add remaining datafields
Generated by ChatGPT 4o, some minor manual modifications afterwards
1 parent ed25826 commit 163b38f

File tree

2 files changed

+376
-0
lines changed

2 files changed

+376
-0
lines changed

sozialplattform/chatgpt_prompts.txt

+92
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
------------------------------------------------------------
2+
DATAFIELDS
3+
------------------------------------------------------------
4+
5+
I will successively share definitions of data fields and their allowed answers in JSON format with you. My goal is to transform them all to SHACL syntax. I did this transformation manually for two of them and would like you to do it for the rest.
6+
Furthermore I would like to ask you to "slugify" the questionKeys, so "Staatsbürgerschaft" for instance should become "staatsbuergerschaft". And also in the value/label pairs of the answerOptions, please find sensible ways to slugify the value.
7+
Also note that I am using "sh:maxCount 1" to indicate "answerType singleOption" whereas "answerType multiOption" doesn't need a count-restriction.
8+
9+
These are the SHACL prefixes I am using:
10+
11+
@prefix sh: <http://www.w3.org/ns/shacl#> .
12+
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
13+
@prefix ff: <https://foerderfunke.org/default#> .
14+
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
15+
@prefix schema: <http://schema.org/> .
16+
17+
Here are the two transformations I did manually so that you understand what I need:
18+
19+
-----
20+
JSON:
21+
{
22+
"questionKey": "Geburtsdatum",
23+
"questionText": "Wie lautet Ihr Geburtsdatum?",
24+
"placeholder": "",
25+
"noteCitizen": "",
26+
"answerType": "date",
27+
"answerOptions": []
28+
}
29+
30+
SHACL:
31+
32+
ff:geburtsdatum a ff:DataField, ff:SozialleistungsfinderDataField ;
33+
schema:category ff:persoenliche-angaben ;
34+
rdfs:label "Geburtsdatum" ;
35+
schema:question "Wie lautet Ihr Geburtsdatum?" ;
36+
ff:objectConstraints [
37+
a sh:PropertyShape ;
38+
sh:targetObjectsOf ff:geburtsdatum ;
39+
sh:datatype xsd:date ;
40+
] ;
41+
ff:usageConstraints [
42+
a sh:NodeShape ;
43+
sh:targetSubjectsOf ff:geburtsdatum ;
44+
sh:property [
45+
sh:path ff:geburtsdatum ;
46+
sh:maxCount 1 ;
47+
] ;
48+
] .
49+
-----
50+
JSON:
51+
{
52+
"questionKey": "Aufenthaltsort",
53+
"questionText": "Wo ist Ihr tatsächlicher Aufenthaltsort an dem Sie erreichbar sind?",
54+
"placeholder": "",
55+
"noteCitizen": "Das ist der Ort, wo Sie sich wirklich aufhalten. Es ist egal, ob Sie dort gemeldet sind oder das Recht haben, hier zu leben. Das kann auch eine Pflegeeinrichtung, ein Frauenhaus, ein Stadtteil oder Ähnliches sein.",
56+
"answerType": "singleSelect",
57+
"answerOptions": [
58+
{
59+
"value": "außerhalb",
60+
"label": "außerhalb Deutschlands"
61+
},
62+
{
63+
"value": "innerhalb",
64+
"label": "innerhalb Deutschlands"
65+
}
66+
]
67+
}
68+
69+
SHACL:
70+
ff:aufenthaltsort a ff:DataField, ff:SozialleistungsfinderDataField ;
71+
schema:category ff:persoenliche-angaben ;
72+
rdfs:label "Aufenthaltsort" ;
73+
schema:question "Wo ist Ihr tatsächlicher Aufenthaltsort an dem Sie erreichbar sind?" ;
74+
rdfs:comment "Das ist der Ort, wo Sie sich wirklich aufhalten. Es ist egal, ob Sie dort gemeldet sind oder das Recht haben, hier zu leben. Das kann auch eine Pflegeeinrichtung, ein Frauenhaus, ein Stadtteil oder Ähnliches sein." ;
75+
ff:objectConstraints [
76+
a sh:PropertyShape ;
77+
sh:targetObjectsOf ff:aufenthaltsort ;
78+
sh:in (ff:aufenthaltsort-ao-ausserhalb ff:aufenthaltsort-ao-innerhalb) ;
79+
] ;
80+
ff:usageConstraints [
81+
a sh:NodeShape ;
82+
sh:targetSubjectsOf ff:aufenthaltsort ;
83+
sh:property [
84+
sh:path ff:aufenthaltsort ;
85+
sh:maxCount 1 ;
86+
] ;
87+
] .
88+
ff:aufenthaltsort-ao-ausserhalb a ff:AnswerOption ; rdfs:label "außerhalb Deutschlands" .
89+
ff:aufenthaltsort-ao-innerhalb a ff:AnswerOption ; rdfs:label "innerhalb Deutschlands" .
90+
-----
91+
92+
Does this make sense? Can I share more JSON definitions for you to transform them to SHACL following the examples I gave you?

sozialplattform/datafields.ttl

+284
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ ff:gesundheit a ff:DatafieldCategory ; rdfs:label "Gesundheit" .
4848

4949
# DATAFIELDS
5050

51+
# Persönliche Angaben
52+
5153
ff:geburtsdatum a ff:DataField, ff:SozialleistungsfinderDataField ;
5254
schema:category ff:persoenliche-angaben ;
5355
rdfs:label "Geburtsdatum" ;
@@ -127,3 +129,285 @@ ff:aufenthaltsort a ff:DataField, ff:SozialleistungsfinderDataField ;
127129
] .
128130
ff:aufenthaltsort-ao-ausserhalb a ff:AnswerOption ; rdfs:label "außerhalb Deutschlands" .
129131
ff:aufenthaltsort-ao-innerhalb a ff:AnswerOption ; rdfs:label "innerhalb Deutschlands" .
132+
133+
# Kinder
134+
135+
ff:kinder a ff:DataField, ff:SozialleistungsfinderDataField ;
136+
schema:category ff:kinder ;
137+
rdfs:label "Kinder" ;
138+
schema:question "Haben Sie ein oder mehrere Kinder?" ;
139+
rdfs:comment "Bitte geben Sie an, ob Kinder in Ihrem Haushalt leben." ;
140+
ff:objectConstraints [
141+
a sh:PropertyShape ;
142+
sh:targetObjectsOf ff:kinder ;
143+
sh:datatype xsd:boolean ;
144+
] ;
145+
ff:usageConstraints [
146+
a sh:NodeShape ;
147+
sh:targetSubjectsOf ff:kinder ;
148+
sh:property [
149+
sh:path ff:kinder ;
150+
sh:maxCount 1 ;
151+
] ;
152+
] .
153+
154+
ff:kinder_unter_18 a ff:DataField, ff:SozialleistungsfinderDataField ;
155+
schema:category ff:kinder ;
156+
rdfs:label "Kinder unter 18" ;
157+
schema:question "Haben Sie Kinder unter 18 Jahren?" ;
158+
ff:objectConstraints [
159+
a sh:PropertyShape ;
160+
sh:targetObjectsOf ff:kinder_unter_18 ;
161+
sh:datatype xsd:boolean ;
162+
] ;
163+
ff:usageConstraints [
164+
a sh:NodeShape ;
165+
sh:targetSubjectsOf ff:kinder_unter_18 ;
166+
sh:property [
167+
sh:path ff:kinder_unter_18 ;
168+
sh:maxCount 1 ;
169+
] ;
170+
] .
171+
172+
ff:kinder_18_25 a ff:DataField, ff:SozialleistungsfinderDataField ;
173+
schema:category ff:kinder ;
174+
rdfs:label "Kinder 18-25" ;
175+
schema:question "Haben Sie Kinder zwischen 18-25 Jahren?" ;
176+
ff:objectConstraints [
177+
a sh:PropertyShape ;
178+
sh:targetObjectsOf ff:kinder_18_25 ;
179+
sh:datatype xsd:boolean ;
180+
] ;
181+
ff:usageConstraints [
182+
a sh:NodeShape ;
183+
sh:targetSubjectsOf ff:kinder_18_25 ;
184+
sh:property [
185+
sh:path ff:kinder_18_25 ;
186+
sh:maxCount 1 ;
187+
] ;
188+
] .
189+
190+
ff:kinder_in_ausbildung a ff:DataField, ff:SozialleistungsfinderDataField ;
191+
schema:category ff:kinder ;
192+
rdfs:label "Kinder in Ausbildung" ;
193+
schema:question "Haben Sie Kinder zwischen 18 und 25 Jahren, die sich noch in Schule, Ausbildung oder Studium befinden?" ;
194+
ff:objectConstraints [
195+
a sh:PropertyShape ;
196+
sh:targetObjectsOf ff:kinder_in_ausbildung ;
197+
sh:datatype xsd:boolean ;
198+
] ;
199+
ff:usageConstraints [
200+
a sh:NodeShape ;
201+
sh:targetSubjectsOf ff:kinder_in_ausbildung ;
202+
sh:property [
203+
sh:path ff:kinder_in_ausbildung ;
204+
sh:maxCount 1 ;
205+
] ;
206+
] .
207+
208+
ff:kindergeld a ff:DataField, ff:SozialleistungsfinderDataField ;
209+
schema:category ff:kinder ;
210+
rdfs:label "Kindergeld" ;
211+
schema:question "Beziehen Sie Kindergeld für ein oder mehrere Kinder?" ;
212+
ff:objectConstraints [
213+
a sh:PropertyShape ;
214+
sh:targetObjectsOf ff:kindergeld ;
215+
sh:datatype xsd:boolean ;
216+
] ;
217+
ff:usageConstraints [
218+
a sh:NodeShape ;
219+
sh:targetSubjectsOf ff:kindergeld ;
220+
sh:property [
221+
sh:path ff:kindergeld ;
222+
sh:maxCount 1 ;
223+
] ;
224+
] .
225+
226+
# Erwerbstätigkeit
227+
228+
ff:erwerbsfaehig_neu a ff:DataField, ff:SozialleistungsfinderDataField ;
229+
schema:category ff:erwerbstaetigkeit ;
230+
rdfs:label "Erwerbsfähig neu" ;
231+
schema:question "Sind Sie erwerbsfähig und können täglich mindestens 3 Stunden arbeiten?" ;
232+
rdfs:comment "Sie sind erwerbsfähig, wenn Sie mindestens 3 Stunden am Tag normal arbeiten können. Wenn Sie es wegen längerer Krankheit oder Behinderung nicht schaffen, so lange zu arbeiten, geben Sie „nein“ an." ;
233+
ff:objectConstraints [
234+
a sh:PropertyShape ;
235+
sh:targetObjectsOf ff:erwerbsfaehig_neu ;
236+
sh:in (ff:erwerbsfaehig_neu-ao-ja ff:erwerbsfaehig_neu-ao-nein-ueber-6-monate ff:erwerbsfaehig_neu-ao-nein-weniger-6-monate) ;
237+
] ;
238+
ff:usageConstraints [
239+
a sh:NodeShape ;
240+
sh:targetSubjectsOf ff:erwerbsfaehig_neu ;
241+
sh:property [
242+
sh:path ff:erwerbsfaehig_neu ;
243+
sh:maxCount 1 ;
244+
] ;
245+
] .
246+
ff:erwerbsfaehig_neu-ao-ja a ff:AnswerOption ; rdfs:label "ja" .
247+
ff:erwerbsfaehig_neu-ao-nein-ueber-6-monate a ff:AnswerOption ; rdfs:label "nein, dauerhaft erwerbsunfähig (über 6 Monate)" .
248+
ff:erwerbsfaehig_neu-ao-nein-weniger-6-monate a ff:AnswerOption ; rdfs:label "nein, temporär erwerbsunfähig (weniger als 6 Monate)" .
249+
250+
ff:beruf_neu a ff:DataField, ff:SozialleistungsfinderDataField ;
251+
schema:category ff:erwerbstaetigkeit ;
252+
rdfs:label "Beruf neu" ;
253+
schema:question "Wie ist Ihre berufliche Situation?" ;
254+
ff:objectConstraints [
255+
a sh:PropertyShape ;
256+
sh:targetObjectsOf ff:beruf_neu ;
257+
sh:in (ff:beruf_neu-ao-selbstaendig ff:beruf_neu-ao-soz ff:beruf_neu-ao-alg ff:beruf_neu-ao-ausbildung ff:beruf_neu-ao-bfd ff:beruf_neu-ao-rente ff:beruf_neu-ao-eltern) ;
258+
] ;
259+
ff:usageConstraints [
260+
a sh:NodeShape ;
261+
sh:targetSubjectsOf ff:beruf_neu ;
262+
sh:property [
263+
sh:path ff:beruf_neu ;
264+
sh:maxCount 1 ;
265+
] ;
266+
] .
267+
ff:beruf_neu-ao-selbstaendig a ff:AnswerOption ; rdfs:label "selbständig in einer Beschäftigung von mehr als 15 Stunden pro Woche" .
268+
ff:beruf_neu-ao-soz a ff:AnswerOption ; rdfs:label "berufstätig in einer sozialversicherungspflichtigen Beschäftigung" .
269+
ff:beruf_neu-ao-alg a ff:AnswerOption ; rdfs:label "arbeitslos" .
270+
ff:beruf_neu-ao-ausbildung a ff:AnswerOption ; rdfs:label "Schule/Ausbildung/Studium" .
271+
ff:beruf_neu-ao-bfd a ff:AnswerOption ; rdfs:label "Bundesfreiwilligendienst" .
272+
ff:beruf_neu-ao-rente a ff:AnswerOption ; rdfs:label "Regelaltersrente/Pension" .
273+
ff:beruf_neu-ao-eltern a ff:AnswerOption ; rdfs:label "Elternzeit" .
274+
275+
ff:einkommen_neu a ff:DataField, ff:SozialleistungsfinderDataField ;
276+
schema:category ff:erwerbstaetigkeit ;
277+
rdfs:label "Einkommen neu" ;
278+
schema:question "Wie erzielen Sie Ihr Einkommen? (Mehrfachnennung möglich)" ;
279+
ff:objectConstraints [
280+
a sh:PropertyShape ;
281+
sh:targetObjectsOf ff:einkommen_neu ;
282+
sh:in (ff:einkommen_neu-ao-selbstaendig ff:einkommen_neu-ao-soz ff:einkommen_neu-ao-alg ff:einkommen_neu-ao-alg-ii ff:einkommen_neu-ao-ausbildung ff:einkommen_neu-ao-bafoeg ff:einkommen_neu-ao-rente ff:einkommen_neu-ao-elterngeld ff:einkommen_neu-ao-mutterschaftsgeld ff:einkommen_neu-ao-wohngeld ff:einkommen_neu-ao-sonstige) ;
283+
] .
284+
ff:einkommen_neu-ao-selbstaendig a ff:AnswerOption ; rdfs:label "selbstständige Arbeit in einer Beschäftigung von mehr als 15 Stunden pro Woche" .
285+
ff:einkommen_neu-ao-soz a ff:AnswerOption ; rdfs:label "sozialversicherungspflichtige Beschäftigung" .
286+
ff:einkommen_neu-ao-alg a ff:AnswerOption ; rdfs:label "Arbeitslosengeld" .
287+
ff:einkommen_neu-ao-alg-ii a ff:AnswerOption ; rdfs:label "Bürgergeld (früher ALG II)" .
288+
ff:einkommen_neu-ao-ausbildung a ff:AnswerOption ; rdfs:label "Ausbildungsvergütung" .
289+
ff:einkommen_neu-ao-bafoeg a ff:AnswerOption ; rdfs:label "BAföG" .
290+
ff:einkommen_neu-ao-rente a ff:AnswerOption ; rdfs:label "Regelaltersrente" .
291+
ff:einkommen_neu-ao-elterngeld a ff:AnswerOption ; rdfs:label "Elterngeld" .
292+
ff:einkommen_neu-ao-mutterschaftsgeld a ff:AnswerOption ; rdfs:label "Mutterschaftsgeld" .
293+
ff:einkommen_neu-ao-wohngeld a ff:AnswerOption ; rdfs:label "Wohngeld" .
294+
ff:einkommen_neu-ao-sonstige a ff:AnswerOption ; rdfs:label "Sonstige" .
295+
296+
ff:einkommen_familie a ff:DataField, ff:SozialleistungsfinderDataField ;
297+
schema:category ff:erwerbstaetigkeit ;
298+
rdfs:label "Einkommen Familie" ;
299+
schema:question "Wie beschreiben Sie das Einkommen Ihrer Familie?" ;
300+
ff:objectConstraints [
301+
a sh:PropertyShape ;
302+
sh:targetObjectsOf ff:einkommen_familie ;
303+
sh:in (ff:einkommen_familie-ao-monatsbrutto-ueber-900-600 ff:einkommen_familie-ao-monatsbrutto-unter-900-600) ;
304+
] ;
305+
ff:usageConstraints [
306+
a sh:NodeShape ;
307+
sh:targetSubjectsOf ff:einkommen_familie ;
308+
sh:property [
309+
sh:path ff:einkommen_familie ;
310+
sh:maxCount 1 ;
311+
] ;
312+
] .
313+
ff:einkommen_familie-ao-monatsbrutto-ueber-900-600 a ff:AnswerOption ; rdfs:label "Die Familie hat ein monatliches Brutto-Einkommen von mindestens 900 Euro (Gemeinsam erziehend) bzw. 600 Euro (Alleinerziehende)" .
314+
ff:einkommen_familie-ao-monatsbrutto-unter-900-600 a ff:AnswerOption ; rdfs:label "Die Familie hat kein monatliches Brutto-Einkommen von mindestens 900 Euro (Gemeinsam erziehend) bzw. 600 Euro (Alleinerziehende)" .
315+
316+
# Lebenssituation
317+
318+
ff:lebenssituation a ff:DataField, ff:SozialleistungsfinderDataField ;
319+
schema:category ff:lebenssituation ;
320+
rdfs:label "Lebenssituation" ;
321+
schema:question "Wie ist Ihre Lebenssituation?" ;
322+
ff:objectConstraints [
323+
a sh:PropertyShape ;
324+
sh:targetObjectsOf ff:lebenssituation ;
325+
sh:in (ff:lebenssituation-ao-allein ff:lebenssituation-ao-gemeinschaft ff:lebenssituation-ao-allein-mit-kind) ;
326+
] ;
327+
ff:usageConstraints [
328+
a sh:NodeShape ;
329+
sh:targetSubjectsOf ff:lebenssituation ;
330+
sh:property [
331+
sh:path ff:lebenssituation ;
332+
sh:maxCount 1 ;
333+
] ;
334+
] .
335+
ff:lebenssituation-ao-allein a ff:AnswerOption ; rdfs:label "alleinlebend" .
336+
ff:lebenssituation-ao-gemeinschaft a ff:AnswerOption ; rdfs:label "gemeinsam lebend (Ehe, Partnerschaft, eingetragene Lebenspartnerschaft), ggf. mit Kindern" .
337+
ff:lebenssituation-ao-allein-mit-kind a ff:AnswerOption ; rdfs:label "alleinerziehend mit mind. einem Kind" .
338+
339+
ff:lebenslage a ff:DataField, ff:SozialleistungsfinderDataField ;
340+
schema:category ff:lebenssituation ;
341+
rdfs:label "Lebenslage" ;
342+
schema:question "Befinden Sie sich in einer sozial schwierigen Lebenslage?" ;
343+
rdfs:comment "Schwierige Lebenslagen oder Notsituationen sind zum Beispiel: Sie haben keine Wohnung mehr (Obdachlosigkeit), Sie haben ein Suchtproblem, Sie wissen nicht, wovon Sie leben sollen oder wurden ein Opfer von Gewalt in der Familie." ;
344+
ff:objectConstraints [
345+
a sh:PropertyShape ;
346+
sh:targetObjectsOf ff:lebenslage ;
347+
sh:datatype xsd:boolean ;
348+
] ;
349+
ff:usageConstraints [
350+
a sh:NodeShape ;
351+
sh:targetSubjectsOf ff:lebenslage ;
352+
sh:property [
353+
sh:path ff:lebenslage ;
354+
sh:maxCount 1 ;
355+
] ;
356+
] .
357+
358+
# Gesundheit
359+
360+
ff:krankenversicherung a ff:DataField, ff:SozialleistungsfinderDataField ;
361+
schema:category ff:gesundheit ;
362+
rdfs:label "Krankenversicherung" ;
363+
schema:question "Haben Sie eine Krankenversicherung?" ;
364+
ff:objectConstraints [
365+
a sh:PropertyShape ;
366+
sh:targetObjectsOf ff:krankenversicherung ;
367+
sh:datatype xsd:boolean ;
368+
] ;
369+
ff:usageConstraints [
370+
a sh:NodeShape ;
371+
sh:targetSubjectsOf ff:krankenversicherung ;
372+
sh:property [
373+
sh:path ff:krankenversicherung ;
374+
sh:maxCount 1 ;
375+
] ;
376+
] .
377+
378+
ff:pflegeversicherung a ff:DataField, ff:SozialleistungsfinderDataField ;
379+
schema:category ff:gesundheit ;
380+
rdfs:label "Pflegeversicherung" ;
381+
schema:question "Haben Sie eine Pflegeversicherung?" ;
382+
ff:objectConstraints [
383+
a sh:PropertyShape ;
384+
sh:targetObjectsOf ff:pflegeversicherung ;
385+
sh:datatype xsd:boolean ;
386+
] ;
387+
ff:usageConstraints [
388+
a sh:NodeShape ;
389+
sh:targetSubjectsOf ff:pflegeversicherung ;
390+
sh:property [
391+
sh:path ff:pflegeversicherung ;
392+
sh:maxCount 1 ;
393+
] ;
394+
] .
395+
396+
ff:pflege a ff:DataField, ff:SozialleistungsfinderDataField ;
397+
schema:category ff:gesundheit ;
398+
rdfs:label "Pflege" ;
399+
schema:question "Sind Sie pflegebedürftig?" ;
400+
rdfs:comment "Die Pflegebedürftigkeit wird von einem Gutachter des Medizinischen Dienstes der Krankenversicherung (MDK) festgestellt. Nach der Prüfung entscheidet die Pflegekasse über Pflegebedürftigkeit und Pflegegrad." ;
401+
ff:objectConstraints [
402+
a sh:PropertyShape ;
403+
sh:targetObjectsOf ff:pflege ;
404+
sh:datatype xsd:boolean ;
405+
] ;
406+
ff:usageConstraints [
407+
a sh:NodeShape ;
408+
sh:targetSubjectsOf ff:pflege ;
409+
sh:property [
410+
sh:path ff:pflege ;
411+
sh:maxCount 1 ;
412+
] ;
413+
] .

0 commit comments

Comments
 (0)