Skip to content

Commit 2cba849

Browse files
committed
Fix usage without namespace (metafacture-core#415)
1 parent b55bbbf commit 2cba849

File tree

2 files changed

+27
-59
lines changed

2 files changed

+27
-59
lines changed

metafix/src/main/java/org/metafacture/metafix/maps/RdfMap.java

Lines changed: 4 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2013, 2014, 2021 Deutsche Nationalbibliothek et al
2+
* Copyright 2022 hbz
33
*
44
* Licensed under the Apache License, Version 2.0 the "License";
55
* you may not use this file except in compliance with the License.
@@ -33,19 +33,11 @@
3333
import org.slf4j.Logger;
3434
import org.slf4j.LoggerFactory;
3535

36-
import java.io.FileInputStream;
37-
import java.io.FileNotFoundException;
38-
import java.io.IOException;
39-
import java.io.InputStream;
40-
import java.io.UncheckedIOException;
41-
import java.net.MalformedURLException;
42-
import java.net.URL;
4336
import java.util.ArrayList;
4437
import java.util.Collections;
4538
import java.util.HashMap;
4639
import java.util.Map;
4740
import java.util.NoSuchElementException;
48-
import java.util.Optional;
4941
import java.util.Set;
5042

5143
/**
@@ -82,9 +74,9 @@ private void init() {
8274
if (!map.containsKey(Maps.DEFAULT_MAP_KEY)) {
8375
setDefault(Maps.DEFAULT_MAP_KEY);
8476
}
85-
final String[] nsPrefixAndProperty = target.split(":");
86-
if (nsPrefixAndProperty.length == 2) {
87-
target = model.getNsPrefixURI(nsPrefixAndProperty[0]) + nsPrefixAndProperty[1];
77+
if (!target.toLowerCase().startsWith("http")) {
78+
final String[] nsPrefixAndProperty = target.split(":");
79+
target = nsPrefixAndProperty.length == 2 ? model.getNsPrefixURI(nsPrefixAndProperty[0]) + nsPrefixAndProperty[1] : nsPrefixAndProperty[0];
8880
}
8981
isUninitialized = false;
9082
}
@@ -125,39 +117,6 @@ private void loadFile(final String file) {
125117
}
126118
}
127119

128-
private InputStream openStream(final String file) {
129-
return openAsFile(file).orElseGet(() -> openAsResource(file).orElseGet(() -> openAsUrl(file).orElseThrow(() -> new FixExecutionException("File not found: " + file))));
130-
}
131-
132-
private Optional<InputStream> openAsFile(final String file) {
133-
try {
134-
return Optional.of(new FileInputStream(file));
135-
}
136-
catch (final FileNotFoundException e) {
137-
return Optional.empty();
138-
}
139-
}
140-
141-
private Optional<InputStream> openAsResource(final String file) {
142-
return Optional.ofNullable(Thread.currentThread().getContextClassLoader().getResourceAsStream(file));
143-
}
144-
145-
private Optional<InputStream> openAsUrl(final String file) {
146-
final URL url;
147-
try {
148-
url = new URL(file);
149-
}
150-
catch (final MalformedURLException e) {
151-
return Optional.empty();
152-
}
153-
try {
154-
return Optional.of(url.openStream());
155-
}
156-
catch (final IOException e) {
157-
throw new UncheckedIOException(e);
158-
}
159-
}
160-
161120
/**
162121
* Builds a Map dynamically by querying an RDF model based on a key and a targeted Property
163122
* (to be set in {@link RdfMap#setTarget(String)}) and an optional language tag (to be set in

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

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1033,21 +1033,30 @@ public void shouldLookupInExternalRdfMapGetSubjectWithTargetedPredicateOfSpecifi
10331033
}
10341034

10351035
@Test //Scenario 3:
1036-
public void shouldLookupInExternalRdfMapGetObjectWithTargetedPredicateOfSpecificLanguage() {
1036+
public void shouldLookupInExternalRdfMapGetObjectWithTargetedPredicateOfSpecificLanguageUsingNamespace() {
1037+
shouldLookupInExternalRdfMapGetObjectWithTargetedPredicateOfSpecificLanguage("skos:prefLabel");
1038+
}
1039+
1040+
@Test //Scenario 3 without namespace :
1041+
public void shouldLookupInExternalRdfMapGetObjectWithTargetedPredicateOfSpecificLanguageWithoutNamespace() {
1042+
shouldLookupInExternalRdfMapGetObjectWithTargetedPredicateOfSpecificLanguage("http://www.w3.org/2004/02/skos/core#prefLabel");
1043+
}
1044+
1045+
private void shouldLookupInExternalRdfMapGetObjectWithTargetedPredicateOfSpecificLanguage(final String target) {
10371046
MetafixTestHelpers.assertFix(streamReceiver,
1038-
Arrays.asList("set_array('prefLabel', 'Mathematics, Natural Sciences')",
1039-
"lookup_rdf('prefLabel.*'," + " '" + RDF_MAP + "', target:\"skos:prefLabel\", " +
1040-
"target_language:\"de\" )"
1041-
),
1042-
i -> {
1043-
i.startRecord("1");
1044-
i.endRecord();
1045-
},
1046-
o -> {
1047-
o.get().startRecord("1");
1048-
o.get().literal("prefLabel", "Mathematik, Naturwissenschaften");
1049-
o.get().endRecord();
1050-
}
1047+
Arrays.asList("set_array('prefLabel', 'Mathematics, Natural Sciences')",
1048+
"lookup_rdf('prefLabel.*'," + " '" + RDF_MAP + "', target:\"" + target + "\", " +
1049+
"target_language:\"de\" )"
1050+
),
1051+
i -> {
1052+
i.startRecord("1");
1053+
i.endRecord();
1054+
},
1055+
o -> {
1056+
o.get().startRecord("1");
1057+
o.get().literal("prefLabel", "Mathematik, Naturwissenschaften");
1058+
o.get().endRecord();
1059+
}
10511060
);
10521061
}
10531062

0 commit comments

Comments
 (0)