From c701298059e732b09dd8188709030c10a817c51e Mon Sep 17 00:00:00 2001 From: TobiasNx Date: Tue, 21 Oct 2025 16:41:57 +0200 Subject: [PATCH 1/2] Add session for triples #8 --- ...Bonus_Triples_Counting_Analysing_Combining | 214 ++++++++++++++++++ docs/images/countingTriples.png | Bin 0 -> 20968 bytes docs/images/generatingTriples.png | Bin 0 -> 70358 bytes docs/images/triple.png | Bin 0 -> 27508 bytes 4 files changed, 214 insertions(+) create mode 100644 docs/12_Bonus_Triples_Counting_Analysing_Combining create mode 100644 docs/images/countingTriples.png create mode 100644 docs/images/generatingTriples.png create mode 100644 docs/images/triple.png diff --git a/docs/12_Bonus_Triples_Counting_Analysing_Combining b/docs/12_Bonus_Triples_Counting_Analysing_Combining new file mode 100644 index 0000000..bc47daf --- /dev/null +++ b/docs/12_Bonus_Triples_Counting_Analysing_Combining @@ -0,0 +1,214 @@ +--- +layout: default +title: "Bonus Lesson 12 : Triples, Counting, Analysing and Combining" +nav_order: 12 +parent: Tutorial +--- + + +## Lesson 12 : Using Triples for Counting, Analysing and Combining + +In Metafacture every record is assinged a record id. Using this id Metafacture is able to disassemble metadata records into so called triples. +With triples Metafacture is able to count, analyse and even combine or reassable metadata. In this session we learn about triples and their use cases. + +![Triple](https://metafacture.org/img/triple.png) + +### What is a triple in metafacture? + +A triple describes a combinantion of Subject, Predicate, Object. It is inspired by RDF triples but in context of Metafacture you do not need URI for subject and predicate. Instead the triples contain certain values that are derived from the metadata stream events metafacture processes. + +The subject is usually the id of an record in metafacture. Most decoders and handlers assinge a specific or an upcounted record id to each record. But you can also use the flux command `change-id`to specify the record id that you want to set. + +### Small excursion: Metadata stream evens in metafacture + +If you decode e.g. MARC Data and set the value in 001 as the record id ( when using marc-xml you need to add `| change-id(idliteral="id", keepidliteral="true")`) +Metafacture internally translates this as the following: + +Marc Record +``` + 001 + 948469390 + 245 Ind1=1 Ind2=2 + $$a Title + $$b Remainder of title + $$c Resposibility Statement +``` + +`decode-marc21` translates this to a sequence of metadata events: +-> Start record 948469390 +-> Literal 001: 948469390 +-> Start entity 24510 +-> Literal a: Title +-> Literal b: Remainder of title +-> Literal c: Respondibility Statement +-> End entity +-> End record + +### Generating triples + +When using the flux command `stream to triples` this is translated into triples: +Each entity and each top level literal is turned into a triple: + +```TSV +948469390 001 948469390 +948469390 24510 {a:Title,b:Remainder of title,c: Respondibility Statement} + +``` + +If you have metadata stream events like these: + +![Generating Triples](https://metafacture.org/img/generatingTriples.png) + +-> Start record record-id +-> Literal name: Klaus +-> Start entity died +-> Literal when: 1401 +-> Literal where: HH +-> End entity +-> End record + +With `stream-to-triples` this is translated into: + +```TSV +record-id name Klaus +record-id died {when:1401,where:HH} +``` + +In context of a full metafacture workflow this example would look something like this: + +Input of an formeta record: +``` +record-id{name: Klaus, died {when: 1401, where: HH} } +``` + +FLUX: +``` +inputFile +|open-file +|as-lines +|decode-formeta +|stream-to-triples +|print +; +``` + +If you print it out directly it would look something like this: +``` +record-id:name=Klaus (STRING) +record-id:died={when:1401,where:HH} (ENTITY) +``` + +You can see that the literal is typed by the statement in the braket. [See this example in the playground.](https://metafacture.org/playground/?flux=inputFile%0A%7Copen-file%0A%7Cas-lines%0A%7Cdecode-formeta%0A%7Cstream-to-triples%0A%7Cprint%0A%3B&data=record-id%7Bname%3A+Klaus%2C+died+%7Bwhen%3A+1401%2C+where%3A+HH%7D+%7D) + + +In order to improve the readability or change the output to your liking you can configure the output with the `template` function + +e.g. if you add `|template("Subject:${s} Predicate:${p} Object:${o}")` before print the output would change to: + +```TSV +Subject:record-id Predicate:name Object:Klaus +Subject:record-id Predicate:died Object:{when:1401,where:HH} +``` + +### Listing values to records + +After you stream records into triples you can do a lot of things. The first use case would be listing all contributors of all records and the record id of the publication that they belong to. + +FLUX: +``` +"https://raw.githubusercontent.com/metafacture/metafacture-core/master/metafacture-runner/src/main/dist/examples/read/marc21/10.marc21" +| open-http +| as-lines +| decode-marc21 // sets the value of 001 as record-id +| fix(transformationFile) +| stream-to-triples +| template("${s}\t${o}") +| print +; +``` + +FIX: +``` +do list(path:"100??|700??","var":"$i") + copy_field("$i.a","name.$append") +end +retain("name") +``` + +It outputs the record id and the name of each contributor: + +```TSV +946638705 Kim, Soonsik +94685887X Grunsky, Konrad +947459928 Henze, Hartwig +948469390 Burning, Michael +950561274 Ru§�ppell, Georg +950592463 Pru§�tting, Hanns +950974439 Bigalke, Rainer +953176436 Hanau, Peter +954369300 Hommelhoff, Peter +954377915 Horn, Norbert +``` + +### Counting triples + +After you stream records into triples you can do quiet a lot of things e.g. counting values. + + +![Counting Triples](https://metafacture.org/img/countingTriples.png) + +You are able to count the value of each element of an triple. Usually the object is the most interesting, but also the predicate can be interesting to. + +In the next example we copy the publication places into a new top level field: + +FLUX +``` +"https://raw.githubusercontent.com/metafacture/metafacture-core/master/metafacture-runner/src/main/dist/examples/read/marc21/10.marc21" +| open-http +| as-lines +| decode-marc21 // sets the value of 001 as record-id +| fix(transformationFile) +| stream-to-triples +| count-triples(countBy="object") +| template("${o}\ttimes\t${s}") +| print +; +``` + +FIX: +``` +do list(path:"260??","var":"$i") + copy_field("$i.a","publicationPlace.$append") +end + +retain("publicationPlace") +``` + +This results inot: +``` +1 times Berlin +1 times Bern +1 times Brussels +1 times Frankfurt am Main +1 times Hohenwarsleben +1 times Husum +5 times Ko§�ln +1 times Mu§�nchen +1 times Mu§�nster/Westf. +1 times New York +1 times Newcastle +1 times Oxford +1 times Vienna +1 times Washington, D.C./Baltimore +``` + +You can add the following flux command after count triples in order to sort the results by the number of appeareance: +`| sort-triples(by="object",order="decreasing",numeric="true")` + +## Counting patterns + +TODO + +## Merging records + +TODO: Add this section or add this as additional lesson. \ No newline at end of file diff --git a/docs/images/countingTriples.png b/docs/images/countingTriples.png new file mode 100644 index 0000000000000000000000000000000000000000..99f8f9df27bc475429a9f587afd0c9a0edd87013 GIT binary patch literal 20968 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 l{U06i|AYT_(*O6uuRvEh|{tE8u=M(?{ literal 0 HcmV?d00001 diff --git a/docs/images/generatingTriples.png b/docs/images/generatingTriples.png new file mode 100644 index 0000000000000000000000000000000000000000..6519aeddab1771df152fe1d26636a608c412187c GIT binary patch literal 70358 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

1b&%GgQ_A|jX{AE5YK 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 E04bp@-v9sr literal 0 HcmV?d00001 diff --git a/docs/images/triple.png b/docs/images/triple.png new file mode 100644 index 0000000000000000000000000000000000000000..dae7c63558cb2433efecfa4651ab4c22a4bf5894 GIT binary patch literal 27508 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 literal 0 HcmV?d00001 From f12f2da1c333f56692cae5e610c7fc1e44b9f19e Mon Sep 17 00:00:00 2001 From: TobiasNx Date: Thu, 30 Oct 2025 17:06:16 +0100 Subject: [PATCH 2/2] Add additional lessens #8 --- docs/12-Bonus_Fix_Data_Lookup | 145 ++++++++++++++++++ ...onus_Triples_Counting_Analysing_Combining} | 0 .../14_Bonus_Triples_Wormholes_Combining_Data | 0 docs/15_Bonus_Logging | 0 4 files changed, 145 insertions(+) create mode 100644 docs/12-Bonus_Fix_Data_Lookup rename docs/{12_Bonus_Triples_Counting_Analysing_Combining => 13_Bonus_Triples_Counting_Analysing_Combining} (100%) create mode 100644 docs/14_Bonus_Triples_Wormholes_Combining_Data create mode 100644 docs/15_Bonus_Logging diff --git a/docs/12-Bonus_Fix_Data_Lookup b/docs/12-Bonus_Fix_Data_Lookup new file mode 100644 index 0000000..f4b2ef7 --- /dev/null +++ b/docs/12-Bonus_Fix_Data_Lookup @@ -0,0 +1,145 @@ +--- +layout: default +title: "Bonus Lesson 12 : Data lookup in Fix" +nav_order: 12 +parent: Tutorial +--- + +## Bonus Lesson 12 : Data lookup in Fix + +THIS IS AN EARLY DRAFT. + +When transforming data you often need to map certain values to concepts based on a vocabulary mapping. + +In Fix you can use the function `lookup` to map one term to another. But in oder to map these you need to +define the mapping list that you want to use. + +### Internal lookup + +The simplest form to define a list is to state the map within the lookup function, like this: `lookup("path.to.field", key_1: "value_1", ...)` + +Look at this simple example ([Playground-Link](https://metafacture.org/playground/?flux=inputFile%0A%7Copen-file%0A%7Cas-lines%0A%7Cdecode-json%0A%7Cfix%28transformationFile%29%0A%7Cencode-json%0A%7Cprint%0A%3B%0A&transformation=lookup%28%22colour%22%2C%22r%22%3A%22red%22%2C%22b%22%3A%22blue%22%2C%22y%22%3A%22yellow%22%29%0A&data=%7B+%22colour%22+%3A+%22r%22+%7D%0A%7B+%22colour%22+%3A+%22b%22+%7D%0A%7B+%22colour%22+%3A+%22y%22+%7D)): + +inputFile + +```JSON +{ "colour" : "r" } +{ "colour" : "b" } +{ "colour" : "y" } +``` + +Flux +``` +inputFile +|open-file +|as-lines +|decode-json +|fix(transformationFile) +|encode-json +|print +; +``` + +Fix +``` +lookup("colour","r":"red","b":"blue","y":"yellow") +``` + +Result +```JSON +{"colour":"red"} +{"colour":"blue"} +{"colour":"yellow"} +``` + +It is not always helpful to configure the map within the `lookup` function, because e.g. the list is too long and makes overcrowds the function or you want to use the map multiple times within the Fix transformation. + +Then it is better to cofigure the map by using `put_map`, like in the following scenario ([Playground-Link](https://metafacture.org/playground/?flux=inputFile%0A%7Copen-file%0A%7Cas-records%0A%7Cdecode-json%0A%7Cfix%28transformationFile%29%0A%7Cencode-json%0A%7Cprint%0A%3B%0A&transformation=%23+Define+a+map+within+the+fix+file%0Aput_map%28%22map%22%2C%0A++%22dog%22%3A%22mammal%22%2C%0A++%22cat%22%3A%22mammal%22%2C%0A++%22parrot%22%3A%22bird%22%2C%0A++%22shark%22%3A%22fish%22%2C%0A++%22dragon%22%3A%22fictional+animal%22%2C%0A++%22unicorn%22%3A%22fictional+animal%22%29%0A%0Alookup%28%22animal.type%22%2C+%22map%22%29%0A&data=%7B++%22animal%22%3A+%7B+%22name%22%3A+%22Jake%22%2C+%22type%22%3A+%22dog%22++%7D+%7D%0A%7B++%22animal%22%3A+%7B+%22name%22%3A+%22Blacky%22%2C+%22type%22%3A+%22parrot%22+%7D+%7D%0A)): + +inputFile + +```JSON +{ "animal": { "name": "Jake", "type": "dog" } } +{ "animal": { "name": "Blacky", "type": "parrot" } } +``` + +FLUX + +``` +inputFile +|open-file +|as-records +|decode-json +|fix(transformationFile) +|encode-json +|print +; +``` + +``` +# Define a map within the fix file +put_map("map", + "dog":"mammal", + "cat":"mammal", + "parrot":"bird", + "shark":"fish", + "dragon":"fictional animal", + "unicorn":"fictional animal") + +lookup("animal.type", "map") +``` + +This results in: +``` +{"animal":{"name":"Jake","type":"mammal"}} +{"animal":{"name":"Blacky","type":"bird"}} +``` + +Instead of defining the map within the `lookup` function, here the map is defined with `put_map` and named `map`. +By this name `map` you can then refer to the map in the lookup function. + + + +Look at this more elaborate usecase in the playground that maps codes 002@ from PICA records to literal format information: [Version with unnamed map](https://metafacture.org/playground/?flux=inputFile%0A%7C+open-file%0A%7C+as-lines%0A%7C+decode-pica%0A%7C+fix%28transformationFile%29%0A%7C+encode-json%28prettyPrinting%3D%22true%22%29%0A%7C+print%3B&transformation=copy_field%28%22002@.0%22%2C+%22dcterms%3Aformat%22%29%0Asubstring%28%22dcterms%3Aformat%22%2C+%220%22%2C+%221%22%29%0Alookup%28%22dcterms%3Aformat%22%2C+%22A%22%3A+%22print%22%2C+%22B%22%3A+%22audiovisual%22%2C+%22O%22%3A+%22online%22%29%0Aretain%28%22002@%22%2C+%22dcterms%3Aformat%22%29&data=001@+%1Fa5%1F01-2%1E001A+%1F01100%3A15-10-94%1E001B+%1F09999%3A12-06-06%1Ft16%3A10%3A17.000%1E001D+%1F09999%3A99-99-99%1E001U+%1F0utf8%1E001X+%1F00%1E002@+%1F0Aag%1E003@+%1F0482147350%1E006U+%1F094%2CP05%1E007E+%1F0U+70.16407%1E007I+%1FSo%1F074057548%1E011@+%1Fa1970%1E017A+%1Farh%1E021A+%1FaDie+@Berufsfreiheit+der+Arbeitnehmer+und+ihre+Ausgestaltung+in+vo%CC%88lkerrechtlichen+Vertra%CC%88gen%1FdEine+Grundrechtsbetrachtg%1E028A+%1F9106884905%1F7Tn3%1FAgnd%1F0106884905%1FaProjahn%1FdHorst+D.%1E033A+%1FpWu%CC%88rzburg%1E034D+%1FaXXXVIII%2C+165+S.%1E034I+%1Fa8%1E037C+%1FaWu%CC%88rzburg%2C+Jur.+F.%2C+Diss.+v.+7.+Aug.+1970%1E%0A001@+%1F01%1Fa5%1E001A+%1F01140%3A08-12-99%1E001B+%1F09999%3A05-01-08%1Ft22%3A57%3A29.000%1E001D+%1F09999%3A99-99-99%1E001U+%1F0utf8%1E001X+%1F00%1E002@+%1F0Aa%1E003@+%1F0958090564%1E004A+%1Ffkart.+%3A+DM+9.70%2C+EUR+4.94%2C+sfr+8.00%2C+S+68.00%1E006U+%1F000%2CB05%2C0285%1E007I+%1FSo%1F076088278%1E011@+%1Fa1999%1E017A+%1Farb%1Fasi%1E019@+%1FaXA-AT%1E021A+%1FaZukunft+Bildung%1FhPolitische+Akademie.+%5BHrsg.+von+Gu%CC%88nther+R.+Burkert-Dottolo+und+Bernhard+Moser%5D%1E028C+%1F9130681849%1F7Tp1%1FVpiz%1FAgnd%1F0130681849%1FE1952%1FaBurkert%1FdGu%CC%88nther+R.%1FBHrsg.%1E033A+%1FpWien%1FnPolit.+Akad.%1E034D+%1Fa79+S.%1E034I+%1Fa24+cm%1E036F+%1Fx299+12%1F9551720077%1FgAdn%1F7Tb1%1FAgnd%1F01040469-7%1FaPolitische+Akademie%1FgWien%1FYPA-Information%1FhPolitische+Akademie%2C+WB%1FpWien%1FJPolitische+Akad.%2C+WB%1Fl99%2C2%1E036F/01+%1Fx12%1F9025841467%1FgAdvz%1Fi2142105-5%1FYAktuelle+Fragen+der+Politik%1FhPolitische+Akademie%1FpWien%1FJPolitische+Akad.+der+O%CC%88VP%1FlBd.+2%1E045E+%1Fa22%1Fd18%1Fm370%1E047A+%1FSFE%1Fata%1E%0A001@+%1Fa5%1F01%1E001A+%1F01140%3A19-02-03%1E001B+%1F09999%3A19-06-11%1Ft01%3A20%3A13.000%1E001D+%1F09999%3A26-04-03%1E001U+%1F0utf8%1E001X+%1F00%1E002@+%1F0Aal%1E003@+%1F0361809549%1E004A+%1FfHlw.%1E006U+%1F000%2CL01%1E006U+%1F004%2CP01-s-41%1E006U+%1F004%2CP01-f-21%1E007G+%1FaDNB%1F0361809549%1E007I+%1FSo%1F072658383%1E007M+%1F04413/0275%1E011@+%1Fa1925%1E019@+%1FaXA-DXDE%1FaXA-DE%1E021A+%1FaHundert+Jahre+Buchdrucker-Innung+Hamburg%1FdWesen+u.+Werden+d.+Vereinigungen+Hamburger+Buchdruckereibesitzer+1825-1925+%3B+Gedenkschrift+zur+100.+Wiederkehr+d.+Gru%CC%88ndungstages%2C+verf.+im+Auftr.+d.+Vorstandes+d.+Buchdrucker-Innung+%28Freie+Innung%29+zu+Hamburg%1FhFriedrich+Voeltzer%1E028A+%1F9101386281%1F7Tp1%1FVpiz%1FAgnd%1F0101386281%1FE1895%1FaVo%CC%88ltzer%1FdFriedrich%1E033A+%1FpHamburg%1FnBuchdrucker-Innung+%28Freie+Innung%29%1E033A+%1FpHamburg%1Fn%5BVerlagsbuchh.+Broschek+%26+Co.%5D%1E034D+%1Fa44+S.%1E034I+%1Fa4%1E%0A001@+%1Fa5%1F01-3%1E001A+%1F01240%3A01-08-95%1E001B+%1F09999%3A24-09-10%1Ft17%3A42%3A20.000%1E001D+%1F09999%3A99-99-99%1E001U+%1F0utf8%1E001X+%1F00%1E002@+%1F0Af%1E003@+%1F0945184085%1E004A+%1F03-89007-044-2%1FfGewebe+%3A+DM+198.00%2C+sfr+198.00%2C+S+1386.00%1E006T+%1F095%2CN35%2C0856%1E006U+%1F095%2CA48%2C1186%1E006U+%1F010%2CP01%1E007I+%1FSo%1F061975997%1E011@+%1Fa1995%1E017A+%1Fara%1E021A+%1Fx213%1F9550711899%1FYNeues+Handbuch+der+Musikwissenschaft%1Fhhrsg.+von+Carl+Dahlhaus.+Fortgef.+von+Hermann+Danuser%1FpLaaber%1FJLaaber-Verl.%1FS48%1F03-89007-030-2%1FgAc%1E021B+%1FlBd.+13.%1FaRegister%1Fhzsgest.+von+Hans-Joachim+Hinrichsen%1E028C+%1F9121445453%1F7Tp3%1FVpiz%1FAgnd%1F0121445453%1FE1952%1FaHinrichsen%1FdHans-Joachim%1E034D+%1FaVIII%2C+408+S.%1E045V+%1F9090001001%1E047A+%1FSFE%1Fagb/fm%1E%0A001@+%1F01-2%1Fa5%1E001A+%1F01239%3A18-08-11%1E001B+%1F09999%3A05-09-11%1Ft23%3A31%3A44.000%1E001D+%1F01240%3A30-08-11%1E001U+%1F0utf8%1E001X+%1F00%1E002@+%1F0Af%1E003@+%1F01014417392%1E004A+%1Ffkart.%1E006U+%1F011%2CA37%1E007G+%1FaDNB%1F01014417392%1E007I+%1FSo%1F0752937239%1E010@+%1Fager%1E011@+%1Fa2011%1E017A+%1Fara%1Fasf%1E021A+%1Fxtr%1F91014809657%1F7Tp3%1FVpiz%1FAgnd%1F01034622773%1FE1958%1FaLu%CC%88beck%1FdMonika%1FYPersonalwirtschaft+mit+DATEV%1FhMonika+Lu%CC%88beck+%3B+Helmut+Lu%CC%88beck%1FpBodenheim%1FpWien%1FJHerdt%1FRXA-DE%1FS650%1FgAc%1E021B+%1FlTrainerbd.%1E032@+%1Fg11%1Fa1.+Ausg.%1E034D+%1Fa129+S.%1E034M+%1FaIll.%1E047A+%1FSFE%1Famar%1E047A+%1FSERW%1Fasal%1E047I+%1Fu%24%1Fc04%1FdDNB%1Fe1%1E) + +[Version with `put_map`](https://metafacture.org/playground/?flux=inputFile%0A%7C+open-file%0A%7C+as-lines%0A%7C+decode-pica%0A%7C+fix%28transformationFile%29%0A%7Cencode-json%28prettyPrinting%3D%22true%22%29%0A%7Cprint%0A%3B&transformation=put_map%28%22formats%22%2C+%0A++++%22A%22%3A+%22print%22%2C+%0A++++%22B%22%3A+%22audiovisual%22%2C+%0A++++%22O%22%3A+%22online%22%29%0A%0Acopy_field%28%22002@.0%22%2C+%22dcterms%3Aformat%22%29%0Asubstring%28%22dcterms%3Aformat%22%2C+%220%22%2C+%221%22%29%0Alookup%28%22dcterms%3Aformat%22%2C+%22formats%22%29%0Aretain%28%22002@%22%2C+%22dcterms%3Aformat%22%29&data=001@+%1Fa5%1F01-2%1E001A+%1F01100%3A15-10-94%1E001B+%1F09999%3A12-06-06%1Ft16%3A10%3A17.000%1E001D+%1F09999%3A99-99-99%1E001U+%1F0utf8%1E001X+%1F00%1E002@+%1F0Aag%1E003@+%1F0482147350%1E006U+%1F094%2CP05%1E007E+%1F0U+70.16407%1E007I+%1FSo%1F074057548%1E011@+%1Fa1970%1E017A+%1Farh%1E021A+%1FaDie+@Berufsfreiheit+der+Arbeitnehmer+und+ihre+Ausgestaltung+in+vo%CC%88lkerrechtlichen+Vertra%CC%88gen%1FdEine+Grundrechtsbetrachtg%1E028A+%1F9106884905%1F7Tn3%1FAgnd%1F0106884905%1FaProjahn%1FdHorst+D.%1E033A+%1FpWu%CC%88rzburg%1E034D+%1FaXXXVIII%2C+165+S.%1E034I+%1Fa8%1E037C+%1FaWu%CC%88rzburg%2C+Jur.+F.%2C+Diss.+v.+7.+Aug.+1970%1E%0A001@+%1F01%1Fa5%1E001A+%1F01140%3A08-12-99%1E001B+%1F09999%3A05-01-08%1Ft22%3A57%3A29.000%1E001D+%1F09999%3A99-99-99%1E001U+%1F0utf8%1E001X+%1F00%1E002@+%1F0Aa%1E003@+%1F0958090564%1E004A+%1Ffkart.+%3A+DM+9.70%2C+EUR+4.94%2C+sfr+8.00%2C+S+68.00%1E006U+%1F000%2CB05%2C0285%1E007I+%1FSo%1F076088278%1E011@+%1Fa1999%1E017A+%1Farb%1Fasi%1E019@+%1FaXA-AT%1E021A+%1FaZukunft+Bildung%1FhPolitische+Akademie.+%5BHrsg.+von+Gu%CC%88nther+R.+Burkert-Dottolo+und+Bernhard+Moser%5D%1E028C+%1F9130681849%1F7Tp1%1FVpiz%1FAgnd%1F0130681849%1FE1952%1FaBurkert%1FdGu%CC%88nther+R.%1FBHrsg.%1E033A+%1FpWien%1FnPolit.+Akad.%1E034D+%1Fa79+S.%1E034I+%1Fa24+cm%1E036F+%1Fx299+12%1F9551720077%1FgAdn%1F7Tb1%1FAgnd%1F01040469-7%1FaPolitische+Akademie%1FgWien%1FYPA-Information%1FhPolitische+Akademie%2C+WB%1FpWien%1FJPolitische+Akad.%2C+WB%1Fl99%2C2%1E036F/01+%1Fx12%1F9025841467%1FgAdvz%1Fi2142105-5%1FYAktuelle+Fragen+der+Politik%1FhPolitische+Akademie%1FpWien%1FJPolitische+Akad.+der+O%CC%88VP%1FlBd.+2%1E045E+%1Fa22%1Fd18%1Fm370%1E047A+%1FSFE%1Fata%1E%0A001@+%1Fa5%1F01%1E001A+%1F01140%3A19-02-03%1E001B+%1F09999%3A19-06-11%1Ft01%3A20%3A13.000%1E001D+%1F09999%3A26-04-03%1E001U+%1F0utf8%1E001X+%1F00%1E002@+%1F0Aal%1E003@+%1F0361809549%1E004A+%1FfHlw.%1E006U+%1F000%2CL01%1E006U+%1F004%2CP01-s-41%1E006U+%1F004%2CP01-f-21%1E007G+%1FaDNB%1F0361809549%1E007I+%1FSo%1F072658383%1E007M+%1F04413/0275%1E011@+%1Fa1925%1E019@+%1FaXA-DXDE%1FaXA-DE%1E021A+%1FaHundert+Jahre+Buchdrucker-Innung+Hamburg%1FdWesen+u.+Werden+d.+Vereinigungen+Hamburger+Buchdruckereibesitzer+1825-1925+%3B+Gedenkschrift+zur+100.+Wiederkehr+d.+Gru%CC%88ndungstages%2C+verf.+im+Auftr.+d.+Vorstandes+d.+Buchdrucker-Innung+%28Freie+Innung%29+zu+Hamburg%1FhFriedrich+Voeltzer%1E028A+%1F9101386281%1F7Tp1%1FVpiz%1FAgnd%1F0101386281%1FE1895%1FaVo%CC%88ltzer%1FdFriedrich%1E033A+%1FpHamburg%1FnBuchdrucker-Innung+%28Freie+Innung%29%1E033A+%1FpHamburg%1Fn%5BVerlagsbuchh.+Broschek+) + +### External lookup + +Besides the use of internal maps, Metafacture is able to load external map files to be used. There are currently two types of external lookups that utilize the `put_filemap` function for CSV and TSV files as well as the `put_rdfmap` that can be used for SKOS files. + +### CSV/TSV lookup + +The scenario above with the animals could be recreated like this. You have a tsv file like the following with the name `animals.tsv`: + +```TSV +dog mammal +cat mammal +parrot bird +shark fish +dragon fictional animal +unicorn fictional animal +``` + +You would adjust the fix as follow: + +``` +put_filemap("map","animals.tsv", sep_char: "\t") + +lookup("animal.type", "map") +``` + +[See here a usecase where the bibliographic level is mapped from MARC leader to human readable representation by doing a lookup an a tabulator separated value file (tsv) residing at the web.](https://metafacture.org/playground/?flux=%22http%3A//lobid.org/download/marcXml-8-records.xml%22%0A%7C+open-http%0A%7C+decode-xml%0A%7C+handle-marcxml%0A%7C+fix%28transformationFile%29%0A%7C+encode-json%0A%7C+print%0A%3B&transformation=put_filemap%28%22https%3A//gist.githubusercontent.com/TobiasNx/005d8d7b65324c88b1aa28fa5bea540b/raw/da995f9f3837f51709cae965426271f76aae2bb6/bibliographicLevel.tsv%22%2C+%22bibliographicLevelMap%22%2Csep_char%3A%22\t%22%29%0A%0A%0Acopy_field%28%22leader%22%2C%22bibliographicLevel%22%29%0Asubstring%28%22bibliographicLevel%22%2C%227%22%2C%221%22%29%0Alookup%28%22bibliographicLevel%22%2C%22bibliographicLevelMap%22%29%0Aretain%28%22bibliographicLevel%22%29) + + +TODO: Explain relation of the file to the fix function. Is the path relative to the fix file or the place where you start the command? + + +Hint: `put_filemap` does not interpret the files as true CSV or as TSV but by seperating textstrings via the sep_char, therefore escape sign and quotations are not translated or deleted. + +`put_filemap` is also able to create a map out of multi colum files for that you need configure the `key_column` and the `value column` like this: `put_filemap("map","animals.tsv", sep_char: "\t", key_column:"2",value_column:"0")`. The colums are counted by a zero index therefore in our example you set the third column ("2") for the keys and the first ("0") for the values. + + +### External SKOS lookup + +TODO. \ No newline at end of file diff --git a/docs/12_Bonus_Triples_Counting_Analysing_Combining b/docs/13_Bonus_Triples_Counting_Analysing_Combining similarity index 100% rename from docs/12_Bonus_Triples_Counting_Analysing_Combining rename to docs/13_Bonus_Triples_Counting_Analysing_Combining diff --git a/docs/14_Bonus_Triples_Wormholes_Combining_Data b/docs/14_Bonus_Triples_Wormholes_Combining_Data new file mode 100644 index 0000000..e69de29 diff --git a/docs/15_Bonus_Logging b/docs/15_Bonus_Logging new file mode 100644 index 0000000..e69de29