Abfrage von übergeordneter Kategorie von Berufsbezeichnungen

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?

Vielen Dank

Hallo @kitkatja, willkommen hier im Forum :slight_smile:

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.)

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:

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:

  1. sich aus professionOrOccupation[].id die IDs der Berufe der Personen holen,
  2. 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

Vielen Dank für die ausführliche Antwort! Ich probiere mich mal daran :slight_smile: