From 3af93ad746ddc22e7a51d5cc5ddafeb0a24d4e0d Mon Sep 17 00:00:00 2001 From: Felix Lohmeier Date: Thu, 27 Jul 2017 18:11:54 +0200 Subject: [PATCH] =?UTF-8?q?Anwendungsfall=20MARC21=20=C3=BCberarbeitet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SUMMARY.md | 2 - .../marc-vorverarbeitung.json | 0 ...formation-mit-openrefine-in-finc-schema.md | 84 +- ...erarbeitung-mit-marcedit-und-openrefine.md | 37 +- anwendungsfall-marc21/wiley-mapping.xls | Bin 0 -> 16384 bytes anwendungsfall-marc21/wiley-minimal.json | 931 ++++++++++++++++++ openrefine/marc.json | 163 --- openrefine/wiley.xls | Bin 16896 -> 0 bytes ...csv-zu-midas-xml-und-midas-xml-zu-excel.md | 0 .../dublin-core-xml-manipulieren.md | 0 10 files changed, 1026 insertions(+), 191 deletions(-) rename openrefine/marc_alternativ.json => anwendungsfall-marc21/marc-vorverarbeitung.json (100%) create mode 100644 anwendungsfall-marc21/wiley-mapping.xls create mode 100644 anwendungsfall-marc21/wiley-minimal.json delete mode 100644 openrefine/marc.json delete mode 100644 openrefine/wiley.xls delete mode 100644 weitere-anwendungsfalle/csv-zu-midas-xml-und-midas-xml-zu-excel.md delete mode 100644 weitere-anwendungsfalle/dublin-core-xml-manipulieren.md diff --git a/SUMMARY.md b/SUMMARY.md index 73e494d..09a3965 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -33,8 +33,6 @@ * [Metadaten eines Anbieters im CSV-Format](weitere-anwendungsfalle/metadaten-eines-anbieters-im-csv-format.md) * [Nachlässe aus Kalliope via SRU](weitere-anwendungsfalle/nachlasse-aus-kalliope-via-sru.md) -* [CSV zu MIDAS-XML und MIDAS-XML zu Excel](weitere-anwendungsfalle/csv-zu-midas-xml-und-midas-xml-zu-excel.md) -* [Dublin Core XML manipulieren](weitere-anwendungsfalle/dublin-core-xml-manipulieren.md) * [RDF vom AV-Portal der TIB](weitere-anwendungsfalle/rdf-vom-av-portal-der-tib.md) ## Suchindex Solr diff --git a/openrefine/marc_alternativ.json b/anwendungsfall-marc21/marc-vorverarbeitung.json similarity index 100% rename from openrefine/marc_alternativ.json rename to anwendungsfall-marc21/marc-vorverarbeitung.json diff --git a/anwendungsfall-marc21/transformation-mit-openrefine-in-finc-schema.md b/anwendungsfall-marc21/transformation-mit-openrefine-in-finc-schema.md index 465c356..dc0cbfe 100644 --- a/anwendungsfall-marc21/transformation-mit-openrefine-in-finc-schema.md +++ b/anwendungsfall-marc21/transformation-mit-openrefine-in-finc-schema.md @@ -4,33 +4,75 @@ Ziel: Daten für den Import in den Suchindex vorbereiten MARC21 ist sehr komplex und das [finc-Schema](https://github.com/finc/index/blob/master/schema.xml) hat ebenfalls etliche Felder, die teilweise kompliziert zu bilden sind. In dieser Summerschool können wir daher nur einen Teil erproben. -Arbeitstabelle \(in Summerschool erstellt\): [openrefine/wiley.xls](/openrefine/wiley.xls) - -## Felder definieren - -Neue Spalte anlegen: +## Neue Spalte anlegen für Definition der Felder (gemäß finc Schema) * column Subfields / Edit column / Add column based on this column... / Column Name: finc / Expression: "" -Felder definieren \(Beispiel für Titel = MARC 245\): +## Felder definieren + +Arbeitstabelle \(in Summerschool erstellt\): [wiley-mapping.xls](https://felixlohmeier.gitbooks.io/summerschool-openrefine/content/anwendungsfall-marc21/wiley-mapping.xls) + +Die Zuordnung der MARC-Daten zum finc-Schema kann in der Regel in einer drei folgenden Varianten erfolgen. + +### Variante A: Felder direkt aus einem MARC-Tag/Subfield definieren + +Beispiel für author = MARC 100 * show as: rows -* column Tags / Facet / text facet / "245" auswählen -* column Subfields / Facet / text facet / "a" und "b" auswählen -* column Indicators / Facet / text facet / "00", "02" und "04" auswählen -* column finc / edit cells / transform... / "title" +* column Tags / Facet / text facet / "100" auswählen +* column Subfields / Facet / text facet / "a" auswählen +* column Indicators / Facet / text facet / "1\" auswählen +* column finc / edit cells / transform... / "author" * close facets -Neue Zeile einfügen \(ist in OpenRefine nur mit einem Trick möglich\): +Beispiel für id = MARC 001 + +* column Tags / Facet / text facet / "001" auswählen +* column finc / edit cells / transform... / "id" +* close facets + +## Variante B: Felder aus mehreren MARC-Tags/Subfields zusammensetzen + +Wenn Felder sich aus mehreren Tag-Subfield-Indicator-Kombinationen zusammensetzen sollen, ist es am einfachsten, wenn die Teilbestandteile zunächst einzeln definiert werden. Beispiel für Titel = MARC 245 + +* column Tags / Facet / text facet / "245" auswählen +* column Subfields / Facet / text facet / "a" auswählen +* column Indicators / Facet / text facet / "00", "02" und "04" auswählen +* column finc / edit cells / transform... / "title1" +* close facets +* column Tags / Facet / text facet / "245" auswählen +* column Subfields / Facet / text facet / "a" auswählen +* column Indicators / Facet / text facet / "10", "12", "13" und "14" auswählen +* column finc / edit cells / transform... / "title2" +* close facets +* column Tags / Facet / text facet / "245" auswählen +* column Subfields / Facet / text facet / "b" auswählen +* column Indicators / Facet / text facet / "00" und "04" auswählen +* column finc / edit cells / transform... / "title3" +* close facets +* column Tags / Facet / text facet / "245" auswählen +* column Subfields / Facet / text facet / "b" auswählen +* column Indicators / Facet / text facet / "10", "12", "13" und "14" auswählen +* column finc / edit cells / transform... / "title4" +* close facets + +## Variante C: Zusätzliche Felder definieren + +Um zusätzliche Felder mit Werten zu belegen, die in den Ausgangsdaten nicht vorkommen, müssen zunächst mit einem Trick neue Zeilen eingefügt werden. Beispiel für die Facette "Zugang" im SLUB-Katalog. * column Tags / Facet / text facet / "LDR" auswählen * column Content / edit cells / transform... / Expression: value + "NEUEZEILE" * column Content / edit cells / Split multi-valued cells / Separator: NEUEZEILE * close facet -* Die neuen Zeilen kann nun über facet by blank ausgewählt werden: column Tags / Facet / Customized facets / facet by blank / true +* column Tags / Facet / Customized facets / facet by blank / true +* column finc / edit cells / transform... / "access_facet" +* column content / edit cells / transform... / "Electronic Resources" +* close facet ## Transponieren +Nachdem alle Felder (bzw. in Variante B deren Teilbestandteile) definiert wurden, müssen die Gesamtdaten transponiert werden, um die für den Import in den Suchindex benötigte Struktur zu erhalten. + * All / Edit columns / Re-order / remove columns ... / Spalten "RecordNumber", "Tags", "Indicators", "Subfields" nach rechts bewegen \(d.h. löschen\) * column finc / Facet / Customized facets / Facet by blank / true * All / Edit rows / Remove all matching rows @@ -39,9 +81,23 @@ Neue Zeile einfügen \(ist in OpenRefine nur mit einem Trick möglich\): * column finc / Facet / Customized facets / Facet by blank / true * All / Edit rows / Remove all matching rows * close facet -* column finc / transpose / columnize by key/value columns ... / ok -* Bei Bedarf Spalten manuell alphabetisch sortieren: All / Edit columns / Re-order / remove columns ... / +* column finc / transpose / columnize by key/value columns ... / key column: finc; value column: Content +* Spalten manuell sortieren: All / Edit columns / Re-order / remove columns ... / alphabetisch sortieren, Ausnahme: Spalte "id" soll als erstes stehen + +## Teilbestandteile zusammenfassen + +Beispiel für Titel + +* column title1 / Edit column / Add column based on this column... / Column Name: title / forNonBlank(cells["title1"].value,v,v,"") + forNonBlank(cells["title2"].value,v," "+v,"") + forNonBlank(cells["title3"].value,v," "+v,"") + forNonBlank(cells["title4"].value,v," "+v,"") +* column title / edit cells / transform... / value.trim().slice(0,-1) +* All / Edit columns / Re-order / remove columns ... / Spalten "title1", "title2", "title3", "title4" nach rechts bewegen \(d.h. löschen\) + +## Optional: Transformationsschritte als JSON-Konfiguration + +* Alle Transformationsschritte oben als JSON-Konfiguration: [wiley-minimal.json](https://felixlohmeier.gitbooks.io/summerschool-openrefine/content/anwendungsfall-marc21/wiley-minimal.json) ## Export Wählen Sie oben rechts im Menü Export den Menüpunkt `Tab-separated-value` + +Ergebnis: [wiley.tsv](https://www.felixlohmeier.de/slub/wiley/wiley.tsv) (aus Lizenzgründen zugriffsgeschützt) diff --git a/anwendungsfall-marc21/vorverarbeitung-mit-marcedit-und-openrefine.md b/anwendungsfall-marc21/vorverarbeitung-mit-marcedit-und-openrefine.md index 8a5938b..be1c39e 100644 --- a/anwendungsfall-marc21/vorverarbeitung-mit-marcedit-und-openrefine.md +++ b/anwendungsfall-marc21/vorverarbeitung-mit-marcedit-und-openrefine.md @@ -1,13 +1,23 @@ # Vorverarbeitung mit MarcEdit und OpenRefine -## Beispieldaten von MARC21 in TSV konvertieren +Ausgangsdaten: MARC21-Daten im Binärformat: [2016-2017_Wiley_UBCM_Auswahl-Kauf.mrc](https://www.felixlohmeier.de/slub/wiley/2016-2017_Wiley_UBCM_Auswahl-Kauf.mrc) (aus Lizenzgründen zugriffsgeschützt) -vgl. Anleitung im vorigen Kapitel +## Daten mit MarcEdit von MARC21 in TSV konvertieren + +Starten Sie MarcEdit, öffnen Sie den Bildschirm "OpenRefine Data Transfer" und geben Sie die folgenden Daten in die Maske ein: + +* Source File: Ausgangsdatei im MARC21-Format auswählen +* Save File: Ordner auswählen, Dateiname vergeben und bei "save as type" Tabbed Delimited Files (*.tsv) auswählen +* Export to OpenRefine auswählen und Button "Process" drücken + +Ergebnis: [wiley-marcedit-export.tsv](https://www.felixlohmeier.de/slub/wiley/wiley-marcedit-export.tsv) (aus Lizenzgründen zugriffsgeschützt) + +Achtung: MarcEdit ersetzt Dollarzeichen im Inhalt durch ```{dollar}```, damit das Dollarzeichen eindeutig als Steuerzeichen erkannt werden kann. ## Daten in OpenRefine laden * Menü Create Project -* TSV-Datei hochladen +* Im vorigen Schritt mit MarcEdit erstellte TSV-Datei hochladen * In den Optionen "store blank rows" deaktivieren ## Subfields aufteilen @@ -16,29 +26,32 @@ Führen Sie folgende Transformationsschritte in OpenRefine durch: * column Column / Edit column / Remove this column * column Content / Text filter: $ -* column Content / add column based on this column / Subfields / forEach\(value.split\("$"\),v,get\(v,0\)\).join\("$"\) -* column Content / edit cells / transform... / forEach\(value.split\("$"\),v,slice\(v,1\)\).join\("$"\) +* All / Edit rows / Star rows +* column Content / Edit cells / Transform... / value.slice(1) * close text filter -* column Subfields / edit cells / split multi-valued cells... / $ * column Content / edit cells / split multi-valued cells... / $ +* column RecordNumber / Facet / Customized facets / Facet by blank / true +* All / Edit rows / Star rows +* close facet +* All / Facet / Facet by star / true +* column Content / add column based on this column / Subfields / value.get(0) +* column Content / Edit cells / Transform... / value.slice(1) +* close facet ## Records bilden Führen Sie folgende Transformationsschritte in OpenRefine durch: -* column Subfields / Facet / customized facets / Facet by blank / false +* All / Facet / Facet by star / true * column RecordNumber / edit cells / Fill down * column Tags / edit cells / Fill down * column Indicators / edit cells / Fill down * close facet +* All / Edit rows / Unstar rows * column RecordNumber / edit cells / Blank down * Show: 5 rows * Show as: records ## Optional: Transformationsschritte als JSON-Konfiguration -* Alle Transformationsschritte oben als JSON-Konfiguration: [openrefine/marc.json](/openrefine/marc.json) -* In der Summerschool erarbeitete Alternativlösung: [openrefine/marc\_alternativ.json](/openrefine/marc_alternativ.json) - - - +* Alle Transformationsschritte oben als JSON-Konfiguration: [marc-vorverarbeitung.json](https://felixlohmeier.gitbooks.io/summerschool-openrefine/content/anwendungsfall-marc21/marc-vorverarbeitung.json) diff --git a/anwendungsfall-marc21/wiley-mapping.xls b/anwendungsfall-marc21/wiley-mapping.xls new file mode 100644 index 0000000000000000000000000000000000000000..c52595e3bcc04ec6939ca7f0fdb3ce818e5310c5 GIT binary patch literal 16384 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 CqPdU& literal 0 HcmV?d00001 diff --git a/anwendungsfall-marc21/wiley-minimal.json b/anwendungsfall-marc21/wiley-minimal.json new file mode 100644 index 0000000..d6f6915 --- /dev/null +++ b/anwendungsfall-marc21/wiley-minimal.json @@ -0,0 +1,931 @@ +[ + { + "op": "core/column-removal", + "description": "Remove column Column", + "columnName": "Column" + }, + { + "op": "core/row-star", + "description": "Star rows", + "engineConfig": { + "mode": "row-based", + "facets": [ + { + "mode": "text", + "caseSensitive": false, + "query": "$", + "name": "Content", + "type": "text", + "columnName": "Content" + } + ] + }, + "starred": true + }, + { + "op": "core/text-transform", + "description": "Text transform on cells in column Content using expression grel:value.slice(1)", + "engineConfig": { + "mode": "row-based", + "facets": [ + { + "mode": "text", + "caseSensitive": false, + "query": "$", + "name": "Content", + "type": "text", + "columnName": "Content" + } + ] + }, + "columnName": "Content", + "expression": "grel:value.slice(1)", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10 + }, + { + "op": "core/multivalued-cell-split", + "description": "Split multi-valued cells in column Content", + "columnName": "Content", + "keyColumnName": "RecordNumber", + "separator": "$", + "mode": "plain" + }, + { + "op": "core/row-star", + "description": "Star rows", + "engineConfig": { + "mode": "row-based", + "facets": [ + { + "omitError": false, + "expression": "isBlank(value)", + "selectBlank": false, + "selection": [ + { + "v": { + "v": true, + "l": "true" + } + } + ], + "selectError": false, + "invert": false, + "name": "RecordNumber", + "omitBlank": false, + "type": "list", + "columnName": "RecordNumber" + } + ] + }, + "starred": true + }, + { + "op": "core/column-addition", + "description": "Create column Subfields at index 4 based on column Content using expression grel:value.get(0)", + "engineConfig": { + "mode": "row-based", + "facets": [ + { + "omitError": false, + "expression": "row.starred", + "selectBlank": false, + "selection": [ + { + "v": { + "v": true, + "l": "true" + } + } + ], + "selectError": false, + "invert": false, + "name": "Starred Rows", + "omitBlank": false, + "type": "list", + "columnName": "" + } + ] + }, + "newColumnName": "Subfields", + "columnInsertIndex": 4, + "baseColumnName": "Content", + "expression": "grel:value.get(0)", + "onError": "set-to-blank" + }, + { + "op": "core/text-transform", + "description": "Text transform on cells in column Content using expression grel:value.slice(1)", + "engineConfig": { + "mode": "row-based", + "facets": [ + { + "omitError": false, + "expression": "row.starred", + "selectBlank": false, + "selection": [ + { + "v": { + "v": true, + "l": "true" + } + } + ], + "selectError": false, + "invert": false, + "name": "Starred Rows", + "omitBlank": false, + "type": "list", + "columnName": "" + } + ] + }, + "columnName": "Content", + "expression": "grel:value.slice(1)", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10 + }, + { + "op": "core/fill-down", + "description": "Fill down cells in column RecordNumber", + "engineConfig": { + "mode": "row-based", + "facets": [ + { + "omitError": false, + "expression": "row.starred", + "selectBlank": false, + "selection": [ + { + "v": { + "v": true, + "l": "true" + } + } + ], + "selectError": false, + "invert": false, + "name": "Starred Rows", + "omitBlank": false, + "type": "list", + "columnName": "" + } + ] + }, + "columnName": "RecordNumber" + }, + { + "op": "core/fill-down", + "description": "Fill down cells in column Tags", + "engineConfig": { + "mode": "row-based", + "facets": [ + { + "omitError": false, + "expression": "row.starred", + "selectBlank": false, + "selection": [ + { + "v": { + "v": true, + "l": "true" + } + } + ], + "selectError": false, + "invert": false, + "name": "Starred Rows", + "omitBlank": false, + "type": "list", + "columnName": "" + } + ] + }, + "columnName": "Tags" + }, + { + "op": "core/fill-down", + "description": "Fill down cells in column Indicators", + "engineConfig": { + "mode": "row-based", + "facets": [ + { + "omitError": false, + "expression": "row.starred", + "selectBlank": false, + "selection": [ + { + "v": { + "v": true, + "l": "true" + } + } + ], + "selectError": false, + "invert": false, + "name": "Starred Rows", + "omitBlank": false, + "type": "list", + "columnName": "" + } + ] + }, + "columnName": "Indicators" + }, + { + "op": "core/row-star", + "description": "Unstar rows", + "engineConfig": { + "mode": "row-based", + "facets": [] + }, + "starred": false + }, + { + "op": "core/blank-down", + "description": "Blank down cells in column RecordNumber", + "engineConfig": { + "mode": "row-based", + "facets": [] + }, + "columnName": "RecordNumber" + }, + { + "op": "core/column-addition", + "description": "Create column finc at index 5 based on column Subfields using expression grel:\"\"", + "engineConfig": { + "mode": "row-based", + "facets": [] + }, + "newColumnName": "finc", + "columnInsertIndex": 5, + "baseColumnName": "Subfields", + "expression": "grel:\"\"", + "onError": "set-to-blank" + }, + { + "op": "core/text-transform", + "description": "Text transform on cells in column finc using expression grel:\"author\"", + "engineConfig": { + "mode": "row-based", + "facets": [ + { + "omitError": false, + "expression": "value", + "selectBlank": false, + "selection": [ + { + "v": { + "v": "100", + "l": "100" + } + } + ], + "selectError": false, + "invert": false, + "name": "Tags", + "omitBlank": false, + "type": "list", + "columnName": "Tags" + }, + { + "omitError": false, + "expression": "value", + "selectBlank": false, + "selection": [ + { + "v": { + "v": "a", + "l": "a" + } + } + ], + "selectError": false, + "invert": false, + "name": "Subfields", + "omitBlank": false, + "type": "list", + "columnName": "Subfields" + }, + { + "omitError": false, + "expression": "value", + "selectBlank": false, + "selection": [ + { + "v": { + "v": "1\\", + "l": "1\\" + } + } + ], + "selectError": false, + "invert": false, + "name": "Indicators", + "omitBlank": false, + "type": "list", + "columnName": "Indicators" + } + ] + }, + "columnName": "finc", + "expression": "grel:\"author\"", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10 + }, + { + "op": "core/text-transform", + "description": "Text transform on cells in column finc using expression grel:\"id\"", + "engineConfig": { + "mode": "row-based", + "facets": [ + { + "omitError": false, + "expression": "value", + "selectBlank": false, + "selection": [ + { + "v": { + "v": "001", + "l": "001" + } + } + ], + "selectError": false, + "invert": false, + "name": "Tags", + "omitBlank": false, + "type": "list", + "columnName": "Tags" + } + ] + }, + "columnName": "finc", + "expression": "grel:\"id\"", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10 + }, + { + "op": "core/text-transform", + "description": "Text transform on cells in column finc using expression grel:\"title1\"", + "engineConfig": { + "mode": "row-based", + "facets": [ + { + "omitError": false, + "expression": "value", + "selectBlank": false, + "selection": [ + { + "v": { + "v": "245", + "l": "245" + } + } + ], + "selectError": false, + "invert": false, + "name": "Tags", + "omitBlank": false, + "type": "list", + "columnName": "Tags" + }, + { + "omitError": false, + "expression": "value", + "selectBlank": false, + "selection": [ + { + "v": { + "v": "a", + "l": "a" + } + } + ], + "selectError": false, + "invert": false, + "name": "Subfields", + "omitBlank": false, + "type": "list", + "columnName": "Subfields" + }, + { + "omitError": false, + "expression": "value", + "selectBlank": false, + "selection": [ + { + "v": { + "v": "00", + "l": "00" + } + }, + { + "v": { + "v": "02", + "l": "02" + } + }, + { + "v": { + "v": "04", + "l": "04" + } + } + ], + "selectError": false, + "invert": false, + "name": "Indicators", + "omitBlank": false, + "type": "list", + "columnName": "Indicators" + } + ] + }, + "columnName": "finc", + "expression": "grel:\"title1\"", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10 + }, + { + "op": "core/text-transform", + "description": "Text transform on cells in column finc using expression grel:\"title3\"", + "engineConfig": { + "mode": "row-based", + "facets": [ + { + "omitError": false, + "expression": "value", + "selectBlank": false, + "selection": [ + { + "v": { + "v": "245", + "l": "245" + } + } + ], + "selectError": false, + "invert": false, + "name": "Tags", + "omitBlank": false, + "type": "list", + "columnName": "Tags" + }, + { + "omitError": false, + "expression": "value", + "selectBlank": false, + "selection": [ + { + "v": { + "v": "b", + "l": "b" + } + } + ], + "selectError": false, + "invert": false, + "name": "Subfields", + "omitBlank": false, + "type": "list", + "columnName": "Subfields" + }, + { + "omitError": false, + "expression": "value", + "selectBlank": false, + "selection": [ + { + "v": { + "v": "00", + "l": "00" + } + }, + { + "v": { + "v": "04", + "l": "04" + } + }, + { + "v": { + "v": "02", + "l": "02" + } + } + ], + "selectError": false, + "invert": false, + "name": "Indicators", + "omitBlank": false, + "type": "list", + "columnName": "Indicators" + } + ] + }, + "columnName": "finc", + "expression": "grel:\"title3\"", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10 + }, + { + "op": "core/text-transform", + "description": "Text transform on cells in column finc using expression grel:\"title2\"", + "engineConfig": { + "mode": "row-based", + "facets": [ + { + "omitError": false, + "expression": "value", + "selectBlank": false, + "selection": [ + { + "v": { + "v": "245", + "l": "245" + } + } + ], + "selectError": false, + "invert": false, + "name": "Tags", + "omitBlank": false, + "type": "list", + "columnName": "Tags" + }, + { + "omitError": false, + "expression": "value", + "selectBlank": false, + "selection": [ + { + "v": { + "v": "a", + "l": "a" + } + } + ], + "selectError": false, + "invert": false, + "name": "Subfields", + "omitBlank": false, + "type": "list", + "columnName": "Subfields" + }, + { + "omitError": false, + "expression": "value", + "selectBlank": false, + "selection": [ + { + "v": { + "v": "12", + "l": "12" + } + }, + { + "v": { + "v": "13", + "l": "13" + } + }, + { + "v": { + "v": "14", + "l": "14" + } + }, + { + "v": { + "v": "10", + "l": "10" + } + } + ], + "selectError": false, + "invert": false, + "name": "Indicators", + "omitBlank": false, + "type": "list", + "columnName": "Indicators" + } + ] + }, + "columnName": "finc", + "expression": "grel:\"title2\"", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10 + }, + { + "op": "core/text-transform", + "description": "Text transform on cells in column finc using expression grel:\"title4\"", + "engineConfig": { + "mode": "row-based", + "facets": [ + { + "omitError": false, + "expression": "value", + "selectBlank": false, + "selection": [ + { + "v": { + "v": "245", + "l": "245" + } + } + ], + "selectError": false, + "invert": false, + "name": "Tags", + "omitBlank": false, + "type": "list", + "columnName": "Tags" + }, + { + "omitError": false, + "expression": "value", + "selectBlank": false, + "selection": [ + { + "v": { + "v": "b", + "l": "b" + } + } + ], + "selectError": false, + "invert": false, + "name": "Subfields", + "omitBlank": false, + "type": "list", + "columnName": "Subfields" + }, + { + "omitError": false, + "expression": "value", + "selectBlank": false, + "selection": [ + { + "v": { + "v": "14", + "l": "14" + } + }, + { + "v": { + "v": "10", + "l": "10" + } + }, + { + "v": { + "v": "12", + "l": "12" + } + }, + { + "v": { + "v": "13", + "l": "13" + } + } + ], + "selectError": false, + "invert": false, + "name": "Indicators", + "omitBlank": false, + "type": "list", + "columnName": "Indicators" + } + ] + }, + "columnName": "finc", + "expression": "grel:\"title4\"", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10 + }, + { + "op": "core/text-transform", + "description": "Text transform on cells in column Content using expression grel:value + \"NEUEZEILE\"", + "engineConfig": { + "mode": "row-based", + "facets": [ + { + "omitError": false, + "expression": "value", + "selectBlank": false, + "selection": [ + { + "v": { + "v": "LDR", + "l": "LDR" + } + } + ], + "selectError": false, + "invert": false, + "name": "Tags", + "omitBlank": false, + "type": "list", + "columnName": "Tags" + } + ] + }, + "columnName": "Content", + "expression": "grel:value + \"NEUEZEILE\"", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10 + }, + { + "op": "core/multivalued-cell-split", + "description": "Split multi-valued cells in column Content", + "columnName": "Content", + "keyColumnName": "RecordNumber", + "separator": "NEUEZEILE", + "mode": "plain" + }, + { + "op": "core/text-transform", + "description": "Text transform on cells in column finc using expression grel:\"access_facet\"", + "engineConfig": { + "mode": "row-based", + "facets": [ + { + "omitError": false, + "expression": "isBlank(value)", + "selectBlank": false, + "selection": [ + { + "v": { + "v": true, + "l": "true" + } + } + ], + "selectError": false, + "invert": false, + "name": "Tags", + "omitBlank": false, + "type": "list", + "columnName": "Tags" + } + ] + }, + "columnName": "finc", + "expression": "grel:\"access_facet\"", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10 + }, + { + "op": "core/text-transform", + "description": "Text transform on cells in column Content using expression grel:\"Electronic Resources\"", + "engineConfig": { + "mode": "row-based", + "facets": [ + { + "omitError": false, + "expression": "isBlank(value)", + "selectBlank": false, + "selection": [ + { + "v": { + "v": true, + "l": "true" + } + } + ], + "selectError": false, + "invert": false, + "name": "Tags", + "omitBlank": false, + "type": "list", + "columnName": "Tags" + } + ] + }, + "columnName": "Content", + "expression": "grel:\"Electronic Resources\"", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10 + }, + { + "op": "core/column-reorder", + "description": "Reorder columns", + "columnNames": [ + "Content", + "finc" + ] + }, + { + "op": "core/row-removal", + "description": "Remove rows", + "engineConfig": { + "mode": "row-based", + "facets": [ + { + "omitError": false, + "expression": "isBlank(value)", + "selectBlank": false, + "selection": [ + { + "v": { + "v": true, + "l": "true" + } + } + ], + "selectError": false, + "invert": false, + "name": "finc", + "omitBlank": false, + "type": "list", + "columnName": "finc" + } + ] + } + }, + { + "op": "core/blank-down", + "description": "Blank down cells in column finc", + "engineConfig": { + "mode": "row-based", + "facets": [] + }, + "columnName": "finc" + }, + { + "op": "core/multivalued-cell-join", + "description": "Join multi-valued cells in column Content", + "columnName": "Content", + "keyColumnName": "Content", + "separator": "$" + }, + { + "op": "core/key-value-columnize", + "description": "Columnize by key column finc and value column Content with note column ", + "keyColumnName": "finc", + "valueColumnName": "Content", + "noteColumnName": "" + }, + { + "op": "core/column-reorder", + "description": "Reorder columns", + "columnNames": [ + "id", + "access_facet", + "author", + "title1", + "title2", + "title3", + "title4" + ] + }, + { + "op": "core/column-addition", + "description": "Create column title at index 4 based on column title1 using expression grel:forNonBlank(cells[\"title1\"].value,v,v,\"\") + forNonBlank(cells[\"title2\"].value,v,\" \"+v,\"\") + forNonBlank(cells[\"title3\"].value,v,\" \"+v,\"\") + forNonBlank(cells[\"title4\"].value,v,\" \"+v,\"\")", + "engineConfig": { + "mode": "row-based", + "facets": [] + }, + "newColumnName": "title", + "columnInsertIndex": 4, + "baseColumnName": "title1", + "expression": "grel:forNonBlank(cells[\"title1\"].value,v,v,\"\") + forNonBlank(cells[\"title2\"].value,v,\" \"+v,\"\") + forNonBlank(cells[\"title3\"].value,v,\" \"+v,\"\") + forNonBlank(cells[\"title4\"].value,v,\" \"+v,\"\")", + "onError": "set-to-blank" + }, + { + "op": "core/text-transform", + "description": "Text transform on cells in column title using expression grel:value.trim().slice(0,-1)", + "engineConfig": { + "mode": "row-based", + "facets": [] + }, + "columnName": "title", + "expression": "grel:value.trim().slice(0,-1)", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10 + }, + { + "op": "core/column-reorder", + "description": "Reorder columns", + "columnNames": [ + "id", + "access_facet", + "author", + "title" + ] + } +] diff --git a/openrefine/marc.json b/openrefine/marc.json deleted file mode 100644 index 9d9907f..0000000 --- a/openrefine/marc.json +++ /dev/null @@ -1,163 +0,0 @@ -[ - { - "op": "core/column-removal", - "description": "Remove column Column", - "columnName": "Column" - }, - { - "op": "core/column-addition", - "description": "Create column Subfields at index 4 based on column Content using expression grel:forEach(value.split(\"$\"),v,get(v,0)).join(\"$\")", - "engineConfig": { - "mode": "row-based", - "facets": [ - { - "mode": "text", - "caseSensitive": false, - "query": "$", - "name": "Content", - "type": "text", - "columnName": "Content" - } - ] - }, - "newColumnName": "Subfields", - "columnInsertIndex": 4, - "baseColumnName": "Content", - "expression": "grel:forEach(value.split(\"$\"),v,get(v,0)).join(\"$\")", - "onError": "set-to-blank" - }, - { - "op": "core/text-transform", - "description": "Text transform on cells in column Content using expression grel:forEach(value.split(\"$\"),v,slice(v,1)).join(\"$\")", - "engineConfig": { - "mode": "row-based", - "facets": [ - { - "mode": "text", - "caseSensitive": false, - "query": "$", - "name": "Content", - "type": "text", - "columnName": "Content" - } - ] - }, - "columnName": "Content", - "expression": "grel:forEach(value.split(\"$\"),v,slice(v,1)).join(\"$\")", - "onError": "keep-original", - "repeat": false, - "repeatCount": 10 - }, - { - "op": "core/multivalued-cell-split", - "description": "Split multi-valued cells in column Content", - "columnName": "Content", - "keyColumnName": "RecordNumber", - "separator": "$", - "mode": "plain" - }, - { - "op": "core/multivalued-cell-split", - "description": "Split multi-valued cells in column Subfields", - "columnName": "Subfields", - "keyColumnName": "RecordNumber", - "separator": "$", - "mode": "plain" - }, - { - "op": "core/fill-down", - "description": "Fill down cells in column RecordNumber", - "engineConfig": { - "mode": "row-based", - "facets": [ - { - "omitError": false, - "expression": "isBlank(value)", - "selectBlank": false, - "selection": [ - { - "v": { - "v": false, - "l": "false" - } - } - ], - "selectError": false, - "invert": false, - "name": "Subfields", - "omitBlank": false, - "type": "list", - "columnName": "Subfields" - } - ] - }, - "columnName": "RecordNumber" - }, - { - "op": "core/fill-down", - "description": "Fill down cells in column Tags", - "engineConfig": { - "mode": "row-based", - "facets": [ - { - "omitError": false, - "expression": "isBlank(value)", - "selectBlank": false, - "selection": [ - { - "v": { - "v": false, - "l": "false" - } - } - ], - "selectError": false, - "invert": false, - "name": "Subfields", - "omitBlank": false, - "type": "list", - "columnName": "Subfields" - } - ] - }, - "columnName": "Tags" - }, - { - "op": "core/fill-down", - "description": "Fill down cells in column Indicators", - "engineConfig": { - "mode": "row-based", - "facets": [ - { - "omitError": false, - "expression": "isBlank(value)", - "selectBlank": false, - "selection": [ - { - "v": { - "v": false, - "l": "false" - } - } - ], - "selectError": false, - "invert": false, - "name": "Subfields", - "omitBlank": false, - "type": "list", - "columnName": "Subfields" - } - ] - }, - "columnName": "Indicators" - }, - { - "op": "core/blank-down", - "description": "Blank down cells in column RecordNumber", - "engineConfig": { - "mode": "row-based", - "facets": [] - }, - "columnName": "RecordNumber" - } -] diff --git a/openrefine/wiley.xls b/openrefine/wiley.xls deleted file mode 100644 index 4e345ea38b35702f111ef66fdaa2d6ea4d2580ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16896 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 Jh4a6W|3CaSp=|&F diff --git a/weitere-anwendungsfalle/csv-zu-midas-xml-und-midas-xml-zu-excel.md b/weitere-anwendungsfalle/csv-zu-midas-xml-und-midas-xml-zu-excel.md deleted file mode 100644 index e69de29..0000000 diff --git a/weitere-anwendungsfalle/dublin-core-xml-manipulieren.md b/weitere-anwendungsfalle/dublin-core-xml-manipulieren.md deleted file mode 100644 index e69de29..0000000