diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..142ec91 --- /dev/null +++ b/.gitignore @@ -0,0 +1,26 @@ +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +# Idea +*.iml +.idea diff --git a/src/main/java/be/ugent/mmlab/rml/logicalsourcehandler/termmap/AbstractTermMapProcessor.java b/src/main/java/be/ugent/mmlab/rml/logicalsourcehandler/termmap/AbstractTermMapProcessor.java index 90c1904..19d916a 100644 --- a/src/main/java/be/ugent/mmlab/rml/logicalsourcehandler/termmap/AbstractTermMapProcessor.java +++ b/src/main/java/be/ugent/mmlab/rml/logicalsourcehandler/termmap/AbstractTermMapProcessor.java @@ -1,23 +1,10 @@ package be.ugent.mmlab.rml.logicalsourcehandler.termmap; import be.ugent.mmlab.rml.model.RDFTerm.TermMap; -import static be.ugent.mmlab.rml.model.RDFTerm.TermMap.TermMapType.CONSTANT_VALUED; -import static be.ugent.mmlab.rml.model.RDFTerm.TermMap.TermMapType.REFERENCE_VALUED; -import static be.ugent.mmlab.rml.model.RDFTerm.TermMap.TermMapType.TEMPLATE_VALUED; import be.ugent.mmlab.rml.model.RDFTerm.TermType; -import static be.ugent.mmlab.rml.model.RDFTerm.TermType.BLANK_NODE; -import static be.ugent.mmlab.rml.model.RDFTerm.TermType.IRI; -import static be.ugent.mmlab.rml.model.RDFTerm.TermType.LITERAL; import be.ugent.mmlab.rml.model.std.StdTemplateMap; import be.ugent.mmlab.rml.model.termMap.ReferenceMap; import be.ugent.mmlab.rml.vocabularies.QLVocabulary.QLTerm; -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import org.openrdf.model.URI; import org.openrdf.model.Value; import org.openrdf.model.impl.BNodeImpl; @@ -26,6 +13,14 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + /** * RML Processor * @@ -49,7 +44,7 @@ public List processTermMap(TermMap map, Object node) { //Get the expression and extract the value ReferenceMap identifier = map.getReferenceMap(); values = extractValueFromNode( - node, identifier.getReference().toString().trim()); + node, identifier.getReference().trim()); for (String value : values) { valueList.add(value.trim().replace("\n", " ")); @@ -107,7 +102,8 @@ public List processTermMap(TermMap map, Object node) { .replaceAll("\\%27", "'") .replaceAll("\\%28", "(") .replaceAll("\\%29", ")") - .replaceAll("\\%7E", "~")); + .replaceAll("\\%7E", "~")) + .replaceAll("\\%3A", ":"); } else { temp = temp.replaceAll("\\{" + expression + "\\}", Matcher.quoteReplacement(replacement)); @@ -116,7 +112,7 @@ public List processTermMap(TermMap map, Object node) { } catch (UnsupportedEncodingException ex) { log.error("UnsupportedEncodingException " + ex); } - values.set(i, temp.toString()); + values.set(i, temp); } } @@ -124,8 +120,7 @@ public List processTermMap(TermMap map, Object node) { //Check if there are any placeholders left in the templates and remove uris that are not List validValues = new ArrayList<>(); for (String uri : values){ - StdTemplateMap templateMap = new StdTemplateMap(uri); - if (templateMap.extractVariablesFromStringTemplate(uri).isEmpty()){ + if (StdTemplateMap.extractVariablesFromStringTemplate(uri).isEmpty()){ validValues.add(uri); } } diff --git a/src/main/java/be/ugent/mmlab/rml/logicalsourcehandler/termmap/concrete/JSONPathTermMapProcessor.java b/src/main/java/be/ugent/mmlab/rml/logicalsourcehandler/termmap/concrete/JSONPathTermMapProcessor.java index 4244611..ffa4816 100644 --- a/src/main/java/be/ugent/mmlab/rml/logicalsourcehandler/termmap/concrete/JSONPathTermMapProcessor.java +++ b/src/main/java/be/ugent/mmlab/rml/logicalsourcehandler/termmap/concrete/JSONPathTermMapProcessor.java @@ -2,13 +2,14 @@ import be.ugent.mmlab.rml.logicalsourcehandler.termmap.AbstractTermMapProcessor; import com.jayway.jsonpath.JsonPath; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; import net.minidev.json.JSONArray; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + /** * RML Processor * @@ -34,7 +35,13 @@ public List extractValueFromNode(Object node, String expression) { JSONArray arr = (JSONArray) val; return Arrays.asList(arr.toArray(new String[0])); } - list.add((String) val.toString()); + + // handle null values + if (val == null) { + val = ""; + } + + list.add(val.toString()); return list; } catch (com.jayway.jsonpath.InvalidPathException ex) { log.debug("InvalidPathException " + ex + "for " + expression); diff --git a/src/main/java/be/ugent/mmlab/rml/logicalsourcehandler/termmap/concrete/XPathTermMapProcessor.java b/src/main/java/be/ugent/mmlab/rml/logicalsourcehandler/termmap/concrete/XPathTermMapProcessor.java index b025580..1a95c64 100644 --- a/src/main/java/be/ugent/mmlab/rml/logicalsourcehandler/termmap/concrete/XPathTermMapProcessor.java +++ b/src/main/java/be/ugent/mmlab/rml/logicalsourcehandler/termmap/concrete/XPathTermMapProcessor.java @@ -2,10 +2,6 @@ import be.ugent.mmlab.rml.logicalsourcehandler.termmap.AbstractTermMapProcessor; import be.ugent.mmlab.rml.xml.XOMBuilder; -import java.io.StringBufferInputStream; -import java.util.ArrayList; -import java.util.List; -import javax.xml.xpath.XPathException; import jlibs.xml.DefaultNamespaceContext; import jlibs.xml.sax.dog.NodeItem; import jlibs.xml.sax.dog.XMLDog; @@ -19,6 +15,12 @@ import org.slf4j.LoggerFactory; import org.xml.sax.InputSource; +import javax.xml.xpath.XPathException; +import java.io.ByteArrayInputStream; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.List; + /** * RML Processor * @@ -56,9 +58,9 @@ private List extractValueFromNode(Node node, String expression) { } catch (SAXPathException ex) { log.error("SAXPathException " + ex); } - StringBufferInputStream input = - new StringBufferInputStream(node.toXML().toString()); - + ByteArrayInputStream input = + new ByteArrayInputStream(node.toXML().getBytes(Charset.forName("UTF-8"))); + InputSource source = new InputSource(input); Event event = dog.createEvent(); event.setXMLBuilder(new XOMBuilder()); @@ -69,7 +71,7 @@ public void onNodeHit( Expression expression, NodeItem nodeItem) { Node node = (Node) nodeItem.xml; //if(nodeItem instanceOf Attribute) - list.add(node.getValue().toString()); + list.add(node.getValue()); } @Override