Skip to content

Commit 0987eb0

Browse files
committed
Drop special treatment of RDF maps in lookup(). (#229)
metafacture/metafacture-fix#229 (comment)
1 parent eaf08c2 commit 0987eb0

File tree

9 files changed

+44
-84
lines changed
  • metafix/src
    • main/java/org/metafacture/metafix
    • test
      • java/org/metafacture/metafix
      • resources/org/metafacture/metafix/integration/lookup/fromJson/toJson
        • lookupRdfObjectToLanguageVariantOfTheSameObject
        • lookupRdfObjectToOtherObjectWithSpecificLanguage
        • lookupRdfObjectToSubject
        • lookupRdfObjectWithSpecificLanguageToSubject
        • lookupRdfPropertyToProperty
        • lookupRdfSubjectToObjectWithSpecificLanguage

9 files changed

+44
-84
lines changed

README.md

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -200,17 +200,6 @@ Options:
200200
- `key_column`: Defines the column to be used for keys. Uses zero index. (Default: `0`)
201201
- `value_column`: Defines the column to be used for values. Uses zero index. (Default: `1`)
202202

203-
##### `put_rdfmap`
204-
205-
Defines an external RDF map for lookup from a file or an HTTP(S) resource.
206-
As the RDF map is reducing RDF triples to a key/value map it is mandatory to set the target.
207-
The targeted RDF property can optional be bound by an RDF language tag.
208-
209-
```perl
210-
put_rdfmap("<rdfResource>", "<rdfMapName>", target: "<rdfProperty>")
211-
put_rdfmap("<rdfResource>", "<rdfMapName>", target: "<rdfProperty>, select: "<rdfLanguageTag>"")
212-
```
213-
214203
##### `put_map`
215204

216205
Defines an internal map for [lookup](#lookup) from key/value pairs.
@@ -633,12 +622,6 @@ The targeted RDF property can optionally be bound by an RDF language tag.
633622
## rdf map (explicit)
634623
put_rdfmap("path/to/file", "rdf-map", "target:<rdfProperty>")
635624
lookup("path.to.field", "rdf-map")
636-
637-
## rdf with mandatory "target" (implicit)
638-
lookup("path.to.field", "path/to/file|URL", target: "<rdfProperty>")
639-
640-
## rdf with mandatory "target" and "select_language" (implicit)
641-
lookup("path.to.field", "path/to/file|URL", target: "<rdfProperty>", select_language: "<rdfLanguageTag>")
642625
```
643626

644627
##### `prepend`

metafix/src/main/java/org/metafacture/metafix/FixMethod.java

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -501,10 +501,15 @@ public void apply(final Metafix metafix, final Record record, final List<String>
501501
map = options;
502502
}
503503
else {
504-
String mapName = params.get(1);
504+
final String mapName = params.get(1);
505505

506506
if (!metafix.getMapNames().contains(mapName)) {
507-
mapName = putMapAndGetMapName(metafix, record, params, options, mapName);
507+
if (mapName.contains(".") || mapName.contains(File.separator)) {
508+
put_filemap.apply(metafix, record, Arrays.asList(mapName), options);
509+
}
510+
else {
511+
// Probably an unknown internal map? Log a warning?
512+
}
508513
}
509514

510515
map = metafix.getMap(mapName);
@@ -536,23 +541,6 @@ public void apply(final Metafix metafix, final Record record, final List<String>
536541
consumer.accept(null);
537542
}
538543
}
539-
540-
private String putMapAndGetMapName(final Metafix metafix, final Record record, final List<String> params, final Map<String, String> options, final String mapName) {
541-
String newMapName = mapName;
542-
if (options.containsKey(RdfMap.TARGET)) {
543-
put_rdfmap.apply(metafix, record, Arrays.asList(params.get(1)), options);
544-
newMapName = params.get(1) + options.get(RdfMap.TARGET) + options.getOrDefault(RdfMap.TARGET_LANGUAGE, "");
545-
}
546-
else {
547-
if (mapName.contains(".") || mapName.contains(File.separator)) {
548-
put_filemap.apply(metafix, record, Arrays.asList(mapName), options);
549-
}
550-
else {
551-
// Probably an unknown internal map? Log a warning?
552-
}
553-
}
554-
return newMapName;
555-
}
556544
},
557545
prepend {
558546
@Override

metafix/src/test/java/org/metafacture/metafix/MetafixLookupTest.java

Lines changed: 25 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -976,7 +976,7 @@ public void shouldPrintUnknownToFileWithoutAppend() throws IOException {
976976
public void shouldLookupInSeparateExternalRdfFileMapWithName() {
977977
assertRdfMap(
978978
"put_rdfmap('" + RDF_MAP + "', 'testMapSkosNotation', target: 'skos:notation')",
979-
"lookup('notation', 'testMapSkosNotation', target: 'skos:notation')"
979+
"lookup('notation', 'testMapSkosNotation')"
980980
);
981981
}
982982

@@ -985,21 +985,16 @@ public void shouldLookupInSeparateExternalRdfFileMapWithDifferentTargets() {
985985
assertRdfMapWithDifferentTargets(
986986
"put_rdfmap('" + RDF_MAP + "', 'testRdfMapSkosNotation', target: 'skos:notation')",
987987
"put_rdfmap('" + RDF_MAP + "', 'testRdfMapCreated', target: 'created', __default: '__default')",
988-
"lookup('notation', 'testRdfMapSkosNotation', target: 'skos:notation')",
989-
"lookup('created', 'testRdfMapCreated', target: 'created')");
990-
}
991-
992-
@Test
993-
public void shouldLookupInExternalRdfWithDifferentTargets() {
994-
assertRdfMapWithDifferentTargets(
995-
"lookup('notation', '" + RDF_MAP + "', target: 'skos:notation')",
996-
"lookup('created', '" + RDF_MAP + "', target: 'created', __default: '__default')");
988+
"lookup('notation', 'testRdfMapSkosNotation')",
989+
"lookup('created', 'testRdfMapCreated')"
990+
);
997991
}
998992

999993
@Test
1000994
public void shouldLookupInExternalRdfUseDefinedDefaultValueIfNotFound() {
1001995
MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList(
1002-
"lookup('created', '" + RDF_MAP + "', target: 'created', __default: '0000-01-01')"
996+
"put_rdfmap('" + RDF_MAP + "', 'rdfmap', target: 'created', __default: '0000-01-01')",
997+
"lookup('created', 'rdfmap')"
1003998
),
1004999
i -> {
10051000
i.startRecord("1");
@@ -1017,7 +1012,8 @@ public void shouldLookupInExternalRdfUseDefinedDefaultValueIfNotFound() {
10171012
@Test
10181013
public void shouldLookupInExternalRdfUseDefaultValueIfNotFound() {
10191014
MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList(
1020-
"lookup('created', '" + RDF_MAP + "', target: 'created', __default: '__default')"
1015+
"put_rdfmap('" + RDF_MAP + "', 'rdfmap', target: 'created', __default: '__default')",
1016+
"lookup('created', 'rdfmap')"
10211017
),
10221018
i -> {
10231019
i.startRecord("1");
@@ -1035,7 +1031,8 @@ public void shouldLookupInExternalRdfUseDefaultValueIfNotFound() {
10351031
@Test
10361032
public void shouldLookupInExternalRdfMapGetObjectOfSubjectWithTargetedPredicate() {
10371033
assertRdfMap(
1038-
"lookup('notation', '" + RDF_MAP + "', target: 'skos:notation')"
1034+
"put_rdfmap('" + RDF_MAP + "', 'rdfmap', target: 'skos:notation')",
1035+
"lookup('notation', 'rdfmap')"
10391036
);
10401037
}
10411038

@@ -1046,28 +1043,7 @@ public void shouldExplicitLookupRdfUrlWithRedirection() {
10461043

10471044
MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList(
10481045
"put_rdfmap('" + mockedRdfUrl + "', 'testMapSkosNotation', target: 'skos:prefLabel')",
1049-
"lookup('prefLabel', 'testMapSkosNotation' , target: 'skos:prefLabel')"
1050-
),
1051-
i -> {
1052-
i.startRecord("1");
1053-
i.literal("prefLabel", "http://purl.org/lobid/rpb#n882022");
1054-
i.endRecord();
1055-
},
1056-
o -> {
1057-
o.get().startRecord("1");
1058-
o.get().literal("prefLabel", "Presserecht");
1059-
o.get().endRecord();
1060-
}
1061-
);
1062-
}
1063-
1064-
@Test
1065-
public void shouldLookupRdfUrlWithRedirection() {
1066-
final String baseUrl = WIRE_MOCK_SERVER.baseUrl();
1067-
final String mockedRdfUrl = String.format(RDF_URL, baseUrl);
1068-
1069-
MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList(
1070-
"lookup('prefLabel', '" + mockedRdfUrl + "', target: 'skos:prefLabel')"
1046+
"lookup('prefLabel', 'testMapSkosNotation')"
10711047
),
10721048
i -> {
10731049
i.startRecord("1");
@@ -1086,7 +1062,8 @@ public void shouldLookupRdfUrlWithRedirection() {
10861062
public void shouldLookupInExternalRdfMapGetObjectOfSubjectWithTargetedPredicateOfSpecificLanguage() {
10871063
MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList(
10881064
"set_array('prefLabel', 'https://w3id.org/kim/hochschulfaechersystematik/n4')",
1089-
"lookup('prefLabel.*', '" + RDF_MAP + "', target: 'skos:prefLabel', select_language: 'de')"
1065+
"put_rdfmap('" + RDF_MAP + "', 'rdfmap', target: 'skos:prefLabel', select_language: 'de')",
1066+
"lookup('prefLabel.*', 'rdfmap')"
10901067
),
10911068
i -> {
10921069
i.startRecord("1");
@@ -1104,7 +1081,8 @@ public void shouldLookupInExternalRdfMapGetObjectOfSubjectWithTargetedPredicateO
11041081
public void shouldLookupInExternalRdfMapGetSubjectWithTargetedPredicateOfSpecificLanguage() {
11051082
MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList(
11061083
"set_array('id', 'Mathematics, Natural Sciences')",
1107-
"lookup('id.*', '" + RDF_MAP + "', target: 'skos:prefLabel', select_language: 'en')"
1084+
"put_rdfmap('" + RDF_MAP + "', 'rdfmap', target: 'skos:prefLabel', select_language: 'en')",
1085+
"lookup('id.*', 'rdfmap')"
11081086
),
11091087
i -> {
11101088
i.startRecord("1");
@@ -1123,7 +1101,8 @@ public void shouldLookupInExternalRdfMapGetSubjectWithTargetedPredicateOfSpecifi
11231101
@Test // Scenario lookupRdfPropertyToProperty
11241102
public void shouldLookupInExternalRdfMapGetPropertyOfSpecificLanguageWithTargetedPredicate() {
11251103
MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList(
1126-
"lookup('a', '" + HCRT_RDF_MAP + "', target: 'skos:prefLabel', select_language: 'en')"
1104+
"put_rdfmap('" + HCRT_RDF_MAP + "', 'rdfmap', target: 'skos:prefLabel', select_language: 'en')",
1105+
"lookup('a', 'rdfmap')"
11271106
),
11281107
i -> {
11291108
i.startRecord("1");
@@ -1141,7 +1120,8 @@ public void shouldLookupInExternalRdfMapGetPropertyOfSpecificLanguageWithTargete
11411120
@Test // Scenario lookupRdfPropertyToSubject
11421121
public void shouldLookupInExternalRdfMapGetSubjectOfPropertyWithTargetedPredicate() {
11431122
MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList(
1144-
"lookup('a', '" + HCRT_RDF_MAP + "', target: 'skos:prefLabel')"
1123+
"put_rdfmap('" + HCRT_RDF_MAP + "', 'rdfmap', target: 'skos:prefLabel')",
1124+
"lookup('a', 'rdfmap')"
11451125
),
11461126
i -> {
11471127
i.startRecord("1");
@@ -1159,7 +1139,8 @@ public void shouldLookupInExternalRdfMapGetSubjectOfPropertyWithTargetedPredicat
11591139
@Test
11601140
public void lookupRdfDefinedPropertyToSubjectNonDefault() {
11611141
MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList(
1162-
"lookup('a', '" + HCRT_RDF_MAP + "', target: 'skos:prefLabel', select_language: 'de')"
1142+
"put_rdfmap('" + HCRT_RDF_MAP + "', 'rdfmap', target: 'skos:prefLabel', select_language: 'de')",
1143+
"lookup('a', 'rdfmap')"
11631144
),
11641145
i -> {
11651146
i.startRecord("1");
@@ -1197,7 +1178,8 @@ public void shouldLookupInExternalRdfMapGetObjectWithTargetedPredicateOfSpecific
11971178
@Test
11981179
public void shouldLookupRdfDefinedPropertyToSubject() {
11991180
MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList(
1200-
"lookup('a', '" + HCRT_RDF_MAP + "', target: 'skos:prefLabel', select_language: 'de', select: 'subject')"
1181+
"put_rdfmap('" + HCRT_RDF_MAP + "', 'rdfmap', target: 'skos:prefLabel', select_language: 'de', select: 'subject')",
1182+
"lookup('a', 'rdfmap')"
12011183
),
12021184
i -> {
12031185
i.startRecord("1");
@@ -1241,7 +1223,8 @@ public void shouldLookupRdfDefinedPropertyToSubject() {
12411223
private void shouldLookupInExternalRdfMapGetObjectWithTargetedPredicateOfSpecificLanguage(final String target) {
12421224
MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList(
12431225
"set_array('prefLabel', 'Mathematics, Natural Sciences')",
1244-
"lookup('prefLabel.*', '" + RDF_MAP + "', target: '" + target + "', select_language: 'de')"
1226+
"put_rdfmap('" + RDF_MAP + "', 'rdfmap', target: '" + target + "', select_language: 'de')",
1227+
"lookup('prefLabel.*', 'rdfmap')"
12451228
),
12461229
i -> {
12471230
i.startRecord("1");
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
lookup("a", "../../../../../maps/hcrt.ttl", target: "http://www.w3.org/2004/02/skos/core#prefLabel", select_language: "en")
1+
put_rdfmap("../../../../../maps/hcrt.ttl", "rdfmap", target: "http://www.w3.org/2004/02/skos/core#prefLabel", select_language: "en")
2+
lookup("a", "rdfmap")
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
lookup_rdf("a", "../../../../../maps/hcrt.ttl", target: "http://www.w3.org/2004/02/skos/core#altLabel", target_language: "de", select: "object", returnPredicate:"http://www.w3.org/2004/02/skos/core#prefLabel", return_language: "de")
1+
put_rdfmap("../../../../../maps/hcrt.ttl", "rdfmap", target: "http://www.w3.org/2004/02/skos/core#altLabel", target_language: "de", select: "object", returnPredicate:"http://www.w3.org/2004/02/skos/core#prefLabel", return_language: "de")
2+
lookup("a", "rdfmap")
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
lookup("a", "../../../../../maps/hcrt.ttl", target: "skos:prefLabel")
1+
put_rdfmap("../../../../../maps/hcrt.ttl", "rdfmap", target: "skos:prefLabel")
2+
lookup("a", "rdfmap")
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
lookup('a', '../../../../../maps/hcrt.ttl', target: 'http://www.w3.org/2004/02/skos/core#prefLabel', select_language: 'de', select: 'subject')
1+
put_rdfmap("../../../../../maps/hcrt.ttl", "rdfmap", target: "http://www.w3.org/2004/02/skos/core#prefLabel", select_language: "de", select: "subject")
2+
lookup("a", "rdfmap")
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
lookup("a", "../../../../../maps/hcrt.ttl", target: "http://www.w3.org/2004/02/skos/core#prefLabel", select_language: 'en')
1+
put_rdfmap("../../../../../maps/hcrt.ttl", "rdfmap", target: "http://www.w3.org/2004/02/skos/core#prefLabel", select_language: 'en')
2+
lookup("a", "rdfmap")
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
# Lookup replaces with default value by default. Should be an option.
2-
lookup("a", "../../../../../maps/hcrt.ttl", target: "http://www.w3.org/2004/02/skos/core#prefLabel", select_language: "de")
2+
put_rdfmap("../../../../../maps/hcrt.ttl", "rdfmap", target: "http://www.w3.org/2004/02/skos/core#prefLabel", select_language: "de")
3+
lookup("a", "rdfmap")

0 commit comments

Comments
 (0)