Hallo @kitkatja , willkommen im Forum!
Soweit ich weiß, arbeitet ihr ja mit einem Skript udn könnt eine zusätzliche Abfrage einbauen. Ich versuche das mal an einem Beispiel zu betrachten.
Hier haben wir eine Person, die Lyrikerin ist aber nicht als „Autorin“ oder „Schriftstellerin“ erfasst ist: Ferraro, Graciela Isabel
Im JSON steht die Berufsbezeichnung einer Person unter professionOrOccupation
:
"professionOrOccupation": [
{
"id": "https://d-nb.info/gnd/4135404-7",
"label": "Pädagogin"
},
{
"id": "https://d-nb.info/gnd/4246394-4",
"label": "Lyrikerin"
}
]
Wenn ich das richtig verstehe, soll nun geprüft werden, ob die Berufsbezeichnungen nun eine Untergruppe sind von einer dieser Berufsbezeichnungen:
- Schriftsteller: DNB, Katalog der Deutschen Nationalbibliothek
- Schriftstellerin: DNB, Katalog der Deutschen Nationalbibliothek
- Autor: DNB, Katalog der Deutschen Nationalbibliothek
- Autorin: DNB, Katalog der Deutschen Nationalbibliothek
Ich kenne mich mit der Strukturierung der Gemeinsame Normdatei (GND) hier wenig aus, aber für die genannten Fälle ist die Lage so:
- Lyrikerin (DNB, Katalog der Deutschen Nationalbibliothek) verweist auf Schriftstellerin mit „Oberbegriff allgemein“, was im JSON
broaderTermGeneral
heißt. - Schriftstellerin und Schriftsteller verweisen auf Autorin/Autor mit „Oberbegriff generisch“, im JSON
broaderTermGeneric
.
Für deinen Anwendungsfall könnte es eventuell reichen, wenn du prüfst, ob eine broaderTermGeneral
-Beziehung zu Schriftsteller oder Schriftstellerin besteht, d.h. das Skript müsste in diesem Fall:
- sich aus
professionOrOccupation[].id
die IDs der Berufe der Personen holen, - die Berufs-IDs abfragen und deren
broaderTermGeneral.id
-Angabe prüfen, ob eine davon mit dem gewünschten Wert übereinstimmt.
Wahrscheinlich ist es aber sinnvoller, einmal die Liste aller Unter-IDs von Schriftsteller, Schriftstellerin, Autor und Autorin zu laden und dann im Skript zu listen. Die Abfrage kannst du dir im Prinzpip aus dem UI zusammenklicken (siehe auch lobid-gnd: Formulierung komplexer Suchanfragen). Z.B. auf der Lyrikerin-Seite die Lupe neben „Oberbegriff allgemein“ klicken und du bekommst die Liste aller Einträge, die als allgemeinen Oberbegriff Schriftstellerin haben: lobid-gnd - search
Wenn du das `&format=html" wegnimmst, kannst du dir das JSON holen und verarbeiten, z.B. mit curl und jq:
$ curl 'https://lobid.org/gnd/search?q=broaderTermGeneral.id%:"https://d-nb.info/gnd/4053311-6"' | jq -r .member[].id
https://d-nb.info/gnd/1150418427
https://d-nb.info/gnd/1150432233
https://d-nb.info/gnd/1150434910
https://d-nb.info/gnd/115044035X
https://d-nb.info/gnd/1150443758
https://d-nb.info/gnd/1150455098
https://d-nb.info/gnd/1150456175
https://d-nb.info/gnd/1150518758
https://d-nb.info/gnd/1150520558
https://d-nb.info/gnd/1150521503
Für die Untergruppen von Autor wäre es analog: curl 'https://lobid.org/gnd/search?q=broaderTermGeneric.id:"https://d-nb.info/gnd/4003982-1"' | jq -r .member[].id
Ich hoffe, das hilft dir weiter. Sag bescheid, wenn ich den Anwendungsfall missverstanden habe. Es gibt übrigens auch ein verwandtes Thema zru Abfrage von Hierarchien: Hierarchie von Schlagworten/Sachbegriffen ermitteln - #8 von mschaefer