hbz / nwbib

Die Nordrhein-Westfälische Bibliographie
http://nwbib.de
3 stars 2 forks source link

Entferne (redundante) Notation, wenn (nicht-notierte) Unterordnung vorhanden #540

Closed acka47 closed 4 years ago

acka47 commented 4 years ago

On 06.02.20 11:35, I.N. wrote:

Ist es aus technischen Gründen notwendig, dass sowohl die Überordnung als auch die Unterordnung angezeigt wird? Eigentlich würde ja die Anzeige der Unterordnung ausreichen?

Beisp.: https://nwbib.de/HT019250194 https://nwbib.de/HT019250194

Beisp.: https://nwbib.de/HT019614366 https://nwbib.de/HT019614366

Beisp.: https://nwbib.de/HT018133842 https://nwbib.de/HT018133842

Beisp.: https://nwbib.de/HT020150940 https://nwbib.de/HT020150940

Das Problem ist, dass in den Daten sowhol Über- wie Unterordnung eingetragen sind.

Aus den Quelldaten von HT019250194:

<datafield tag="700" ind1="n" ind2="1">
  <subfield code="a">Kleinere weltliche Territorien in Westfalen</subfield>
  <subfield code="0">https://nwbib.de/spatial#N74</subfield>
</datafield>
<datafield tag="700" ind1="n" ind2="1">
  <subfield code="a">Herrschaft Rheda</subfield>
  <subfield code="0">https://nwbib.de/spatial#Q932656</subfield>
</datafield>

Aus dem JSON:

{
   "spatial":[
      {
         "id":"https://nwbib.de/spatial#Q932656",
         "type":[
            "Concept"
         ],
         "source":{
            "id":"https://nwbib.de/spatial",
            "label":"Raumsystematik der Nordrhein-Westfälischen Bibliographie"
         },
         "label":"Herrschaft Rheda",
         "focus":{
            "id":"http://www.wikidata.org/entity/Q932656",
            "label":"Herrschaft Rheda"
         }
      },
      {
         "id":"https://nwbib.de/spatial#N74",
         "type":[
            "Concept"
         ],
         "source":{
            "id":"https://nwbib.de/spatial",
            "label":"Raumsystematik der Nordrhein-Westfälischen Bibliographie"
         },
         "notation":"74",
         "label":"Kleinere weltliche Territorien in Westfalen"
      }
   ]
}
acka47 commented 4 years ago

Wie bekommen wir am einfachsten heraus, bei welchen der 608 Titel die Notation 74 nicht gelöscht werden muss? Das sind all jene, die "spatial.id": "https://nwbib.de/spatial#N74" haben aber keine Unterordnung dessen. Wahrscheinlich bekommt man die Antwort am besten mit einer Sparql-Query...

acka47 commented 4 years ago

1. Allte Titel mit N74 als ndjson

$ curl --header "Accept: application/x-jsonlines" "http://lobid.org/resources/search?q=spatial.id%3A%22https%3A%2F%2Fnwbib.de%2Fspatial%23N74%22" > 74.ndjson

2. Relevante Infos aus nwbib-spatial.ttl

import rdflib

g = rdflib.Graph()

g.parse("nwbib-spatial.ttl", format="ttl")

qres = g.query(
    """
    PREFIX skos: <http://www.w3.org/2004/02/skos/core#>

    CONSTRUCT { ?x skos:broader <https://nwbib.de/spatial#N74> }
       WHERE {
           { ?x skos:broader <https://nwbib.de/spatial#N74> }
       }""")

with open("74.nt", "w") as output:
            output.write(qres.serialize(format='nt'))

3. Merge Graphen und SPARQL Abfrage

import logging
import rdflib

logging.basicConfig()
filepath = '74.ndjson'
input = open(filepath).readlines()
g=rdflib.Graph()

for line in input:
    g.parse(data=line, format="json-ld")

g.parse("74.nt", format="nt")

qres = g.query(
    """SELECT DISTINCT ?resource
       WHERE {
           ?resource <http://purl.org/dc/terms/spatial> [ 
               <http://www.w3.org/2004/02/skos/core#broader> <https://nwbib.de/spatial#N74>
               ] .
       }""")

with open("result.txt", "a") as output:
    for row in qres:
            output.write("%s" % row)
            output.write("\n")

Es sind 557 Titel, die sowohl N74 als auch eine Unterordnung dessen in spatial haben. Das Ergebnis ist in diesem gist: https://gist.github.com/acka47/cb0177d8911db48fce50a71b3849796d

fsteeg commented 4 years ago

Es sind 557 Titel, die sowohl N74 als auch eine Unterordnung dessen in spatial haben. Das Ergebnis ist in diesem gist: https://gist.github.com/acka47/cb0177d8911db48fce50a71b3849796d

OK cool, das sieht ja gut aus und hat ja schnell geklappt.

Bei denen soll jetzt die N74 raus? D.h. Update-Datei für den Katalog erstellen wie in z.B. in https://github.com/hbz/nwbib/issues/523?

acka47 commented 4 years ago

Bei denen soll jetzt die N74 raus? D.h. Update-Datei für den Katalog erstellen wie in z.B. in #523?

Ja, genau.

fsteeg commented 4 years ago

@acka47 Hm, ich habe mir nochmal die Beispiele aus dem ersten Kommentar angesehen, ist nicht N74 nur ein Beispiel? Da sind z.B. N10, N54, N24, N14 etc. dabei. Heisst das, was du gemacht hast müsste man für all diese Notationen machen?

acka47 commented 4 years ago

Heisst das, was du gemacht hast müsste man für all diese Notationen machen?

Upps, ja, da hast du wohl recht.

fsteeg commented 4 years ago

OK, da ich ja die Liste eh noch recht komplex verarbeiten müsste (um die Daten für 700n zu bekommen) würde ich da dann nochmal anders rangehen. Ich denke, wir könnten im Prinzip alle mit spatial.id durchgehen und generell Überordnungen rausnehmen, wenn es auch eine Unterordnung gibt, ich gucke mir das mal an.

Aber generell ist das richtig hier, die sollen im Katalog raus? Wäre ja auch auf UI-Ebene möglich.

acka47 commented 4 years ago

Ich denke, wir könnten im Prinzip alle mit spatial.id durchgehen und generell Überordnungen rausnehmen, wenn es auch eine Unterordnung gibt, ich gucke mir das mal an.

+1

Aber generell ist das richtig hier, die sollen im Katalog raus? Wäre ja auch auf UI-Ebene möglich.

Ja, die sollen raus. Das haben wir beim initialen Export der URIs im Dezember verschlafen und sollten das jetzt nachholen.

fsteeg commented 4 years ago

Import-Datei: 700n-import-20200401-1000.txt (731 Einträge)

Hier ein Beispiel: https://nwbib.de/HT018204756

Raumsystematik und was weg soll:

05566036 Laer > Holthausen 05566004 Altenberge 04 Westfalen 05566064 Nordwalde 05566024 Horstmar 05566024 Horstmar > Leer 05566 Kreis Steinfurt 05566 Kreis Steinfurt > Steinfurt (bis 1421) > Burgsteinfurt 05566036 Laer 05566 Kreis Steinfurt > Steinfurt (bis 1421) > Borghorst 01 Nordrhein-Westfalen

D.h. für die Import-Datei:

HT018204756 "Holthausen$$0https://nwbib.de/spatial#Q15115136", "Altenberge$$0https://nwbib.de/spatial#Q181809", "Westfalen$$0https://nwbib.de/spatial#N04", "Nordwalde$$0https://nwbib.de/spatial#Q182248", "Leer$$0https://nwbib.de/spatial#Q1812138", "Burgsteinfurt$$0https://nwbib.de/spatial#Q9182180", "Borghorst$$0https://nwbib.de/spatial#Q9177531", "Nordrhein-Westfalen$$0https://nwbib.de/spatial#N01", "Zeitungen$$0https://nwbib.de/subjects#N882024"

Weitere Stichproben kann man gut per grep nach hbz-ID in der Datei machen.

acka47 commented 4 years ago

Hmm, ich habe zwei Titel aus dem oben verlinkten gist ausprobiert (HT016542897, BT000040290). Beide sind nicht https://github.com/hbz/nwbib/files/4413820/700n-import-20200401-1000.txt, obwohl dort immer noch sowohl Über- (N74) wie Unterordnung drin sind.

fsteeg commented 4 years ago

Oh, da habe ich durch einen Bug die häufigsten Fälle übersprungen.

Neue Import-Datei: 700n-import-20200401-1200.txt.zip (10631 Einträge, vorher: 731)

acka47 commented 4 years ago

Sieht gut aus bis auf eine Sache. Bei vier Notationen gibt es kein Label in der Update-Datei, obwohl die in nwbib-spatial stehen: N23, Q1374337, Q31312912, Q328545

41 Titel sind betroffen, einfach nach "spatial# in der Datei suchen. Keine Ahnung, woran das liegt. Könnten wir einfach mit find/replace korrigieren...

fsteeg commented 4 years ago

Hm, die Label sind offenbar in den Daten kaputt, z.B. spatial.label von Q1374337 in http://lobid.org/resources/BT000041390.json. Ich habe das hier beim Erzeugen der Import-Datei repariert, indem ich für die Fälle das Label nachschlage.

Neue Import-Datei: 700n-import-20200401-1400.txt.zip

acka47 commented 4 years ago

+1

acka47 commented 4 years ago

Ich habe gerade gemerkt, dass die Datei auch ZDB-Titel enthält, die ja nicht in hbz01 aktualisiert werden (können/sollen). Beispiel: https://nwbib.de/HT018180917 :

{
   "inCollection":[
      {
         "id":"http://lobid.org/resources/HT014176012#!",
         "type":[
            "Collection"
         ],
         "label":"Nordrhein-Westfälische Bibliographie (NWBib)"
      },
      {
         "id":"http://lobid.org/resources/HT014846970#!",
         "type":[
            "Collection"
         ],
         "label":"Zeitschriftendatenbank (ZDB)"
      }
   ]
}

Die müssen leider noch raus.

fsteeg commented 4 years ago

Import-Datei ohne ZDB: 700n-import-20200402-1130.txt.zip

acka47 commented 4 years ago

Die Update-Datei wurd ein hbz01 eingespielt und die meisten Änderungen sind auch bereits in lobid-resources aber nicht alle (siehe z.B. https://nwbib.de/HT020150940). Mit dem nächsten Einspielen eines Vollabzugs sollten wir dann durch sein.

acka47 commented 4 years ago

aber nicht alle (siehe z.B. https://nwbib.de/HT020150940). Mit dem nächsten Einspielen eines Vollabzugs sollten wir dann durch sein.

Das ist eine ZDB-Ressource. Wie es scheint, wurde also doch bereits alles aktualisiert.

acka47 commented 4 years ago

Closing.

acka47 commented 4 years ago

Das hier müssen wir auch in #465 berücksichtigen.