You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2018/02/27 23:10:35 UTC
[15/24] jena git commit: JENA-1494: ARP property setting from RIOT.
JENA-1494: ARP property setting from RIOT.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/9237d24a
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/9237d24a
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/9237d24a
Branch: refs/heads/master
Commit: 9237d24a99617c219ce9d4a4ab085621be3784d4
Parents: 6550960
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Feb 24 08:25:02 2018 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Feb 24 08:25:02 2018 +0000
----------------------------------------------------------------------
.../org/apache/jena/riot/RDFWriterBuilder.java | 33 ++++++++++-
.../main/java/org/apache/jena/riot/SysRIOT.java | 15 +++--
.../apache/jena/riot/lang/ReaderRIOTRDFXML.java | 60 ++++++++++++++++++--
.../apache/jena/rdfxml/xmlinput/JenaReader.java | 3 +-
4 files changed, 98 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/9237d24a/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterBuilder.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterBuilder.java b/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterBuilder.java
index 336e629..ab7aea4 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterBuilder.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterBuilder.java
@@ -21,6 +21,8 @@ package org.apache.jena.riot;
import java.io.OutputStream;
import org.apache.jena.graph.Graph ;
+import org.apache.jena.query.Dataset;
+import org.apache.jena.rdf.model.Model;
import org.apache.jena.sparql.core.DatasetGraph ;
import org.apache.jena.sparql.util.Context;
@@ -40,7 +42,7 @@ public class RDFWriterBuilder {
/** Set the source of writing to the graph argument.
* <p>
- * Any prrvious source setting is cleared.
+ * Any previous source setting is cleared.
* @param graph A {@link Graph}.
* @return this
*/
@@ -50,9 +52,22 @@ public class RDFWriterBuilder {
return this;
}
+ /** Set the source of writing to the graph argument.
+ * <p>
+ * Any previous source setting is cleared.
+ * <p>
+ * Equivalent to {@code source(model.getGraph()(s)}
+ *
+ * @param model A {@link Model}.
+ * @return this
+ */
+ public RDFWriterBuilder source(Model model) {
+ return source(model.getGraph());
+ }
+
/** Set the source of writing to the {@code DatasetGraph} argument.
* <p>
- * Any prrvious source setting is cleared.
+ * Any previous source setting is cleared.
* @param dataset A {@link DatasetGraph}.
* @return this
*/
@@ -62,6 +77,20 @@ public class RDFWriterBuilder {
return this;
}
+ /** Set the source of writing to the {@code DatasetGraph} argument.
+ * <p>
+ * Any previous source setting is cleared.
+ * <p>
+ * Equivalent to {@code source(dataset.asDatasetGraph())}
+ *
+ * @param dataset A {@link DatasetGraph}.
+ * @return this
+ */
+ public RDFWriterBuilder source(Dataset dataset) {
+ return source(dataset.asDatasetGraph());
+ }
+
+
// // Not implemented
// public RDFWriterBuilder labels(NodeToLabel nodeToLabel) { return this; }
//
http://git-wip-us.apache.org/repos/asf/jena/blob/9237d24a/jena-arq/src/main/java/org/apache/jena/riot/SysRIOT.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/SysRIOT.java b/jena-arq/src/main/java/org/apache/jena/riot/SysRIOT.java
index c46228e..49611d6 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/SysRIOT.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/SysRIOT.java
@@ -20,6 +20,7 @@ package org.apache.jena.riot;
import org.apache.jena.atlas.lib.IRILib ;
import org.apache.jena.riot.system.IRIResolver ;
+import org.apache.jena.sparql.util.Context;
import org.apache.jena.sparql.util.Symbol ;
import org.apache.jena.util.FileUtils ;
import org.slf4j.Logger ;
@@ -50,14 +51,20 @@ public class SysRIOT
/**
* Context key for old style RDFWriter properties. The value of this in a
* {@link Context} must be a {@code Map<String, Object>}. The entries of the
- * map are used to set writer properties before the Jena legalacy
+ * map are used to set writer properties before the Jena legacy
* {@link RDFWriter} is called. Only has any effect on RDF/XML and
* RDF/XML-ABBREV.
*/
-
- /** Context key for old style RDFWriter properties */
public static final Symbol sysRdfWriterProperties = Symbol.create(riotBase+"rdfWriter_properties") ;
-
+
+ /**
+ * Context key for old style RDFReader properties. The value of this in a
+ * {@link Context} must be a {@code Map<String, Object>}. The entries of the
+ * map are used to set reader properties before the Jena legalacy
+ * {@link RDFWriter} is called. Only has any effect on RDF/XML,
+ */
+ public static final Symbol sysRdfReaderProperties = Symbol.create(riotBase+"rdfReader_properties") ;
+
/** @deprecated Use {@link #sysRdfWriterProperties} */
@Deprecated
public static final Symbol rdfWriterProperties = sysRdfWriterProperties ;
http://git-wip-us.apache.org/repos/asf/jena/blob/9237d24a/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderRIOTRDFXML.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderRIOTRDFXML.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderRIOTRDFXML.java
index 4f151ed..3c18978 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderRIOTRDFXML.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderRIOTRDFXML.java
@@ -21,9 +21,11 @@ package org.apache.jena.riot.lang;
import java.io.IOException ;
import java.io.InputStream ;
import java.io.Reader ;
+import java.util.Map;
import org.apache.jena.JenaRuntime;
import org.apache.jena.atlas.lib.Pair ;
+import org.apache.jena.atlas.logging.Log;
import org.apache.jena.atlas.web.ContentType;
import org.apache.jena.datatypes.RDFDatatype ;
import org.apache.jena.datatypes.TypeMapper ;
@@ -34,6 +36,7 @@ import org.apache.jena.rdf.model.RDFErrorHandler ;
import org.apache.jena.rdfxml.xmlinput.* ;
import org.apache.jena.rdfxml.xmlinput.impl.ARPSaxErrorHandler ;
import org.apache.jena.riot.*;
+import org.apache.jena.riot.adapters.AdapterRDFWriter;
import org.apache.jena.riot.checker.CheckerLiterals ;
import org.apache.jena.riot.system.*;
import org.apache.jena.sparql.util.Context;
@@ -44,7 +47,7 @@ import org.xml.sax.SAXParseException ;
*
* @see <a href="http://www.w3.org/TR/rdf-syntax-grammar/">http://www.w3.org/TR/rdf-syntax-grammar/</a>
*/
-public class ReaderRIOTRDFXML implements ReaderRIOT
+public class ReaderRIOTRDFXML implements ReaderRIOT
{
public static class Factory implements ReaderRIOTFactory {
@Override
@@ -63,7 +66,9 @@ public class ReaderRIOTRDFXML implements ReaderRIOT
private String xmlBase ;
private String filename ;
private StreamRDF sink ;
- private ErrorHandler errorHandler;
+ private ErrorHandler errorHandler;
+
+ private Context context;
public ReaderRIOTRDFXML(ErrorHandler errorHandler) {
this.errorHandler = errorHandler;
@@ -75,6 +80,7 @@ public class ReaderRIOTRDFXML implements ReaderRIOT
this.xmlBase = baseURI_RDFXML(baseURI) ;
this.filename = baseURI ;
this.sink = output ;
+ this.context = context;
parse();
}
@@ -84,6 +90,7 @@ public class ReaderRIOTRDFXML implements ReaderRIOT
this.xmlBase = baseURI_RDFXML(baseURI) ;
this.filename = baseURI ;
this.sink = output ;
+ this.context = context;
parse();
}
@@ -107,6 +114,37 @@ public class ReaderRIOTRDFXML implements ReaderRIOT
// It's a pragmatic compromise.
private static boolean errorForSpaceInURI = true;
+ // Extracted from org.apache.jena.rdfxml.xmlinput.JenaReader
+ private void oneProperty(ARPOptions options, String pName, Object value) {
+ if (! pName.startsWith("ERR_") && ! pName.startsWith("IGN_") && ! pName.startsWith("WARN_"))
+ return ;
+ int cond = ParseException.errorCode(pName);
+ if (cond == -1)
+ throw new RiotException("No such ARP property: '"+pName+"'");
+ int val;
+ if (value instanceof String) {
+ if (!((String) value).startsWith("EM_"))
+ throw new RiotException("Value for ARP property does not start EM_: '"+pName+"' = '"+value+"'" );
+ val = ParseException.errorCode((String) value);
+ if (val == -1 )
+ throw new RiotException("Illegal value for ARP property: '"+pName+"' = '"+value+"'" );
+ } else if (value instanceof Integer) {
+ val = ((Integer) value).intValue();
+ switch (val) {
+ case ARPErrorNumbers.EM_IGNORE:
+ case ARPErrorNumbers.EM_WARNING:
+ case ARPErrorNumbers.EM_ERROR:
+ case ARPErrorNumbers.EM_FATAL:
+ break;
+ default:
+ throw new RiotException("Illegal value for ARP property: '"+pName+"' = '"+value+"'" );
+ }
+ } else {
+ throw new RiotException("Property \"" + pName + "\" cannot have value: " + value.toString());
+ }
+ options.setErrorMode(cond, val);
+ }
+
public void parse() {
// Hacked out of ARP because of all the "private" methods
// JenaReader has reset the options since new ARP() was called.
@@ -116,17 +154,29 @@ public class ReaderRIOTRDFXML implements ReaderRIOT
arp.getHandlers().setErrorHandler(rslt) ;
arp.getHandlers().setNamespaceHandler(rslt) ;
+ // ARPOptions.
+ ARPOptions arpOptions = arp.getOptions() ;
if ( RiotUniformCompatibility ) {
- ARPOptions options = arp.getOptions() ;
// Convert some warnings to errors for compatible behaviour for all parsers.
for ( int code : additionalErrors )
- options.setErrorMode(code, ARPErrorNumbers.EM_ERROR) ;
- arp.setOptionsWith(options) ;
+ arpOptions.setErrorMode(code, ARPErrorNumbers.EM_ERROR) ;
}
if ( JenaRuntime.isRDF11 )
arp.getOptions().setIRIFactory(IRIResolver.iriFactory());
+ if ( context != null ) {
+ try {
+ @SuppressWarnings("unchecked")
+ Map<String, Object> p = (Map<String, Object>)(context.get(SysRIOT.sysRdfReaderProperties)) ;
+ if ( p != null )
+ p.forEach((k,v) -> oneProperty(arpOptions, k, v)) ;
+ } catch (Throwable ex) {
+ Log.warn(AdapterRDFWriter.class, "Problem setting properties", ex);
+ }
+ }
+ arp.setOptionsWith(arpOptions) ;
+
try {
if ( reader != null )
arp.load(reader, xmlBase) ;
http://git-wip-us.apache.org/repos/asf/jena/blob/9237d24a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput/JenaReader.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput/JenaReader.java b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput/JenaReader.java
index 3f1c6f0..1c5c1b8 100644
--- a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput/JenaReader.java
+++ b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput/JenaReader.java
@@ -498,8 +498,7 @@ public class JenaReader implements RDFReader, ARPErrorNumbers {
return old;
}
- if (str.startsWith("ERR_") || str.startsWith("IGN_")
- || str.startsWith("WARN_")) {
+ if (str.startsWith("ERR_") || str.startsWith("IGN_") || str.startsWith("WARN_")) {
int cond = ParseException.errorCode(str);
if (cond == -1) {
// error, see end of function.