hbz / lobid-gnd

UI and API to the Integrated Authority File (Gemeinsame Normdatei, GND)
http://lobid.org/gnd
Eclipse Public License 2.0
24 stars 5 forks source link

Changes to the the GND RDF starting from 2024-02-06 #362

Open acka47 opened 8 months ago

acka47 commented 8 months ago

As published by the DNB.

Additional property in GND ONtology:

Modellierung von Benutzungshinweisen: Ergänzung der Property gndo:originalScriptNameOfThePerson

| Neuerung: Die neue Property gndo:originalScriptNameOfThePerson vom Typ DatatypeProperty wurde eingerichtet. Sie verweist auf Namensformen in Originalschrift und -sprache. Hierfür werden entsprechende language tags verwendet.

Additional information in the GND RDF:

Änderungen in den GND-Konversionen

| Neuerung: Für die GND-Entität Person werden Namensformen in Originalschriftund -sprache gekennzeichnet und ausgeliefert. Die language tags werden nach IETF BCP47 gebildet; sie geben wieder, dass die Namensform xx-sprachig und in yy-Schrift vorliegt. Ist die Sprache nicht bekannt, wird der Code „und“ für nichtdefiniert (undefined) verwendet und zusammen mit dem Code für die Schrift ausgegeben.

Examples

Beispiel in Turtle: Sprache bekannt <https://d-nb.info/gnd/118839810> gndo:originalScriptNameOfThePerson "מרקה"@he . Beispiel in Turtle: Sprache unbekannt <https://d-nb.info/gnd/113448007> gndo:originalScriptNameOfThePerson "กิตติศักดิ์ ปรกติ"@und-Thai .

Beispiele in der Testdatei: https://d-nb.info/gnd/118839810 https://d-nb.info/gnd/113448007 https://d-nb.info/gnd/102835470 https://d-nb.info/gnd/136163394 https://d-nb.info/gnd/1068497580

Addition of personal relations to nodes without GND ID

Neuerung: Für die GND-Entität Person werden zur Identifizierung auch solche Beziehungen zu Personen oder Familien ausgegeben, die nicht mit einer GND-ID referenziert sind. Diese Entitäten werden in Form von Blank nodes ausgeliefert. Beispiel in Turtle: <https://d-nb.info/gnd/124537359> gndo:acquaintanceshipOrFriendship _:node123 . _:node123 gndo:forname "Johannes Adam " ; gndo:surname "Lonicer" .

SKOS Relations to other controlled vocabs

Zu diesem Release werden erstmals auch die semantischen Relationen (nur Äquivalenzen) zwischen den Deskriptoren der GND (alle Entitäten) und mehreren weiteren Thesauri (AGROVOC11, EMBNE12, LCSH13, MeSH, NSogg14, RAMEAU15 und TheSoz16) im GND-Dump bereitgestellt und anschließend jährlich im Oktober/November aktualisiert. Für die Beschreibung der Terme und der Beziehungen zwischen den Termen wird SKOS17 (Simple Knowledge Organization System) verwendet. Die SKOS-Relationen zu STW18-Deskriptoren werden in dieser Form bereits für GND- Sachbegriffe ausgeliefert, mit diesem Release auch für alle weiteren GND-Entitäten. Die zugrunde liegenden Crosskonkordanzen zwischen dem normierten Vokabular der GND und den externen Thesauri wurden intellektuell erzeugt, teilweise mit Unterstützung maschineller Verfahren (EMBNE). Die so vernetzten Normdaten ermöglichen (multilinguale) Metasuchen in Bibliothekskatalogen und Portalen und unterstützen Fremddatenübernahmen ebenso wie maschinelle Indexierungsverfahren.

Beispiele in Turtle:

<https://d-nb.info/gnd/4060485-8> skos:exactMatch
<http://aims.fao.org/aos/agrovoc/c_8021> .
<https://d-nb.info/gnd/4040280-0> skos:closeMatch
<http://id.loc.gov/authorities/subjects/sh85087285>,
<http://data.bnf.fr/ark:/12148/cb11982810h>,
<http://datos.bne.es/resource/XX532617> ;
<https://d-nb.info/gnd/118535315> skos:exactMatch
<http://lod.gesis.org/thesoz/concept_10044342> 

BeispieleinderTestdatei: https://d-nb.info/gnd/118535315 https://d-nb.info/gnd/118812432 https://d-nb.info/gnd/4040280-0 https://d-nb.info/gnd/4315200-4 https://d-nb.info/gnd/1265150281 https://d-nb.info/gnd/4060485-8 https://d-nb.info/gnd/4002924-4 https://d-nb.info/gnd/4137380-7

Test data

Folgende Testdaten,die die angekündigten Änderungen beinhalten, sind in den Serialisierungsformen RDF/XML, Turtle und JSON-LD abrufbar unter https://data.dnb.de/testdat/: | GNDTestRelease2024_01...“fürdie Normdatender GND

acka47 commented 4 months ago

These changes are now coming in and start to make problems so that we received an alert mail "Alert GND: found not compacted field(s)":

Am 20.02.24 um 12:41 schrieb sol:

gnd_20221209.mappings.authority.properties.https://d-nb.properties.info/standards/elementset/gnd#originalScriptNameOfThePerson.properties.@language.type gnd_20221209.mappings.authority.properties.https://d-nb.properties.info/standards/elementset/gnd#originalScriptNameOfThePerson.properties.@language.fields.keyword.type gnd_20221209.mappings.authority.properties.https://d-nb.properties.info/standards/elementset/gnd#originalScriptNameOfThePerson.properties.@value.type gnd_20221209.mappings.authority.properties.https://d-nb.properties.info/standards/elementset/gnd#originalScriptNameOfThePerson.properties.@value.fields.keyword.type

fsteeg commented 4 months ago

These changes are now coming in and start to make problems [...]

This was just a temporary config issue on the server, statements leading to non-compacted fields are now skipped during processing (see https://github.com/hbz/lobid-gnd/commit/b0c88f6), the alert was for the wrong index (which still contains the non-compacted field).

acka47 commented 4 months ago

Regearding

Addition of personal relations to nodes without GND ID

This originates from issue GND-57 we opened at DNB' s JIRA in 2018, see https://github.com/hbz/lobid-gnd/issues/124. I am not sure whether this will directly work for lobid so that we have it in the index (and the UI).

Example has GND ID 124537359:

The turtle now contains the information:

<https://d-nb.info/gnd/124537359> gndo:acquaintanceshipOrFriendship <https://d-nb.info/gnd/11968568X>,
    <https://d-nb.info/gnd/102831963>, <https://d-nb.info/gnd/119603578>, <https://d-nb.info/gnd/119616572>,
    <https://d-nb.info/gnd/118677446>, <https://d-nb.info/gnd/11968599X>, <https://d-nb.info/gnd/119522403>,
    _:node1hn2nbfoqx3718620 .

_:node1hn2nbfoqx3718620 gndo:forname "Johannes Adam";
  gndo:surname "Lonicer" .

However, this resource was not updated in lobid as the updates are apparently triggered by the modification date in the MARC record which is (as changes have only happened in the transformation to RDF): 2022-03-23

    <controlfield tag="005">20220323003024.0</controlfield>

The RDF/turtle just uses the MARC modification date in dct:modified:

<https://d-nb.info/gnd/124537359/about> dcterms:license <http://creativecommons.org/publicdomain/zero/1.0/>;
  dcterms:modified "2022-03-23T00:30:24.000"^^xsd:dateTime;
  gndo:descriptionLevel <https://d-nb.info/standards/vocab/gnd/description-level#1> .

Thus, we will have to reindex the whole GND to get in those changes and to check whether this works.

However, with this query I found some records that have recently changed and contain blank nodes in acquaintanceshipOrFriendship:

describedBy.dateModified:2024-02-19 AND _exists_:acquaintanceshipOrFriendship.

Example: 12490582X

MARC:

    <datafield tag="500" ind1="1" ind2=" ">
      <subfield code="a">Melanchthon, Philipp</subfield>
      <subfield code="4">beza</subfield>
      <subfield code="4">https://d-nb.info/standards/elementset/gnd#acquaintanceshipOrFriendship</subfield>
      <subfield code="w">r</subfield>
      <subfield code="i">Bekanntschaft</subfield>
      <subfield code="e">Bekanntschaft</subfield>
      <subfield code="9">v:VD-16 Mitverf.</subfield>
    </datafield>
    <datafield tag="500" ind1="1" ind2=" ">
      <subfield code="a">Frenzel, Salomon</subfield>
      <subfield code="4">beza</subfield>
      <subfield code="4">https://d-nb.info/standards/elementset/gnd#acquaintanceshipOrFriendship</subfield>
      <subfield code="w">r</subfield>
      <subfield code="i">Bekanntschaft</subfield>
      <subfield code="e">Bekanntschaft</subfield>
      <subfield code="9">v:VD-16 Mitverf.</subfield>
    </datafield>
    <datafield tag="500" ind1="1" ind2=" ">
      <subfield code="a">Sigfrid, Johannes</subfield>
      <subfield code="4">beza</subfield>
      <subfield code="4">https://d-nb.info/standards/elementset/gnd#acquaintanceshipOrFriendship</subfield>
      <subfield code="w">r</subfield>
      <subfield code="i">Bekanntschaft</subfield>
      <subfield code="e">Bekanntschaft</subfield>
      <subfield code="9">v:VD-16 Mitverf.</subfield>
    </datafield>
    <datafield tag="500" ind1="1" ind2=" ">
      <subfield code="a">Dornkreil, Tobias</subfield>
      <subfield code="4">beza</subfield>
      <subfield code="4">https://d-nb.info/standards/elementset/gnd#acquaintanceshipOrFriendship</subfield>
      <subfield code="w">r</subfield>
      <subfield code="i">Bekanntschaft</subfield>
      <subfield code="e">Bekanntschaft</subfield>
      <subfield code="9">v:VD-16 Mitverf.</subfield>
    </datafield>

Turtle:

<https://d-nb.info/gnd/12490582X> gndo:acquaintanceshipOrFriendship <https://d-nb.info/gnd/116617446>,
    <https://d-nb.info/gnd/121563650>, <https://d-nb.info/gnd/116974788>, _:node1hn2nbfoqx3728988 .

_:node1hn2nbfoqx3728988 gndo:forname "Philipp";
  gndo:surname "Melanchthon" .

<https://d-nb.info/gnd/12490582X> gndo:acquaintanceshipOrFriendship _:node1hn2nbfoqx3728989 .

_:node1hn2nbfoqx3728989 gndo:forname "Salomon";
  gndo:surname "Frenzel" .

<https://d-nb.info/gnd/12490582X> gndo:acquaintanceshipOrFriendship _:node1hn2nbfoqx3728990 .

_:node1hn2nbfoqx3728990 gndo:forname "Johannes";
  gndo:surname "Sigfrid" .

<https://d-nb.info/gnd/12490582X> gndo:acquaintanceshipOrFriendship <https://d-nb.info/gnd/119763931>,
    <https://d-nb.info/gnd/103084681>, _:node1hn2nbfoqx3728991 .

_:node1hn2nbfoqx3728991 gndo:forname "Tobias";
  gndo:surname "Dornkreil" .

So, the GND turtle looks fine (at least on first sight) but not the [lobid-gnd JSON]():

"acquaintanceshipOrFriendship": [

        {
              "surname": [
                    "Sigfrid"
              ]
        },
        {
              "surname": [
                    "Frenzel"
              ]
        },
        {
              "surname": [
                    "Melanchthon"
              ]
        },
        {
              "surname": [
                    "Dornkreil"
              ]
        }

  ]

The forename is lost and this is apparently because of a typo in the transformation as it is delivererd as gndo:forname which does not exist instead of the correct gnd:forename. I will comment accordingly in the GND JIRA.

acka47 commented 4 months ago

Regarding

Für die GND-Entität Person werden Namensformen in Originalschriftund -sprache gekennzeichnet und ausgeliefert

We will have to add https://d-nb.info/standards/elementset/gnd#originalScriptNameOfThePerson to the JSON-LD context.

However, there remain some questions:

  1. Can there be several values behind this property? I guess we should use an array anyway.
  2. How will we indicate the language tag? A language maps approach probably does not make sense here.

Example turtle:

 <https://d-nb.info/gnd/118839810> gndo:originalScriptNameOfThePerson "מרקה"@he .

It seems to me that it makes most sense in this case to use the value object approach (which is the default way the JSON-LD library handles this, anyway, see the alert quoted in https://github.com/hbz/lobid-gnd/issues/362#issuecomment-1954082993):

{
   "id":"https://d-nb.info/gnd/118839810",
   "originalScriptNameOfThePerson":{
      "@value":"מרקה",
      "@language":"he"
   }
}

Why not use another string internationalization approach in JSON-LD?

Right?