56
56
* @see org.metafacture.metamorph.maps.FileMap
57
57
*/
58
58
public final class RdfMap extends AbstractReadOnlyMap <String , String > {
59
- private static String targetLanguage = "" ;
60
- private static String target ;
61
- private static final Logger LOG = LoggerFactory .getLogger (RdfMap .class );
59
+ public static final String TARGET = "target" ;
60
+ public static final String TARGET_LANGUAGE = "target_language" ;
62
61
private static final int MAX_REDIRECTIONS = 10 ;
63
62
private static final int MIN_HTTP_STATUS_CODE = 299 ;
64
63
private static final int MAX_HTTP_STATUS_CODE = 400 ;
65
-
64
+ private static final Logger LOG = LoggerFactory . getLogger ( RdfMap . class );
66
65
private Model model ;
67
66
private boolean isUninitialized = true ;
68
67
private final ArrayList <String > filenames = new ArrayList <>();
69
68
private final Map <String , String > map = new HashMap <>();
69
+ private String targetLanguage = "" ;
70
+ private String target ;
70
71
71
72
/**
72
73
* Creates an instance of {@link RdfMap}.
73
74
*/
74
75
public RdfMap () {
75
76
targetLanguage = "" ;
77
+ setDefault (Maps .DEFAULT_MAP_KEY );
78
+
76
79
}
77
80
78
81
private void init () {
79
82
loadFiles ();
80
- if (!map .containsKey (Maps .DEFAULT_MAP_KEY )) {
81
- setDefault (Maps .DEFAULT_MAP_KEY );
82
- }
83
83
if (!target .toLowerCase ().startsWith ("http" )) {
84
84
final String [] nsPrefixAndProperty = target .split (":" );
85
85
target = nsPrefixAndProperty .length == 2 ? model .getNsPrefixURI (nsPrefixAndProperty [0 ]) + nsPrefixAndProperty [1 ] : nsPrefixAndProperty [0 ];
@@ -101,7 +101,7 @@ public void setFiles(final String files) {
101
101
*
102
102
* @param file the file
103
103
*/
104
- public void setFile (final String file ) {
104
+ public void setResource (final String file ) {
105
105
Collections .addAll (filenames , file );
106
106
}
107
107
@@ -147,20 +147,20 @@ private void loadFile(final String file) {
147
147
*/
148
148
@ Override
149
149
public String get (final Object key ) {
150
- if (isUninitialized ) {
151
- init ();
152
- }
153
150
String ret ;
154
151
if (map .containsKey (key .toString ())) {
155
152
ret = map .get (key .toString ());
156
153
}
157
154
else {
155
+ if (isUninitialized ) {
156
+ init ();
157
+ }
158
158
final Resource resource = ResourceFactory .createResource (key .toString ());
159
159
final Property targetProperty = ResourceFactory .createProperty (target );
160
160
try {
161
161
//first try to get LITERAL using SUBJECT and PROPERTY
162
- if (!RdfMap . targetLanguage .isEmpty ()) {
163
- ret = model .getRequiredProperty (resource , targetProperty , RdfMap . targetLanguage ).getString ();
162
+ if (!targetLanguage .isEmpty ()) {
163
+ ret = model .getRequiredProperty (resource , targetProperty , targetLanguage ).getString ();
164
164
}
165
165
else {
166
166
ret = model .getRequiredProperty (resource , targetProperty ).getString ();
@@ -174,7 +174,7 @@ public String get(final Object key) {
174
174
ret = getLiteralOfPredicateUsingOtherPredicate (key , targetProperty );
175
175
}
176
176
else {
177
- LOG .info ("Could not lookup:'" + key + "@" + (RdfMap . targetLanguage .isEmpty () ? RdfMap . targetLanguage : "" ) + " for " + target + "'. Going with default value." );
177
+ LOG .info ("Could not lookup:'" + key + (targetLanguage .isEmpty () ? "@" + targetLanguage : "" ) + " for " + target + "'. Going with default value." );
178
178
}
179
179
}
180
180
map .put (key .toString (), ret );
@@ -194,7 +194,7 @@ private String getLiteralOfPredicateUsingOtherPredicate(final Object key, final
194
194
final StmtIterator iterProp = resource .listProperties (targetProperty );
195
195
while (iterProp .hasNext ()) {
196
196
stmt = iterProp .nextStatement ();
197
- if (stmt .getLanguage ().equals (RdfMap . targetLanguage ) && !stmt .getString ().equals (key )) {
197
+ if (stmt .getLanguage ().equals (targetLanguage ) && !stmt .getString ().equals (key )) {
198
198
ret = stmt .getString ();
199
199
}
200
200
}
@@ -210,8 +210,8 @@ private String getSubjectUsingPropertyAndLiteral(final Object key, final Propert
210
210
while (iter .hasNext ()) {
211
211
resource = iter .nextResource ();
212
212
if (resource .getProperty (targetProperty ).getString ().equals (key .toString ())) {
213
- if (!RdfMap .targetLanguage .isEmpty ()) {
214
- if (resource .getProperty (targetProperty ).getLanguage ().equals (RdfMap . targetLanguage )) {
213
+ if (!this .targetLanguage .isEmpty ()) {
214
+ if (resource .getProperty (targetProperty ).getLanguage ().equals (targetLanguage )) {
215
215
ret = resource .getURI ();
216
216
}
217
217
}
@@ -223,6 +223,16 @@ private String getSubjectUsingPropertyAndLiteral(final Object key, final Propert
223
223
return ret ;
224
224
}
225
225
226
+ /**
227
+ * Gets the language of the target Property which is queried in the RDF. Valid values are defined by BCP47.
228
+ * <br>
229
+ *
230
+ * @return the targeted language
231
+ */
232
+ public String getTargetLanguage () {
233
+ return targetLanguage ;
234
+ }
235
+
226
236
/**
227
237
* Sets the language of the target Property which is queried in the RDF. Valid values are defined by BCP47.
228
238
* <br>
@@ -231,7 +241,17 @@ private String getSubjectUsingPropertyAndLiteral(final Object key, final Propert
231
241
* @param targetLanguage the language of the target Property to be queried
232
242
*/
233
243
public void setTargetLanguage (final String targetLanguage ) {
234
- RdfMap .targetLanguage = targetLanguage ;
244
+ this .targetLanguage = targetLanguage ;
245
+ }
246
+
247
+ /**
248
+ * Gets the target Property which is queried in the RDF. Namespaces are allowed.
249
+ * <br>
250
+ *
251
+ * @return the target Property to be queried
252
+ */
253
+ public String getTarget () {
254
+ return target ;
235
255
}
236
256
237
257
/**
@@ -242,7 +262,7 @@ public void setTargetLanguage(final String targetLanguage) {
242
262
* @param target the Property to be queried
243
263
*/
244
264
public void setTarget (final String target ) {
245
- RdfMap .target = target ;
265
+ this .target = target ;
246
266
}
247
267
248
268
/**
0 commit comments