UB-Mannheim / zotkat

Erweiterung von Zotero für die Katalogisierung
GNU Affero General Public License v3.0
45 stars 22 forks source link

[picaSWB] Autoren durch PPN ersetzen #1

Closed zuphilip closed 8 years ago

zuphilip commented 8 years ago

Eine Möglichkeit um (bekannte) Autoren durch die entsprechende PPN zu ersetzen wäre schön.

Beispiel: Ersetze "King, Stephen" durch die PPN 161710654, vgl. auch http://swb.bsz-bw.de/DB=2.1/PPNSET?PPN=161710654&INDEXSET=1

Vielleicht als einfachste Möglichkeit wäre eine Liste mit bekannten und eindeutigen Autorennamen, welche dann beim exporten nach Pica mit der gespeicherten PPN ersetzt werden. Falls der Name nicht in der Liste auftritt, dann soll weiterhin der Autorenname als Text exportiert werden.

socheres commented 8 years ago

Ja, analog zu "journalMapping" soll noch eine Konkordanz (Autorennamen <> PPN) im bestehenden Skript "authorMapping" erstellt und das Skript angepasst werden. Das Skript wird dadurch ziemlich lang werden, aber zurzeit die einfachste Lösung.

zuphilip commented 8 years ago

Es bietet sich wahrscheinlich an, diese Listen auszulagern in eigene Dateien. Zumal auch in einem anderen Kontext evt. andere Listen benötigt werden könnten. Werde ich mir genauer anschauen...

zuphilip commented 8 years ago

Mein Vorschlag hierzu wäre folgende Implemenierung: https://github.com/UB-Mannheim/zotkat/commit/1ce556d6ab229f3ca300d5e868863a9adad63d9b (dies befindet sich noch momentan im branch autoren-mapping).

Meine Idee war auch noch die Listen als JSON-Dateien auszulagern. Leider bin ich mir nicht sicher, wie man dies dann hier in Javascript in dem Translator Framework von Zotero wieder einbinden kann. @kba @stweil Ideen dazu?

zuphilip commented 8 years ago

Ich bin mir nicht sicher, ob es richtig ist lokale Dateien durch $.doGet, XMLHttpRequest oder eben die Zotero-Variante ZU.doGet einzubinden...?

kba commented 8 years ago

If you want to implement this with a local JSON file in the Firefox extension, you will need to use the Mozilla API, c.f. https://github.com/zotero/zotero/blob/7d404e8d4ad636987acfe33d0b8620263004d6d0/chrome/content/zotero/xpcom/zotero.js#L949. Here's an example from the Zotero code base where this is used https://github.com/zotero/zotero/blob/7d404e8d4ad636987acfe33d0b8620263004d6d0/chrome/content/zotero/xpcom/locateManager.js.

There are newer, simpler APIs, e.g. https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/OSFile.jsm/OS.File_for_the_main_thread

However, for development it is probably easier to serve the file from a web server, so you can use the more intuitive HTTP GET calls you mentioned.

socheres commented 8 years ago

@zuphilip Mapping-Funktion positiv getestet und habe paar kleine Änderung vorgenehmen.

zuphilip commented 8 years ago

Okay, dann sollte die Form gleich bleiben. Ich werden dann bei Gelegenheit einmal mit doGet das Auslagern testen auch wenn dies dann nur online geht. Die anderen Möglichkeiten, welche @kba beschrieben hat, sind mir zu kompliziert.

@socheres Magst Du die Änderungen wieder als Pull Request schicken?

socheres commented 8 years ago

@zuphilip ich habe nun patch-3 als pull request geschickt. Eine Autorenmappingliste für den Test lade ich auch bald hoch.

zuphilip commented 8 years ago

Okay, patch-3 ist jetzt eingespielt. Die Möglichkeit solche Listen auszulagern ist noch nicht erledigt.

socheres commented 8 years ago

@zuphilip wie siehst die Chance für die Autoren-Mapping [ognd](http://swb.bsz-bw.de/DB=2.104/SET=1/TTL=1/CMD?SGE=&ACT=SRCHM&MATCFILTER=Y&MATCSET=Y&NOSCAN=Y&PARSE_MNEMONICS=N&PARSE_OPWORDS=N&PARSE_OLDSETS=N&IMPLAND=Y&NOABS=Y&ACT0=SRCHA&=SRCHA&IKT0=1004&TRM0=becker, jürgen&ACT1=&IKT1=4069&TRM1=tpv1&ACT2=&IKT2=8991&TRM2=theo) als "dynamische" Schnittstelle zu nutzen? In ognd kann ich allerdings nicht nach Lebendaten die Datenmenge zusätzlich einschränken, was in WinIBW-Client möglich ist. Überlegt habe ich auch, ob man die Werte "creator.lastName" + ", "creator.firstName" von Zotero an yaz-client übergibt (Base: swb104), um dann die gematchten PPNs - sowohl eindeutige als auch mehrdeutige Treffer - zurückliefen zu lassen. Ähnlich wie du das in Malibu programmiert hast - gut hier hast du php und javascripts als Programmiersprache verwendet -. Allerdings auch hier sind die BIB-1 Attribute nicht ausreichend fürs Filterkriterium. Z.B. f @and @attr 1=1001 "tpv1" @attr 1=1004 "becker, Jürgen". In yaz fehlt sogar die Recherchenmöglichkeit nach Indikator 8991 (Suchschlüssel in WinIBW "rls"). Wenn das BSZ in beiden Tools ihre Recherchenmöglichkeit erweitern könnten, würde die Mapping theoretisch "on the fly" erledigt werden können. Bislang habe ich mühsam mit der Funktion "Excelliste erstellen" in WiniBW die Personensätze heruntergeladen und in Excel auch nach eindeutigen und mehrdeutigen Personen gefilert. Berücksichtigt habe ich dabei auch die "abweichende Namensformen" in 400 Kategorie (Pica3). Bei gleichnamigen Personen wird mehrere PPNs vorgeschlagen. In der Regel zwei PPNs. Z.B. "Althaus, Paul" : "!265473411!, !186545169!" Da ich bei meiner ersten Mappingdatei einige Suchlogik nicht berücksichtigt hatte, werde ich nun eine neue Datei erstellen. Da meine Liste ziemlich lang sein wird, wäre es gut, diese Liste dann bald auszulagern;)

socheres commented 8 years ago

@zuphilip in der [ognd](http://swb.bsz-bw.de/DB=2.104/SET=70/TTL=1/CMD?SGE=&ACT=SRCHM&MATCFILTER=Y&MATCSET=Y&NOSCAN=Y&PARSE_MNEMONICS=N&PARSE_OPWORDS=N&PARSE_OLDSETS=N&IMPLAND=Y&NOABS=Y&ACT0=SRCHA&SHRTST=50&IKT0=2042&TRM0=becker, julius&ACT1=&IKT1=8991&TRM1=theol&ACT2=*&IKT2=8991&TRM2=19**) man doch alle Suchindikatoren für die Suche nutzen.

zuphilip commented 8 years ago

Dies wurde jetzt als Lookup URLs implementiert für die Prüfung durch die Bearbeiter.