Guten Tag!
Ich arbeite daran, durch die lobid API an die gnd Nummern einer Liste an Personen zu kommen. Dabei sind nur solche interessant, die der Kategorie „Schriftsteller“ oder „Autor“ zugeordnet sind.
Bei den API Ergebnissen zu den einzelnen Personen ist unter der Kategorie „professionOrOccupation“ oft nicht die Oberkategorie „Schriftsteller“ sondern eine der vielen Unterkategorien wie z.B. „Dramatiker“ oder „Lyrikerin“ gelistet. Gibt es eine Möglichkeit, dazwischen eine Verknüpfung herzustellen?
In anderen Worten: wenn bei zwei Personen einmal als Berufsbezeichnung „Lyrikerin“ und einmal „Physikerin“ zurückgegeben wird, gibt es eine Möglichkeit, jeweils auf den Oberbegriff der beiden Berufsbezeichnungen zuzugreifen und dadurch abzuprüfen, ob der Datensatz behalten wird oder uninteressant ist?
Wir hatten sowas sogar mal in der lobid-GND-API, da hatten wir einen Reasoner eingebaut. Das wäre möglicherweise ein Weg für euch - die Daten, die ihr euch zieht, durch eine RDF-Reasoner mit der dnb ontology zu jagen. (Evtl. gibt es aber auch einfachere Lösungen für euch.)
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:
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