Skip to content

Commit

Permalink
Merge branch 'strapi-rpb-20-rename' of https://github.com/hbz/rpb int…
Browse files Browse the repository at this point in the history
…o main

Resolves hbz/strapi-rpb#20
  • Loading branch information
fsteeg committed Mar 12, 2024
2 parents 88d24e4 + 8d0ffd7 commit a29ab60
Show file tree
Hide file tree
Showing 6 changed files with 203 additions and 176 deletions.
98 changes: 49 additions & 49 deletions conf/output/test-output-rppd.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion conf/rppd-import.flux
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
default HOST = "localhost"; // pass e.g. HOST=test-metadaten-nrw.hbz-nrw.de
default IN_FILE = "test-output-rppd.json"; // pass e.g. IN_FILE=output-rppd-strapi.ndjson
default API_TOKEN = ""; // pass e.g. API_TOKEN=e8d...
API_URL = "http://" + HOST + ":1337/api/rppds";
API_URL = "http://" + HOST + ":1337/api/persons";

FLUX_DIR + "output/" + IN_FILE
| open-file
Expand Down
147 changes: 81 additions & 66 deletions conf/rppd-to-lobid.fix
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ do put_macro("beacon_lookup")
end
end

do put_macro("move_here")
move_field("$[field]", "_temp")
move_field("_temp", "$[field]")
end

do once("map")
put_filemap("conf/RPB-Export_HBZ_SW.tsv", "SW_map", sep_char: "\t")
put_filemap("conf/RPB-Export_HBZ_SWN.tsv", "SWN_map", sep_char: "\t")
Expand Down Expand Up @@ -55,7 +60,7 @@ do once("map")
end

# Kommentar Doku: #14 "x" eintragen, falls der Datensatz nicht im Webopac erscheinen soll, z.B. noch nicht aufgearbeitete ps-Sätze
if exists("f14_")
if exists("doNotIndex")
reject()
end

Expand All @@ -66,17 +71,17 @@ add_field("@context", "http://lobid.org/gnd/context.jsonld")
#00 RPPD-ID
# Komentar Doku: (Achtung: 00 BLANK)

copy_field("f00_","id")
copy_field("f00_","rppdId")
copy_field("rppdId","id")
prepend("id","https://rppd.lobid.org/")
call_macro("move_here", field: "rppdId")

# -------
#82b (GND-ID (R)) -> gndIdentifier
# Kommentar Doku: ohne das vorangestellte Präfix (DE-588)

copy_field("f82b", "gndIdentifier")
unless all_contain("f82b", "Keine GND-Ansetzung")
copy_field("f82b","id")
call_macro("move_here", field: "gndIdentifier")
unless all_contain("gndIdentifier", "Keine GND-Ansetzung")
copy_field("gndIdentifier","id")
prepend("id","https://d-nb.info/gnd/")
end

Expand Down Expand Up @@ -111,7 +116,7 @@ set_array("type[]", "AuthorityResource", "Person", "DifferentiatedPerson")
# Name ist aber Kombination aus Geburtsdaten und Name e.g. "f1na": "Marquard, Udo / 1959-"
# Daher müss alles hinter dem Namen ab dem Leerzeichen gelöscht werden

copy_field("f1na", "preferredName")
call_macro("move_here", field: "preferredName")
replace_all("preferredName", "\\/\\s(ca\\.|um)?-?\\s?\\d.+$", "")
replace_all("preferredName","¬","")
trim("preferredName")
Expand All @@ -122,10 +127,11 @@ trim("preferredName")
# Kommentar #1nc Doku: sowohl GND, als auch lokale; getrennt mit @; auch bei Doppelnamen vom 2. Teil des Namens; auch Vw-Formen von Pseud/Wirkl. Name; (wird im web-Katalog nicht angezeigt)
# Kommentar #1nd Doku: sowohl GND, als auch lokale; getrennt mit @, gekennzeichnet mit ¬[Pseud.]¬/¬[Wirkl. Name]¬/¬[Früherer Name]¬/¬[Späterer Name]¬, oder ohne Kennzeichnung bei prägnanter, weiterer Namensform (wird im web-Katalog angezeigt)

set_array("variantName[]")
copy_field("f1nc[].*.f1nc", "variantName[].$append")
copy_field("f1nd[].*.f1nd", "variantName[].$append")
uniq("variantName[]")
set_array("_temp")
copy_field("variantName[].*.value", "_temp.$append")
copy_field("otherName[].*.value", "_temp.$append")
uniq("_temp")
move_field("_temp", "variantName[]")


# -------
Expand All @@ -151,25 +157,27 @@ lookup("depiction[].1.thumbnail", "gnd_to_thumbnail", delete: "true")
# professionOrOccupation[].*.label


set_array("professionOrOccupation[]")
do list(path:"f1nn[]", "var": "$i")
copy_field("$i.f1nn", "professionOrOccupation[].$append.label")
copy_field("$i.f1nn", "professionOrOccupation[].$last.id")
set_array("_temp")
do list(path:"professionOrOccupation[]", "var": "$i")
copy_field("$i.value", "_temp.$append.label")
copy_field("$i.value", "_temp.$last.id")
end

do list(path:"professionOrOccupation[]", "var": "$i")
do list(path:"_temp", "var": "$i")
replace_all("$i.label", "^http.+/(\\d.+)", "$1")
replace_all("$i.label", "^(\\d*)-(\\d)", "$1n$2")
lookup("$i.label", "SW_map", delete: "false")
end

move_field("_temp", "professionOrOccupation[]")

# -------
# #1wz (Wirkungszeitraum) -> periodOfActivity
# Kommentar Doku: Wenn kein Geburtsdatum und kein Todesdatum ermittelbar ist, kann hier ein Zeitraum eingetragen werden
# TODO kein Beispiel in Testdaten
set_array("periodOfActivity[]")
replace_all("f1wz", "(\\d{2})\\.(\\d{2})\\.(\\d{4})", "$3-$2-$1")
copy_field("f1wz", "periodOfActivity[].$append")
replace_all("periodOfActivity", "(\\d{2})\\.(\\d{2})\\.(\\d{4})", "$3-$2-$1")
copy_field("periodOfActivity", "periodOfActivity[].$append")

# -------
# #1no (Wirkungsort (m, R))-> placeOfActivity
Expand All @@ -180,60 +188,61 @@ copy_field("f1wz", "periodOfActivity[].$append")
# placeOfActivity[].*.id
# placeOfActivity[].*.label

set_array("placeOfActivity[]")
do list(path:"f1no[]", "var": "$i")
if any_match("$i.f1no", "^http.+")
copy_field("$i.f1no", "placeOfActivity[].$append.label")
copy_field("$i.f1no", "placeOfActivity[].$last.id")
lookup("placeOfActivity[].$last.label", "spatial_map")
set_array("_temp")
do list(path:"placeOfActivity[]", "var": "$i")
if any_match("$i.value", "^http.+")
copy_field("$i.value", "_temp.$append.label")
copy_field("$i.value", "_temp.$last.id")
lookup("_temp.$last.label", "spatial_map")
else
copy_field("$i.f1no", "placeOfActivity[].$append.label")
copy_field("$i.f1no", "placeOfActivity[].$last.id")
copy_field("$i.value", "_temp.$append.label")
copy_field("$i.value", "_temp.$last.id")
end
end
move_field("_temp", "placeOfActivity[]")


# -------
# #1np (Geburtsdatum) -> dateOfBirth
# Kommentar Doku: mit Punkten und führenden Nullen: 04.05.1950; für Jahrestagsanzeige: die erste 4stellige Zahl im Feld wird als Jahr aufgefasst, dh auch "März 1908" ist möglich; Jahre mit „um“, „vor“, „nach“ und „zwischen“ werden nicht als Jubiläumsjahr aufgefasst.
set_array("dateOfBirth[]")
replace_all("f1np", "(\\d{2})\\.(\\d{2})\\.(\\d{4})", "$3-$2-$1")
copy_field("f1np", "dateOfBirth[].$append")
replace_all("dateOfBirth", "(\\d{2})\\.(\\d{2})\\.(\\d{4})", "$3-$2-$1")
copy_field("dateOfBirth", "dateOfBirth[].$append")

# -------
# #1nq (Geburtsort (R)) -> placeOfBirth
# Kommentar Doku: Bei Orten aus RLP: ID-Nr. aus Register 2, sonst Klartext gem. GND

set_array("placeOfBirth[]")
if any_match("f1nq", "^http.+")
copy_field("f1nq", "placeOfBirth[].$append.label")
copy_field("f1nq", "placeOfBirth[].$last.id")
if any_match("placeOfBirth", "^http.+")
copy_field("placeOfBirth", "placeOfBirth[].$append.label")
copy_field("placeOfBirth", "placeOfBirth[].$last.id")
lookup("placeOfBirth[].$last.label", "spatial_map")
else
copy_field("f1nq", "placeOfBirth[].$append.label")
copy_field("f1nq", "placeOfBirth[].$last.id")
copy_field("placeOfBirth", "placeOfBirth[].$append.label")
copy_field("placeOfBirth", "placeOfBirth[].$last.id")
end

# -------
# #1nr (Sterbedatum) -> dateOfDeath
## Kommentar Doku: s. #1np

set_array("dateOfDeath[]")
replace_all("f1nr", "(\\d{2})\\.(\\d{2})\\.(\\d{4})", "$3-$2-$1")
copy_field("f1nr", "dateOfDeath[].$append")
replace_all("dateOfDeath", "(\\d{2})\\.(\\d{2})\\.(\\d{4})", "$3-$2-$1")
copy_field("dateOfDeath", "dateOfDeath[].$append")

# -------
# #1ns (Sterbeort (R)) -> placeOfDeath
# Kommentar Doku: s. #1nq

set_array("placeOfDeath[]")
if any_match("f1ns", "^http.+")
copy_field("f1ns", "placeOfDeath[].$append.label")
copy_field("f1ns", "placeOfDeath[].$last.id")
if any_match("placeOfDeath", "^http.+")
copy_field("placeOfDeath", "placeOfDeath[].$append.label")
copy_field("placeOfDeath", "placeOfDeath[].$last.id")
lookup("placeOfDeath[].$last.label", "spatial_map")
else
copy_field("f1ns", "placeOfDeath[].$append.label")
copy_field("f1ns", "placeOfDeath[].$last.id")
copy_field("placeOfDeath", "placeOfDeath[].$append.label")
copy_field("placeOfDeath", "placeOfDeath[].$last.id")
end

# -------
Expand All @@ -242,34 +251,36 @@ end
# TODO: Wenn rppd ID angegeben wird, unterstriche löschen und zu URL transformieren (wie id) und auf Feld relatedPerson[].*.id mappen.


set_array("relatedPerson[]")
do list(path:"f1nt[]", "var": "$i")
copy_field("$i.f1nt", "relatedPerson[].$append.label")
copy_field("$i.f1nt", "relatedPerson[].$last.id")
if any_match("relatedPerson[].$last.label", "^http.+")
lookup("relatedPerson[].$last.label", "map_rel_preferredName")
replace_all("relatedPerson[].$last.label", "^http.+/([p\\d].+)", "$1")
lookup("relatedPerson[].$last.label", "map_rel_rppdLabel")
set_array("_temp")
do list(path:"relatedPerson[]", "var": "$i")
copy_field("$i.value", "_temp.$append.label")
copy_field("$i.value", "_temp.$last.id")
if any_match("_temp.$last.label", "^http.+")
lookup("_temp.$last.label", "map_rel_preferredName")
replace_all("_temp.$last.label", "^http.+/([p\\d].+)", "$1")
lookup("_temp.$last.label", "map_rel_rppdLabel")
end
replace_all("relatedPerson[].$last.label","¬","")
replace_all("_temp.$last.label","¬","")
end
move_field("_temp", "relatedPerson[]")


# -------
# #1nu (Werke (m)) -> publication
# Kommentar Doku: nur Auswahl! Möglichst Originalausgabe angeben. Form: Titel, Jahr. Achtung: Nichtsortierzeichen für führenden Artikel (Alt-170); getrennt mit @; auch Werke von Architekten, Künstlern und Regisseuren

set_array("publication[]")
copy_field("f1nu[].*.f1nu", "publication[].$append")
set_array("_temp")
copy_field("publication[].*.value", "_temp.$append")
move_field("_temp", "publication[]")

# -------
# #1nv (Geschlecht) -> gender

set_array("gender[]")
if any_equal("f1nv", "männlich")
if any_equal("gender", "männlich")
set_field("gender[].$append.id", "https://d-nb.info/standards/vocab/gnd/gender#male")
set_field("gender[].$last.label", "Männlich")
elsif any_equal("f1nv", "weiblich")
elsif any_equal("gender", "weiblich")
set_field("gender[].$append.id", "https://d-nb.info/standards/vocab/gnd/gender#female")
set_field("gender[].$last.label", "Weiblich")
else
Expand All @@ -284,14 +295,15 @@ end
# gndSubjectCategory[].*.id
# gndSubjectCategory[].*.label

set_array("gndSubjectCategory[]")
do list(path:"f1nw[]", "var": "$i")
copy_field("$i.f1nw", "gndSubjectCategory[].$append.label")
copy_field("$i.f1nw", "gndSubjectCategory[].$last.id")
set_array("_temp")
do list(path:"gndSubjectCategory[]", "var": "$i")
copy_field("$i.value", "_temp.$append.label")
copy_field("$i.value", "_temp.$last.id")
end

do list(path:"gndSubjectCategory[]", "var": "$i")
replace_all("$i.label|$i.id", "^http.+/n?(\\d.*)", "$1")
do list(path:"_temp", "var": "$i")
replace_all("$i.label", "^http.+/n?(\\d.*)", "$1")
replace_all("$i.id", "^http.+/n?(\\d.*)", "$1")
lookup("$i.label", "SWN_map", delete: "true")
if exists("$i.label")
prepend("$i.id", "https://d-nb.info/standards/vocab/gnd/gnd-sc.html#")
Expand All @@ -300,27 +312,30 @@ do list(path:"gndSubjectCategory[]", "var": "$i")
end
end

move_field("_temp", "gndSubjectCategory[]")

# -------
#1ny (Datum der letzten inhaltlichen Änderung) -> describedBy.dateModified
# Kommentar Doku: JJJJMMTT, z.B. 20120928 für 28.09.2012

if any_match("f1ny", "(\\d{4})(\\d{2})(\\d{2})")
replace_all("f1ny", "(\\d{4})(\\d{2})(\\d{2})", "$1-$2-$3")
copy_field("f1ny", "describedBy.dateModified")
if any_match("dateModified", "(\\d{4})(\\d{2})(\\d{2})")
replace_all("dateModified", "(\\d{4})(\\d{2})(\\d{2})", "$1-$2-$3")
copy_field("dateModified", "describedBy.dateModified")
end

# -------
#1z1 (1. biogr. Anmerkung) -> biographicalOrHistoricalInformation
# Kommentar Doku: getrennt durch "; ". Keine Abkürzungen benutzen, da die Stichworte in Register 9 indexiert werden. Zitate aus Quellen in Anführungszeichen; bei sehr langen, biogr. Anmerkungen wird der Text auf mehrere Kategorien aufgeteilt: #1z2, #1z3, #1z4 ... #1z9. Bei eingespielten Biographien werden die Angaben zum Originalwerk am Ende angegeben: --- [Daten übernommen aus: ....]

set_array("biographicalOrHistoricalInformation[]")
copy_field("f1z1[].*.f1z1", "biographicalOrHistoricalInformation[].$append")
set_array("_temp")
copy_field("biographicalOrHistoricalInformation[].*.value", "_temp.$append")
move_field("_temp", "biographicalOrHistoricalInformation[]")

# #1nx (Quelle (m)) -> describedBy.source
# Kommentar Doku: getrennt mit @; Beispiel: Westerwälder Zeitung. - (2002), 224 vom 26.9., S. 20 (evtl. Todesanzeige)@Eigene Angaben (Datum); Genaue Adresse bei Websites: http://www... (Stand: Datum). Alle Quellen zu einer Person, werden hier zusammengeführt, auch wenn sie aus verschiedenen, eingespielten Werken stammen
set_array("describedBy.source[]")
copy_field("f1nx[].*.f1nx", "describedBy.source[].$append")
set_array("_temp")
copy_field("source[].*.value", "_temp.$append")
move_field("_temp", "describedBy.source[]")

vacuum()
retain(
Expand Down
Loading

0 comments on commit a29ab60

Please sign in to comment.