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 2016/09/10 21:08:43 UTC
[2/2] jena git commit: Add SSE.str() operations for convenient string
output.
Add SSE.str() operations for convenient string output.
Clean uses of SSE.
Other clean-ups.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/350082c3
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/350082c3
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/350082c3
Branch: refs/heads/master
Commit: 350082c3e9d00073e72984ad4e9190b96493a492
Parents: 92dfa11
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Sep 10 21:42:17 2016 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Sep 10 22:07:53 2016 +0100
----------------------------------------------------------------------
.../apache/jena/sparql/core/BasicPattern.java | 120 ++++++-----
.../apache/jena/sparql/core/QuadPattern.java | 5 +-
.../org/apache/jena/sparql/mgt/Explain.java | 20 +-
.../java/org/apache/jena/sparql/sse/SSE.java | 182 ++++++++++++++---
.../jena/sparql/util/NodeFactoryExtra.java | 204 +++++++++----------
.../jena/sparql/syntax/TestSSE_Forms.java | 19 +-
jena-cmds/src/main/java/tdb/tdbreorder.java | 54 ++---
.../fuseki/servlets/SPARQL_UberServlet.java | 12 +-
8 files changed, 373 insertions(+), 243 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/350082c3/jena-arq/src/main/java/org/apache/jena/sparql/core/BasicPattern.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/BasicPattern.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/BasicPattern.java
index 89cbd9b..6196e75 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/BasicPattern.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/BasicPattern.java
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package org.apache.jena.sparql.core;
+package org.apache.jena.sparql.core ;
import java.util.ArrayList ;
import java.util.Iterator ;
@@ -30,81 +30,105 @@ import org.apache.jena.sparql.sse.writers.WriterNode ;
import org.apache.jena.sparql.util.Iso ;
import org.apache.jena.sparql.util.NodeIsomorphismMap ;
-/** A class whose purpose is to give a name to a collection of triples.
- * Reduces the use of bland "List" in APIs (Java 1.4)
- */
+/**
+ * A class whose purpose is to give a name to a collection of triples. Reduces the use of
+ * bland "List" in APIs (Java 1.4)
+ */
-public class BasicPattern implements Iterable<Triple>
-{
+public class BasicPattern implements Iterable<Triple> {
private List<Triple> triples ;
- public BasicPattern() { this(new ArrayList<Triple>()) ; }
- public BasicPattern(BasicPattern other)
- {
+ public BasicPattern() {
+ this(new ArrayList<Triple>()) ;
+ }
+
+ public BasicPattern(BasicPattern other) {
this() ;
// Copy.
triples.addAll(other.triples) ;
}
- private BasicPattern(List<Triple> triples) { this.triples = triples ; }
-
- /** Wrap a list of triples up as a BasicPattern. Chnaging the list, changes the BasicPattern */
- public static BasicPattern wrap(List<Triple> triples)
- {
+
+ private BasicPattern(List<Triple> triples) {
+ this.triples = triples ;
+ }
+
+ /**
+ * Wrap a list of triples up as a BasicPattern. Chnaging the list, changes the
+ * BasicPattern
+ */
+ public static BasicPattern wrap(List<Triple> triples) {
return new BasicPattern(triples) ;
}
-
-
- public void add(Triple t) { triples.add(t) ; }
- public void addAll(BasicPattern other) { triples.addAll(other.triples) ; }
- public void add(int i, Triple t) { triples.add(i, t) ; }
-
- public Triple get(int i) { return triples.get(i) ; }
+
+ public void add(Triple t) {
+ triples.add(t) ;
+ }
+
+ public void addAll(BasicPattern other) {
+ triples.addAll(other.triples) ;
+ }
+
+ public void add(int i, Triple t) {
+ triples.add(i, t) ;
+ }
+
+ public Triple get(int i) {
+ return triples.get(i) ;
+ }
+
@Override
- public Iterator<Triple> iterator() { return triples.listIterator() ; }
- public int size() { return triples.size() ; }
- public boolean isEmpty() { return triples.isEmpty() ; }
-
- public List<Triple> getList() { return triples ; }
+ public Iterator<Triple> iterator() {
+ return triples.listIterator() ;
+ }
+
+ public int size() {
+ return triples.size() ;
+ }
+
+ public boolean isEmpty() {
+ return triples.isEmpty() ;
+ }
+
+ public List<Triple> getList() {
+ return triples ;
+ }
@Override
- public int hashCode() { return triples.hashCode() ; }
+ public int hashCode() {
+ return triples.hashCode() ;
+ }
@Override
- public boolean equals(Object other)
- {
- if ( this == other ) return true ;
- if ( ! ( other instanceof BasicPattern) )
+ public boolean equals(Object other) {
+ if ( this == other )
+ return true ;
+ if ( !(other instanceof BasicPattern) )
return false ;
BasicPattern bp = (BasicPattern)other ;
return triples.equals(bp.triples) ;
}
-
- public boolean equiv(BasicPattern other, NodeIsomorphismMap isoMap)
- {
+
+ public boolean equiv(BasicPattern other, NodeIsomorphismMap isoMap) {
if ( this.triples.size() != other.triples.size() )
return false ;
-
- for ( int i = 0 ; i < this.triples.size() ; i++ )
- {
+
+ for ( int i = 0 ; i < this.triples.size() ; i++ ) {
Triple t1 = get(i) ;
Triple t2 = other.get(i) ;
-
- if ( ! Iso.tripleIso(t1, t2, isoMap) )
+
+ if ( !Iso.tripleIso(t1, t2, isoMap) )
return false ;
}
return true ;
}
-
+
@Override
- public String toString()
- {
+ public String toString() {
IndentedLineBuffer out = new IndentedLineBuffer() ;
-
- SerializationContext sCxt = SSE.sCxt(SSE.defaultPrefixMapWrite) ;
-
+ SerializationContext sCxt = SSE.sCxt(SSE.getPrefixMapString()) ;
+
boolean first = true ;
- for ( Triple t : triples )
- {
+ for ( Triple t : triples ) {
if ( !first )
out.print("\n") ;
else
@@ -115,7 +139,7 @@ public class BasicPattern implements Iterable<Triple>
WriterNode.outputPlain(out, t, sCxt) ;
out.print(")") ;
}
- out.flush();
+ out.flush() ;
return out.toString() ;
}
}
http://git-wip-us.apache.org/repos/asf/jena/blob/350082c3/jena-arq/src/main/java/org/apache/jena/sparql/core/QuadPattern.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/QuadPattern.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/QuadPattern.java
index 487ecca..b1f5bf1 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/QuadPattern.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/QuadPattern.java
@@ -82,8 +82,7 @@ public class QuadPattern implements Iterable<Quad>
@Override
public String toString() {
IndentedLineBuffer out = new IndentedLineBuffer() ;
-
- SerializationContext sCxt = SSE.sCxt((SSE.defaultPrefixMapWrite)) ;
+ SerializationContext sCxt = SSE.sCxt((SSE.getPrefixMapWrite())) ;
boolean first = true ;
for (Quad quad : quads) {
@@ -91,7 +90,7 @@ public class QuadPattern implements Iterable<Quad>
out.print(" ") ;
else
first = false ;
- // Adds (triple ...)
+ // Adds (quad ...)
// SSE.write(buff.getIndentedWriter(), t) ;
out.print("(") ;
WriterNode.outputPlain(out, quad, sCxt) ;
http://git-wip-us.apache.org/repos/asf/jena/blob/350082c3/jena-arq/src/main/java/org/apache/jena/sparql/mgt/Explain.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/mgt/Explain.java b/jena-arq/src/main/java/org/apache/jena/sparql/mgt/Explain.java
index 3c0f69e..1931ed2 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/mgt/Explain.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/mgt/Explain.java
@@ -227,7 +227,7 @@ public class Explain {
// Remove when QuadPatterns roll through from ARQ.
private static void formatQuads(IndentedLineBuffer out, QuadPattern quads) {
- SerializationContext sCxt = SSE.sCxt((SSE.defaultPrefixMapWrite)) ;
+ SerializationContext sCxt = SSE.sCxt(SSE.getPrefixMapWrite()) ;
boolean first = true ;
for ( Quad qp : quads ) {
@@ -254,22 +254,14 @@ public class Explain {
}
private static void formatTriples(IndentedLineBuffer out, BasicPattern triples) {
- SerializationContext sCxt = SSE.sCxt((SSE.defaultPrefixMapWrite)) ;
+ SerializationContext sCxt = SSE.sCxt(SSE.getPrefixMapWrite()) ;
boolean first = true ;
for ( Triple qp : triples ) {
- if ( !first ) {
- if ( !MultiLinesForPatterns )
- out.print(" ") ;
- } else
- first = false ;
- out.print("(") ;
- WriterNode.output(out, qp.getSubject(), sCxt) ;
- out.print(" ") ;
- WriterNode.output(out, qp.getPredicate(), sCxt) ;
- out.print(" ") ;
- WriterNode.output(out, qp.getObject(), sCxt) ;
- out.print(")") ;
+ if ( ! first && ! MultiLinesForPatterns )
+ out.print(" ") ;
+ first = false ;
+ WriterNode.outputPlain(out, qp, sCxt);
if ( MultiLinesForPatterns )
out.println() ;
}
http://git-wip-us.apache.org/repos/asf/jena/blob/350082c3/jena-arq/src/main/java/org/apache/jena/sparql/sse/SSE.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/sse/SSE.java b/jena-arq/src/main/java/org/apache/jena/sparql/sse/SSE.java
index f50425c..9b87c44 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/sse/SSE.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/sse/SSE.java
@@ -19,8 +19,10 @@
package org.apache.jena.sparql.sse;
import java.io.* ;
+import java.util.function.Consumer ;
import org.apache.jena.atlas.io.IO ;
+import org.apache.jena.atlas.io.IndentedLineBuffer ;
import org.apache.jena.atlas.io.IndentedWriter ;
import org.apache.jena.graph.Graph ;
import org.apache.jena.graph.Node ;
@@ -49,6 +51,7 @@ import org.apache.jena.sparql.sse.lang.ParseHandler ;
import org.apache.jena.sparql.sse.lang.ParseHandlerPlain ;
import org.apache.jena.sparql.sse.lang.ParseHandlerResolver ;
import org.apache.jena.sparql.sse.lang.SSE_Parser ;
+import org.apache.jena.sparql.sse.writers.WriterExpr ;
import org.apache.jena.sparql.sse.writers.WriterGraph ;
import org.apache.jena.sparql.sse.writers.WriterNode ;
import org.apache.jena.sparql.sse.writers.WriterOp ;
@@ -56,40 +59,78 @@ import org.apache.jena.sparql.util.FmtUtils ;
import org.apache.jena.system.JenaSystem ;
import org.apache.jena.util.FileUtils ;
+/**
+ * <a href="https://jena.apache.org/documentation/notes/sse.html"
+ * >SPARQL S-Expressions</a> is a unstandardized format for SPARQL-related and now
+ * RDF-related objects. This includes use for writing down the SPARQL algebra in Apache
+ * Jena ARQ.
+ * <p>
+ * It has regular syntax, inspired by schema (lisp), making it easy to create and maintain
+ * builders and writers and to compose structures.
+ * <p>
+ * "()" and "[]" are interchangeable and used for visual effect. Expressions are parsed
+ * and printed in prefix notation e.g. {@code (+ 1 ?x)}.
+ * <p>
+ * The oeprations are grouped into:
+ * <ul>
+ * <li>{@code parseTYPE} – parse a string to object of a specific kind.
+ * <li>{@code readTYPE} – Read a file and produce an object of a specific kind.
+ * <li>{@code write} – Write to a stream, default {@code System.out}
+ * <li>{@code str} – Create human readable strings.
+ * </ul>
+ * <p>
+ * {@code parse(...)}, which produces a {@link Item}, is direct access to the syntax parser.
+ * Builders take parser {@code Item} and create the in-memory objects (package
+ * {@code org.apache.jena.sparql.sse.builders}) and writers output in-memory objects
+ * to an {@link IndentedWriter} (package {@code org.apache.jena.sparql.sse.writers}.
+ * <p>
+ * {@code SSE} should not be considered part of the public, stable Jena APIs.
+ * <p>
+ * If you don't like lots of "()" and indentation, look away now.
+ * <p>
+ * Efficiency at scale is not a primary design goal, though the core parser is streaming
+ * and would scale.
+ */
public class SSE
{
static { JenaSystem.init(); }
private SSE() {}
- // Short prefix map for convenience (used in parsing, not in writing).
- protected static PrefixMapping defaultDefaultPrefixMapRead = new PrefixMappingImpl() ;
+ // Short prefix map for convenience (used in parsing and str(), not for writing).
+ private static PrefixMapping defaultPrefixMapPretty = new PrefixMappingImpl() ;
+ static {
+ defaultPrefixMapPretty.setNsPrefix("rdf", ARQConstants.rdfPrefix) ;
+ defaultPrefixMapPretty.setNsPrefix("rdfs", ARQConstants.rdfsPrefix) ;
+ defaultPrefixMapPretty.setNsPrefix("xsd", ARQConstants.xsdPrefix) ;
+ defaultPrefixMapPretty.setNsPrefix("owl" , ARQConstants.owlPrefix) ;
+ defaultPrefixMapPretty.setNsPrefix("ex" , "http://example.org/") ;
+ defaultPrefixMapPretty.setNsPrefix("ns" , "http://example.org/ns#") ;
+ defaultPrefixMapPretty.setNsPrefix("" , "http://example/") ;
+ }
+
+ protected static PrefixMapping prefixMapRead = defaultPrefixMapPretty ;
+ public static PrefixMapping getPrefixMapRead() { return prefixMapRead ; }
+ public static void setPrefixMapRead(PrefixMapping pmap) { prefixMapRead = pmap ; }
+
+ protected static PrefixMapping prefixMapString = new PrefixMappingImpl() ;
static {
- defaultDefaultPrefixMapRead.setNsPrefix("rdf", ARQConstants.rdfPrefix) ;
- defaultDefaultPrefixMapRead.setNsPrefix("rdfs", ARQConstants.rdfsPrefix) ;
- defaultDefaultPrefixMapRead.setNsPrefix("xsd", ARQConstants.xsdPrefix) ;
- defaultDefaultPrefixMapRead.setNsPrefix("owl" , ARQConstants.owlPrefix) ;
- defaultDefaultPrefixMapRead.setNsPrefix("fn" , ARQConstants.fnPrefix) ;
- defaultDefaultPrefixMapRead.setNsPrefix("ex" , "http://example.org/") ;
- defaultDefaultPrefixMapRead.setNsPrefix("ns" , "http://example.org/ns#") ;
- defaultDefaultPrefixMapRead.setNsPrefix("" , "http://example/") ;
+ prefixMapString.setNsPrefixes(defaultPrefixMapPretty) ;
}
-
- public static PrefixMapping defaultPrefixMapRead = defaultDefaultPrefixMapRead ;
- public static PrefixMapping getDefaultPrefixMapRead() { return defaultPrefixMapRead ; }
- public static void setDefaultPrefixMapRead(PrefixMapping pmap) { defaultPrefixMapRead = pmap ; }
+ public static PrefixMapping getPrefixMapString() { return prefixMapString ; }
+ public static void setPrefixMapString(PrefixMapping pmap) { prefixMapString = pmap ; }
// Short prefix map for convenience used in writing.
- protected static PrefixMapping defaultDefaultPrefixMapWrite = new PrefixMappingImpl() ;
+ private static PrefixMapping defaultPrefixMapWrite = new PrefixMappingImpl() ;
static {
- defaultDefaultPrefixMapWrite.setNsPrefix("rdf", ARQConstants.rdfPrefix) ;
- defaultDefaultPrefixMapWrite.setNsPrefix("rdfs", ARQConstants.rdfsPrefix) ;
- defaultDefaultPrefixMapWrite.setNsPrefix("xsd", ARQConstants.xsdPrefix) ;
+ defaultPrefixMapWrite.setNsPrefix("rdf", ARQConstants.rdfPrefix) ;
+ defaultPrefixMapWrite.setNsPrefix("rdfs", ARQConstants.rdfsPrefix) ;
+ defaultPrefixMapWrite.setNsPrefix("xsd", ARQConstants.xsdPrefix) ;
}
- public static PrefixMapping defaultPrefixMapWrite = defaultDefaultPrefixMapWrite ;
- public static PrefixMapping getDefaultPrefixMapWrite() { return defaultPrefixMapWrite ; }
- public static void setDefaultPrefixMapWrite(PrefixMapping pmap) { defaultPrefixMapWrite = pmap ; }
+ protected static PrefixMapping prefixMapWrite = defaultPrefixMapWrite ;
+ public static PrefixMapping getPrefixMapWrite() { return prefixMapWrite ; }
+ public static void setPrefixMapWrite(PrefixMapping pmap) { prefixMapWrite = pmap ; }
/** Parse a string to obtain a Node (see NodeFactory.parse() */
public static Node parseNode(String str) { return parseNode(str, null) ; }
@@ -234,7 +275,7 @@ public class SSE
/** Parse a string and obtain a SPARQL algebra basic graph pattern */
public static BasicPattern parseBGP(String s)
- { return parseBGP(s, getDefaultPrefixMapRead()) ; }
+ { return parseBGP(s, getPrefixMapRead()) ; }
/** Parse a string and obtain a SPARQL algebra basic graph pattern, given a prefix mapping */
public static BasicPattern parseBGP(String s, PrefixMapping pmap)
@@ -363,7 +404,7 @@ public class SSE
private static Item parseTerm(Reader reader, PrefixMapping pmap)
{
if ( pmap == null )
- pmap = getDefaultPrefixMapRead() ;
+ pmap = getPrefixMapRead() ;
ParseHandler handler = createParseHandler(pmap) ;
SSE_Parser.term(reader, handler) ;
return handler.getItem() ;
@@ -375,14 +416,99 @@ public class SSE
public static Item parse(Reader reader, PrefixMapping pmap)
{
if ( pmap == null )
- pmap = getDefaultPrefixMapRead() ;
+ pmap = getPrefixMapRead() ;
ParseHandler handler = createParseHandler(pmap) ;
SSE_Parser.parse(reader, handler) ;
return handler.getItem() ;
}
+
+
// ---- To String
+ public static String str(Node node) {
+ return str(node, getPrefixMapString()) ;
+ }
+
+ public static String str(Node node, PrefixMapping pmap) {
+ return string((out)->WriterNode.output(out, node, sCxt(pmap))) ;
+ }
+
+ public static String str(Triple triple) {
+ return str(triple, getPrefixMapString()) ;
+ }
+
+ public static String str(Triple triple, PrefixMapping pmap) {
+ return string((out)->WriterNode.output(out, triple, sCxt(pmap))) ;
+ }
+
+ public static String str(Quad quad) {
+ return str(quad, getPrefixMapString()) ;
+ }
+
+ public static String str(Quad quad, PrefixMapping pmap) {
+ return string((out)->WriterNode.output(out, quad, sCxt(pmap))) ;
+ }
+
+ public static String str(Graph graph) {
+ return str(graph, getPrefixMapString()) ;
+ }
+
+ public static String str(Graph graph, PrefixMapping pmap) {
+ return string((out)->WriterGraph.output(out, graph, sCxt(pmap))) ;
+ }
+
+ public static String str(DatasetGraph dsg) {
+ return str(dsg, getPrefixMapString()) ;
+ }
+
+ public static String str(DatasetGraph dsg, PrefixMapping pmap) {
+ return string((out)->WriterGraph.output(out, dsg, sCxt(pmap))) ;
+ }
+
+ public static String str(Expr expr) {
+ return str(expr, getPrefixMapString()) ;
+ }
+
+ public static String str(Expr expr, PrefixMapping pmap) {
+ return string((out)->WriterExpr.output(out, expr, sCxt(pmap))) ;
+ }
+
+ public static String str(BasicPattern bgp) {
+ return str(bgp, getPrefixMapString()) ;
+ }
+
+ public static String str(BasicPattern bgp, PrefixMapping pmap) {
+ return string((out)->WriterGraph.output(out, bgp, sCxt(pmap))) ;
+ }
+
+ public static String str(Op op) {
+ return str(op, getPrefixMapString()) ;
+ }
+
+ public static String str(Op op, PrefixMapping pmap) {
+ return string((out)->WriterOp.output(out, op, sCxt(pmap))) ;
+ }
+
+// public static String str(ResultSet rs) {
+// return str(rs, getPrefixMapString()) ;
+// }
+//
+// public static String str(ResultSet rs, PrefixMapping pmap) {
+// return string((out)->Writer???.output(out, rs, sCxt(pmap))) ;
+// }
+
+
+ private static String string(Consumer<IndentedLineBuffer> action) {
+ IndentedLineBuffer x = new IndentedLineBuffer() ;
+ action.accept(x);
+ return x.asString() ;
+ }
+
+ /** @deprecated Use {@link #str(Node)} */
+ @Deprecated
public static String format(Node node) { return FmtUtils.stringForNode(node) ; }
+ /** @deprecated Use {@link #str(Node, PrefixMapping)} */
+ @Deprecated
public static String format(Node node, PrefixMapping pmap) { return FmtUtils.stringForNode(node, pmap) ; }
// ----
@@ -466,7 +592,7 @@ public class SSE
}
public static void write(IndentedWriter out, Triple triple)
{
- WriterNode.output(out, triple, sCxt(defaultDefaultPrefixMapWrite)) ;
+ WriterNode.output(out, triple, sCxt(getPrefixMapWrite())) ;
out.flush() ;
}
@@ -479,7 +605,7 @@ public class SSE
}
public static void write(IndentedWriter out, Quad quad)
{
- WriterNode.output(out, quad, sCxt(defaultDefaultPrefixMapWrite)) ;
+ WriterNode.output(out, quad, sCxt(getPrefixMapWrite())) ;
out.flush() ;
}
@@ -493,7 +619,7 @@ public class SSE
}
public static void write(IndentedWriter out, Node node)
{
- WriterNode.output(IndentedWriter.stdout, node, sCxt(defaultDefaultPrefixMapWrite)) ;
+ WriterNode.output(IndentedWriter.stdout, node, sCxt(getPrefixMapWrite())) ;
IndentedWriter.stdout.flush() ;
}
@@ -505,7 +631,7 @@ public class SSE
return new SerializationContext() ;
}
- /** Return a SerializationContext appropriate for the prfix mapping */
+ /** Return a SerializationContext appropriate for the prefix mapping */
public static SerializationContext sCxt(PrefixMapping pmap)
{
if ( pmap != null )
http://git-wip-us.apache.org/repos/asf/jena/blob/350082c3/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeFactoryExtra.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeFactoryExtra.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeFactoryExtra.java
index fa60fd5..546092f 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeFactoryExtra.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeFactoryExtra.java
@@ -16,9 +16,9 @@
* limitations under the License.
*/
-package org.apache.jena.sparql.util;
+package org.apache.jena.sparql.util ;
-import java.util.Calendar;
+import java.util.Calendar ;
import org.apache.jena.atlas.lib.DateTimeUtils ;
import org.apache.jena.datatypes.RDFDatatype ;
@@ -39,210 +39,202 @@ import org.apache.jena.sparql.sse.SSE ;
/**
* Various convenience helper methods for converting to and from nodes
*/
-public class NodeFactoryExtra
-{
- private static final PrefixMap prefixMappingDefault = PrefixMapFactory.createForInput(SSE.getDefaultPrefixMapRead()) ;
-
- /**
- * Parse a node - with convenience prefix mapping
+public class NodeFactoryExtra {
+ private static final PrefixMap prefixMappingDefault = PrefixMapFactory.createForInput(SSE.getPrefixMapRead()) ;
+
+ /**
+ * Parse a node - with convenience prefix mapping
* <p>
* Allows surrounding white space
* </p>
+ *
* @param nodeString Node string to parse
- *
- */
- public static Node parseNode(String nodeString)
- {
+ *
+ */
+ public static Node parseNode(String nodeString) {
return parseNode(nodeString, prefixMappingDefault) ;
}
- private static PrefixMap pmapEmpty = PrefixMapFactory.create() ;
+ private static PrefixMap pmapEmpty = PrefixMapFactory.create() ;
- /** Parse a string into a node.
+ /**
+ * Parse a string into a node.
* <p>
* Allows surrounding white space.
* </p>
+ *
* @param nodeString Node string to parse
* @param pmap Prefix Map, null to use no prefix mappings
* @return Parsed Node
* @throws RiotException Thrown if a valid node cannot be parsed
- */
- public static Node parseNode(String nodeString, PrefixMap pmap)
- {
+ */
+ public static Node parseNode(String nodeString, PrefixMap pmap) {
Tokenizer tokenizer = TokenizerFactory.makeTokenizerString(nodeString) ;
- if ( ! tokenizer.hasNext() )
- throw new RiotException("Empty RDF term") ;
+ if ( !tokenizer.hasNext() )
+ throw new RiotException("Empty RDF term") ;
Token token = tokenizer.next() ;
Node node = token.asNode(pmap) ;
if ( node == null )
- throw new RiotException("Bad RDF Term: "+nodeString) ;
+ throw new RiotException("Bad RDF Term: " + nodeString) ;
if ( tokenizer.hasNext() )
- throw new RiotException("Trailing characters in string: "+nodeString) ;
- if ( node.isURI() )
- {
+ throw new RiotException("Trailing characters in string: " + nodeString) ;
+ if ( node.isURI() ) {
// Lightly test for bad URIs.
String x = node.getURI() ;
if ( x.indexOf(' ') >= 0 )
- throw new RiotException("Space(s) in IRI: "+ nodeString) ;
+ throw new RiotException("Space(s) in IRI: " + nodeString) ;
}
return node ;
}
-
- private static QueryParseException makeException(String msg, int line, int column)
- {
+
+ private static QueryParseException makeException(String msg, int line, int column) {
return new QueryParseException(msg, line, column) ;
}
-
- /** Create a literal Node, when the datatype, if given, is a string */
- public static Node createLiteralNode(String lex, String lang, String datatypeURI)
- {
+
+ /** Create a literal Node, when the datatype, if given, is a string */
+ public static Node createLiteralNode(String lex, String lang, String datatypeURI) {
if ( datatypeURI != null && datatypeURI.equals("") )
datatypeURI = null ;
-
+
if ( lang != null && lang.equals("") )
lang = null ;
-
+
RDFDatatype dType = null ;
if ( datatypeURI != null )
- dType = TypeMapper.getInstance().getSafeTypeByName(datatypeURI);
-
+ dType = TypeMapper.getInstance().getSafeTypeByName(datatypeURI) ;
+
Node n = NodeFactory.createLiteral(lex, lang, dType) ;
return n ;
}
-
- /** Node to int
- *
+
+ /**
+ * Node to int
+ *
* @param node
* @return The int value or Integer.MIN_VALUE.
*/
- public static int nodeToInt(Node node)
- {
+ public static int nodeToInt(Node node) {
LiteralLabel lit = node.getLiteral() ;
-
- if ( ! XSDDatatype.XSDint.isValidLiteral(lit) )
+
+ if ( !XSDDatatype.XSDint.isValidLiteral(lit) )
return Integer.MIN_VALUE ;
int i = ((Number)lit.getValue()).intValue() ;
return i ;
}
-
- /** Node to long
- *
+
+ /**
+ * Node to long
+ *
* @param node
* @return The long value or Long.MIN_VALUE.
*/
- public static long nodeToLong(Node node)
- {
+ public static long nodeToLong(Node node) {
LiteralLabel lit = node.getLiteral() ;
-
- if ( ! XSDDatatype.XSDlong.isValidLiteral(lit) )
+
+ if ( !XSDDatatype.XSDlong.isValidLiteral(lit) )
return Long.MIN_VALUE ;
long i = ((Number)lit.getValue()).longValue() ;
return i ;
}
-
- /** Node to float
- *
+
+ /**
+ * Node to float
+ *
* @param node
* @return The float value or Float.NaN
*/
- public static float nodeToFloat(Node node)
- {
- LiteralLabel lit = node.getLiteral();
-
- if ( ! XSDDatatype.XSDfloat.isValidLiteral(lit) )
- return Float.NaN;
- float f = ((Number)lit.getValue()).floatValue();
- return f;
- }
-
- /** Node to double
- *
+ public static float nodeToFloat(Node node) {
+ LiteralLabel lit = node.getLiteral() ;
+
+ if ( !XSDDatatype.XSDfloat.isValidLiteral(lit) )
+ return Float.NaN ;
+ float f = ((Number)lit.getValue()).floatValue() ;
+ return f ;
+ }
+
+ /**
+ * Node to double
+ *
* @param node
* @return The double value or Double.NaN
*/
- public static double nodeToDouble(Node node)
- {
- LiteralLabel lit = node.getLiteral();
-
- if ( ! XSDDatatype.XSDdouble.isValidLiteral(lit) )
- return Double.NaN;
- double d = ((Number)lit.getValue()).doubleValue();
- return d;
- }
-
- /** int to Node
+ public static double nodeToDouble(Node node) {
+ LiteralLabel lit = node.getLiteral() ;
+
+ if ( !XSDDatatype.XSDdouble.isValidLiteral(lit) )
+ return Double.NaN ;
+ double d = ((Number)lit.getValue()).doubleValue() ;
+ return d ;
+ }
+
+ /**
+ * int to Node
*
* @param integer
* @return An xsd:integer
*/
- public static Node intToNode(int integer)
- {
+ public static Node intToNode(int integer) {
return NodeFactory.createLiteral(Integer.toString(integer), XSDDatatype.XSDinteger) ;
}
- /** long to Node
+ /**
+ * long to Node
*
* @param integer
* @return An xsd:integer
*/
- public static Node intToNode(long integer)
- {
+ public static Node intToNode(long integer) {
return NodeFactory.createLiteral(Long.toString(integer), XSDDatatype.XSDinteger) ;
}
- /** float to Node
+ /**
+ * float to Node
*
* @param value
* @return An xsd:float
*/
- public static Node floatToNode(float value)
- {
+ public static Node floatToNode(float value) {
return NodeFactory.createLiteral(Float.toString(value), XSDDatatype.XSDfloat) ;
}
-
- /** double to Node
+
+ /**
+ * double to Node
*
* @param value
* @return An double
*/
- public static Node doubleToNode(double value)
- {
+ public static Node doubleToNode(double value) {
return NodeFactory.createLiteral(Double.toString(value), XSDDatatype.XSDdouble) ;
}
-
+
/** Calendar to xsd:dateTime Node */
- public static Node dateTimeToNode(Calendar c)
- {
- String lex = DateTimeUtils.calendarToXSDDateTimeString(c);
- return NodeFactory.createLiteral(lex, XSDDatatype.XSDdateTime);
+ public static Node dateTimeToNode(Calendar c) {
+ String lex = DateTimeUtils.calendarToXSDDateTimeString(c) ;
+ return NodeFactory.createLiteral(lex, XSDDatatype.XSDdateTime) ;
}
-
+
/** Calendar to xsd:date Node */
- public static Node dateToNode(Calendar c)
- {
- String lex = DateTimeUtils.calendarToXSDDateString(c);
- return NodeFactory.createLiteral(lex, XSDDatatype.XSDdate);
+ public static Node dateToNode(Calendar c) {
+ String lex = DateTimeUtils.calendarToXSDDateString(c) ;
+ return NodeFactory.createLiteral(lex, XSDDatatype.XSDdate) ;
}
-
+
/** Calendar to xsd:time Node */
- public static Node timeToNode(Calendar c)
- {
- String lex = DateTimeUtils.calendarToXSDTimeString(c);
- return NodeFactory.createLiteral(lex, XSDDatatype.XSDtime);
+ public static Node timeToNode(Calendar c) {
+ String lex = DateTimeUtils.calendarToXSDTimeString(c) ;
+ return NodeFactory.createLiteral(lex, XSDDatatype.XSDtime) ;
}
/** Now, as xsd:dateTime Node */
- public static Node nowAsDateTime()
- {
+ public static Node nowAsDateTime() {
String lex = DateTimeUtils.nowAsXSDDateTimeString() ;
return NodeFactory.createLiteral(lex, XSDDatatype.XSDdateTime) ;
}
/** Today, as xsd:date Node */
- public static Node todayAsDate()
- {
+ public static Node todayAsDate() {
String lex = DateTimeUtils.todayAsXSDDateString() ;
return NodeFactory.createLiteral(lex, XSDDatatype.XSDdate) ;
}
http://git-wip-us.apache.org/repos/asf/jena/blob/350082c3/jena-arq/src/test/java/org/apache/jena/sparql/syntax/TestSSE_Forms.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/syntax/TestSSE_Forms.java b/jena-arq/src/test/java/org/apache/jena/sparql/syntax/TestSSE_Forms.java
index b210b51..da67c97 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/syntax/TestSSE_Forms.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/syntax/TestSSE_Forms.java
@@ -39,16 +39,19 @@ public class TestSSE_Forms extends TestCase
pmap.setNsPrefix("ex", "http://example/") ;
}
- @BeforeClass public static void beforeClass()
- {
- SSE.getDefaultPrefixMapRead().removeNsPrefix("") ;
- SSE.getDefaultPrefixMapRead().removeNsPrefix("ex") ;
+ private static PrefixMapping original ;
+ @BeforeClass
+ public static void beforeClass() {
+ original = SSE.getPrefixMapRead() ;
+ PrefixMapping pmaptest = new PrefixMappingImpl()
+ .setNsPrefixes(original)
+ .removeNsPrefix("")
+ .removeNsPrefix("ex") ;
}
- @AfterClass public static void afterClass()
- {
- SSE.getDefaultPrefixMapRead().setNsPrefix("" , "http://example/") ;
- SSE.getDefaultPrefixMapRead().setNsPrefix("ex" , "http://example/ns#") ;
+ @AfterClass
+ public static void afterClass() {
+ SSE.setPrefixMapRead(original) ;
}
// ---- Assume ParseHandlerResolver from here on
http://git-wip-us.apache.org/repos/asf/jena/blob/350082c3/jena-cmds/src/main/java/tdb/tdbreorder.java
----------------------------------------------------------------------
diff --git a/jena-cmds/src/main/java/tdb/tdbreorder.java b/jena-cmds/src/main/java/tdb/tdbreorder.java
index 8d9984a..dcced9b 100644
--- a/jena-cmds/src/main/java/tdb/tdbreorder.java
+++ b/jena-cmds/src/main/java/tdb/tdbreorder.java
@@ -16,14 +16,13 @@
* limitations under the License.
*/
-package tdb;
+package tdb ;
import org.apache.jena.atlas.io.IndentedWriter ;
import org.apache.jena.atlas.lib.FileOps ;
import org.apache.jena.atlas.logging.LogCtl ;
import org.apache.jena.graph.Triple ;
import org.apache.jena.shared.PrefixMapping ;
-import org.apache.jena.shared.impl.PrefixMappingImpl ;
import org.apache.jena.sparql.algebra.Op ;
import org.apache.jena.sparql.algebra.op.OpBGP ;
import org.apache.jena.sparql.algebra.op.OpQuadPattern ;
@@ -37,8 +36,7 @@ import org.apache.jena.sparql.sse.SSE ;
import org.apache.jena.sparql.sse.writers.WriterNode ;
import org.apache.jena.tdb.sys.Names ;
-public class tdbreorder
-{
+public class tdbreorder {
public static void main(String... args) {
if ( args.length != 2 ) {
System.err.println("Usage: PATTERN STATS") ;
@@ -46,16 +44,15 @@ public class tdbreorder
}
LogCtl.enable(StatsMatcher.class) ;
LogCtl.enable(ReorderTransformationSubstitution.class) ;
-
- if ( args.length != 2 )
- {
- System.err.println("Usage: op stats") ;
+
+ if ( args.length != 2 ) {
+ System.err.println("Usage: op stats") ;
System.exit(1) ;
}
-
+
String pattern = args[0] ;
String statsFile = args[1] ;
-
+
Op op = SSE.readOp(pattern) ;
BasicPattern bgp ;
@@ -63,39 +60,32 @@ public class tdbreorder
bgp = ((OpQuadPattern)op).getBasicPattern() ;
} else if ( op instanceof OpBGP ) {
bgp = ((OpBGP)op).getPattern() ;
- }
- else {
+ } else {
System.err.println("Not a quad or triple pattern") ;
System.exit(2) ;
bgp = null ;
}
-
+
ReorderTransformation reorder = chooseReorder(statsFile) ;
- //ReorderTransformation reorder = ReorderLib.fixed() ;
+ // ReorderTransformation reorder = ReorderLib.fixed() ;
BasicPattern bgp2 = reorder.reorder(bgp) ;
-
+
System.out.println() ;
-
+
print(bgp) ;
System.out.println() ;
System.out.println(" ======== >>>>>>>>") ;
print(bgp2) ;
System.out.println() ;
}
-
+
private static void print(BasicPattern bgp) {
- IndentedWriter out = IndentedWriter.stdout;
-
- PrefixMapping pmap = new PrefixMappingImpl() ;
- pmap.setNsPrefixes(SSE.defaultPrefixMapWrite) ;
-// pmap.setNsPrefix("ppi", "http://landregistry.data.gov.uk/def/ppi/") ;
-// pmap.setNsPrefix("common", "http://landregistry.data.gov.uk/def/common/") ;
-
+ IndentedWriter out = IndentedWriter.stdout ;
+ PrefixMapping pmap = SSE.getPrefixMapWrite() ;
SerializationContext sCxt = SSE.sCxt(pmap) ;
-
+
boolean first = true ;
- for ( Triple t : bgp )
- {
+ for ( Triple t : bgp ) {
if ( !first )
out.print("\n") ;
else
@@ -106,11 +96,10 @@ public class tdbreorder
WriterNode.outputPlain(out, t, sCxt) ;
out.print(")") ;
}
- out.flush();
-
+ out.flush() ;
}
- private static ReorderTransformation chooseReorder(String filename)
- {
+
+ private static ReorderTransformation chooseReorder(String filename) {
if ( filename.equals(Names.optFixed) )
return ReorderLib.fixed() ;
if ( filename.equals(Names.optNone) )
@@ -118,7 +107,6 @@ public class tdbreorder
if ( FileOps.exists(filename) )
return ReorderLib.weighted(filename) ;
else
- throw new RuntimeException("No such file: "+filename) ;
+ throw new RuntimeException("No such file: " + filename) ;
}
}
-
http://git-wip-us.apache.org/repos/asf/jena/blob/350082c3/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java
index ae2dd5c..e9e0587 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java
@@ -204,10 +204,16 @@ public abstract class SPARQL_UberServlet extends ActionSPARQL
if ( !hasTrailing ) {
// Nothing after the DataAccessPoint i.e. Dataset by name.
// Action on the dataset itself. This can be:
+ //
// http://localhost:3030/ds?query=
- // http://localhost:3030/ds and a content type.
- // http://localhost:3030/ds?default ?graph= GSP
- // http://localhost:3030/ds , REST quads action on the dataset itself.
+ // http://localhost:3030/ds and a content type of "applicatiopn/sparql-query"
+ //
+ // http://localhost:3030/ds?update=
+ // http://localhost:3030/ds and a content type of "applicatiopn/sparql-update"
+ //
+ // http://localhost:3030/ds?default ?graph= GSP
+ //
+ // http://localhost:3030/ds REST quads action on the dataset itself.
if ( isQuery ) {
if ( !allowQuery(action) )
ServletOps.errorMethodNotAllowed("SPARQL query : "+method) ;