1
+ # Hint: This is a translated version of the morph transformation in metafacture-runner/src/main/dist/examples/morph/marc21-to-edm/MARC21-EDM.xml
2
+ # Result is the same. The fix transformation could be adjusted to be even more efficient.
1
3
2
4
do once("maps")
3
5
put_map("rights",
@@ -95,9 +97,9 @@ paste("edm:isShownAt","@isShownByUrl","001","@isShownBySuffix", join_char:"")
95
97
do list(path:"650?7|60017|61017|61017|630??|655?7|651?7|648??","var":"SUBJECT")
96
98
do list(path:"SUBJECT.0","var":"SUBJECT_ID")
97
99
if any_match("SUBJECT_ID","^\\(DE-588\\)(.*)$")
98
- copy_field("SUBJECT_ID","skos:Concept.$append.~rdf:about")
100
+ copy_field("SUBJECT.a","skos:Concept.$append.skos:prefLabel$de")
101
+ copy_field("SUBJECT_ID","skos:Concept.$last.~rdf:about")
99
102
replace_all("skos:Concept.$last.~rdf:about","^\\(DE-588\\)(.*)$","http://d-nb.info/gnd/$1")
100
- copy_field("SUBJECT.a","skos:Concept.$last.skos:prefLabel$de")
101
103
end
102
104
end
103
105
end
@@ -136,20 +138,19 @@ unless str_equal("$[sector]","")
136
138
add_field("skos:Concept.$last.skos:notation","$[sector]")
137
139
end
138
140
141
+ paste("@cEventID", "~#/event/", "001", "~-c", join_char:"")
142
+
143
+ paste("@pEventID", "~#/event/", "001", "~-p", join_char:"")
144
+
145
+
139
146
copy_field("@publisherID","edm:Agent.$append.~rdf:about")
140
147
do list(path:"2603 .b","var":"$i")
141
148
unless exists("edm:Agent.$last.skos:prefLabel$de")
142
149
copy_field("$i","edm:Agent.$last.skos:prefLabel$de")
150
+ copy_field("@pEventID","edm:Agent.$last.#edm:wasPresent")
143
151
end
144
152
end
145
153
146
-
147
- paste("@cEventID", "~#/event/", "001", "~-c", join_char:"")
148
-
149
- paste("@pEventID", "~#/event/", "001", "~-p", join_char:"")
150
-
151
- copy_field("@pEventID","edm:Agent.$last.#edm:wasPresent")
152
-
153
154
do list(path:"2603 ","var":"$i")
154
155
do list(path:"$i.a","var":"$a")
155
156
unless exists("@place")
@@ -166,27 +167,22 @@ do list(path:"2603 ","var":"$i")
166
167
end
167
168
replace_all("@place"," \\[?u.a.\\]?.*$","")
168
169
169
- paste("@placeID","~#/place/","001","~_place","@placeCount",join_char:"")
170
-
170
+ if exists("@place")
171
+ paste("@placeID","~#/place/","001","~_place","@placeCount",join_char:"")
172
+ end
171
173
172
174
do list(path:"260[ 3] ","var":"$i")
173
175
do list(path:"$i.c","var":"$c")
174
- unless exists("@timeID")
175
- copy_field("$c","@timespan")
176
- copy_field("$c","@timespanList.$append")
177
- copy_field("@timespanList","@timespanCount")
178
- if is_array("@timespanCount")
179
- count("@timespanCount")
180
- else
181
- add_field("@timespanCount","1")
182
- end
183
- paste("@timeID","~#/timespan/","001","~_timespan","@timespanCount",join_char:"")
184
- end
176
+ copy_field("$c","@timespanList.$append")
185
177
end
186
178
end
187
179
188
-
189
- paste("recordID","@recordIDUrl","001","@recordIDSuffix", join_char:"")
180
+ if exists("@timespanList")
181
+ unless exists("@timespanList.2")
182
+ copy_field("@timespanList.1","@timespan")
183
+ paste("@timeID","~#/timespan/","001","~_timespan1",join_char:"")
184
+ end
185
+ end
190
186
191
187
add_field("@mediatypeID","$[media_type]")
192
188
lookup("@mediatypeID","mediatype")
@@ -198,6 +194,9 @@ lookup("@recordIDUrl","urls")
198
194
copy_field("@isil","@recordIDSuffix")
199
195
lookup("@recordIDSuffix","suffix")
200
196
197
+ paste("@recordID","@recordIDUrl","001","@recordIDSuffix", join_char:"")
198
+
199
+
201
200
do list(path:"1001 |1101 |7001 |7101", "var":"CREATOR")
202
201
do list(path: "CREATOR.0", "var":"CREATORID")
203
202
if any_match("CREATORID", "^\\(DE-588\\)(.*)$")
@@ -231,9 +230,12 @@ copy_field("@placeID","edm:Place.~rdf:about")
231
230
copy_field("@place","edm:Place.skos:prefLabel")
232
231
233
232
234
- copy_field("@timeID","edm:TimeSpan.~rdf:about")
235
- copy_field("260[ 3] .c","edm:TimeSpan.skos:notation")
236
-
233
+ if exists("@timeID")
234
+ copy_field("@timeID","edm:TimeSpan.~rdf:about")
235
+ do list(path:"2603 ","var":"$i")
236
+ copy_field("$i.c","edm:TimeSpan.skos:notation")
237
+ end
238
+ end
237
239
238
240
239
241
@@ -255,7 +257,8 @@ add_field("#dcterms:rights","http://creativecommons.org/publicdomain/zero/1.0/")
255
257
256
258
copy_field("@recordID","edm:ProvidedCHO.~rdf:about")
257
259
258
- copy_field("@pEventID|@cEventID","edm:ProvidedCHO.#edm:wasPresent.$append")
260
+ copy_field("@cEventID","edm:ProvidedCHO.#edm:wasPresent.$append")
261
+ copy_field("@pEventID","edm:ProvidedCHO.#edm:wasPresent.$append")
259
262
260
263
copy_field("@mat","edm:ProvidedCHO.dc:type")
261
264
@@ -273,8 +276,9 @@ copy_field("@lang","edm:ProvidedCHO.dc:language")
273
276
paste("edm:ProvidedCHO.#dcterms:language","~http://id.loc.gov/vocabulary/iso639-2/","@lang",join_char:"")
274
277
275
278
276
-
277
- paste("edm:ProvidedCHO.dcterms:bibliographicCitation","490??.a","~ ; ","490??.v", join_char:"")
279
+ if exists("490??")
280
+ paste("edm:ProvidedCHO.dcterms:bibliographicCitation","490??.a","~ ; ","490??.v", join_char:"")
281
+ end
278
282
279
283
copy_field("1[10]01 .a","edm:ProvidedCHO.dc:creator.$append")
280
284
@@ -290,10 +294,11 @@ do list(path:"830??|800??|810??|811??","var":"$i")
290
294
end
291
295
292
296
do list(path:"650?7|60017|61017|61017|630??|655?7|651?7|648??","var":"$SUBJECT")
297
+ copy_field("$SUBJECT.a","edm:ProvidedCHO.dc:subject.$append")
293
298
do list(path:"$SUBJECT.0","var":"$SUBJECT_ID")
294
299
if any_match("$SUBJECT_ID","^\\(DE-588\\)(.*)$")
295
- copy_field("$SUBJECT.a","edm:ProvidedCHO.dc:subject.$append")
296
300
copy_field("$SUBJECT_ID","edm:ProvidedCHO.#dc:subject.$append")
301
+ replace_all("edm:ProvidedCHO.#dc:subject.$last","^\\(DE-588\\)(.*)$","http://d-nb.info/gnd/$1")
297
302
end
298
303
end
299
304
end
@@ -303,13 +308,22 @@ replace_all("edm:ProvidedCHO.#dcterms:isPartOf.*","^\\(DE-101\\)(.*)$","http://d
303
308
304
309
paste("edm:ProvidedCHO.dc:title","24510.a","24510.b",join_char:" : ")
305
310
306
-
307
- copy_field("260[ 3] .c","edm:ProvidedCHO.dcterms:issued")
311
+ if exists("@timeID")
312
+ copy_field("260[ 3] .c","edm:ProvidedCHO.dcterms:issued")
313
+ end
308
314
309
315
copy_field("250 .a","edm:ProvidedCHO.dc:description.$append")
310
316
copy_field("502??.a","edm:ProvidedCHO.dc:description.$append")
311
317
318
+ do list(path:"245 ?|490 ?|800 ?|810 ?|811 ?|830 ?","var":"$i")
319
+ copy_field("$i.[nv]", "@position")
320
+ end
321
+
322
+ unless exists("@position")
323
+ add_field("@position","-1")
324
+ end
312
325
326
+ paste("edm:ProvidedCHO.ddb:techinfo","~aggregation_entity:false; position:", "@position",join_char:"")
313
327
314
328
unless str_equal("$[dnb_subject]","")
315
329
add_field("edm:ProvidedCHO.#dc:subject", "$[dnb_subject]")
@@ -333,4 +347,6 @@ do list(path:"85640","var":"$i")
333
347
end
334
348
335
349
350
+
351
+
336
352
retain("edm*","dc*","skos*", "aggregation_id", "#*")
0 commit comments