You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by sa...@apache.org on 2013/01/29 21:27:39 UTC
svn commit: r1440101 [2/16] - in /jena/branches/streaming-update: ./
apache-jena-libs/ apache-jena/ apache-jena/bat/ apache-jena/bin/ jena-arq/
jena-arq/src-examples/arq/examples/riot/ jena-arq/src/main/java/arq/
jena-arq/src/main/java/arq/cmdline/ jen...
Propchange: jena/branches/streaming-update/
------------------------------------------------------------------------------
Merged /jena/trunk:r1430447-1440093
Propchange: jena/branches/streaming-update/apache-jena-libs/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Jan 29 20:27:24 2013
@@ -0,0 +1,3 @@
+.project
+.settings
+target
Modified: jena/branches/streaming-update/apache-jena/cmd-maker
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/apache-jena/cmd-maker?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/apache-jena/cmd-maker (original)
+++ jena/branches/streaming-update/apache-jena/cmd-maker Tue Jan 29 20:27:24 2013
@@ -57,9 +57,7 @@ riotcmd.rdfxml
tdb.tdbbackup
tdb.tdbdump
tdb.tdbloader
-tdb.tdbloader3
tdb.tdbquery
-tdb.tdbrecovery
tdb.tdbstats
tdb.tdbupdate
EOF
Modified: jena/branches/streaming-update/jena-arq/ReleaseNotes.txt
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/ReleaseNotes.txt?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/ReleaseNotes.txt (original)
+++ jena/branches/streaming-update/jena-arq/ReleaseNotes.txt Tue Jan 29 20:27:24 2013
@@ -6,8 +6,11 @@ ChangeLog for ARQ
==== Jena 2.10.0
+ Consolidation of versions numbers.
++ Command line SPARQL query reads all data formats (triples and quads) for --data
+* JENA-379 : Incorrect results from a property paths with same subject and object variable.
+ Introduce RDFParserOutput as output interface for parsers (was Sink<Triple> or Sink<Quad>)
+ Assorted implementations of this new interface
+ RIOT - internal reorganisation moving to org.apache.jena.riot.
+ Remove the partial migration support for old-style SPARQL submission update forms.
+ Update Turtle/Trig parsers for prefixed name details in RDF 1.1
@@ -25,10 +28,10 @@ ChangeLog for ARQ
+ Blank node labels can not be reused across different INSERT DATA operations in the same SPARQL Update Request
(spec clarification)
+ JENA-322 : Make jcl-over-slf4 a required dependency
-+ JENA-321 : Remove GraphStore.(start|finish)Request() (was previosuly deprecated)
++ JENA-321 : Remove GraphStore.(start|finish)Request() (was previously deprecated)
+ Remove deprecated QueryExecutionBase.cancelAllowDrain (see JENA-93)
+ Implement SPARQL-WG decision on BIND : use original semantics.
-+ JENA-294 : improved optimization of sequeneces of OPTIONALs where the grouois only OPTIONAL and an equality filter
++ JENA-294 : improved optimization of sequeneces of OPTIONALs where the group is only OPTIONAL and an equality filter
+ JENA-298 ResultSetStAX.hasNext() can now be called again after it has returned false
+ JENA-302 Add URIs for all XQuery/Xpath F&O functions for duration accessors
+ JENA-303 Add URIs for all XQuery/Xpath F&O functions where there are SPARQL functions
Modified: jena/branches/streaming-update/jena-arq/src/main/java/arq/cmdline/ModDatasetGeneral.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/arq/cmdline/ModDatasetGeneral.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/arq/cmdline/ModDatasetGeneral.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/arq/cmdline/ModDatasetGeneral.java Tue Jan 29 20:27:24 2013
@@ -18,11 +18,8 @@
package arq.cmdline;
-import java.util.ArrayList ;
import java.util.List ;
-import org.apache.jena.riot.Lang ;
-import org.apache.jena.riot.RDFLanguages ;
import org.apache.jena.riot.RDFDataMgr ;
import arq.cmd.CmdException ;
@@ -44,26 +41,33 @@ import com.hp.hpl.jena.util.LocationMapp
public class ModDatasetGeneral extends ModDataset
{
// See also ModDatasetAssembler
- protected final ArgDecl graphDecl = new ArgDecl(ArgDecl.HasValue, "graph", "data") ;
+ protected final ArgDecl graphDecl = new ArgDecl(ArgDecl.HasValue, "graph") ;
+ protected final ArgDecl dataDecl = new ArgDecl(ArgDecl.HasValue, "data") ;
protected final ArgDecl namedGraphDecl = new ArgDecl(ArgDecl.HasValue, "named", "namedgraph", "namedGraph", "namedData", "nameddata") ;
//protected final ArgDecl dataFmtDecl = new ArgDecl(ArgDecl.HasValue, "fmt", "format") ;
//protected final ArgDecl dirDecl = new ArgDecl(ArgDecl.HasValue, "dir") ;
protected final ArgDecl lmapDecl = new ArgDecl(ArgDecl.HasValue, "lmap") ;
-
+
+ private List<String> dataURLs = null ;
private List<String> graphURLs = null ;
private List<String> namedGraphURLs = null ;
private DataFormat dataSyntax = null ;
private FileManager fileManager = FileManager.get() ;
+ protected ModDatasetGeneral() {}
+
@Override
public void registerWith(CmdGeneral cl)
{
cl.getUsage().startCategory("Dataset") ;
+ cl.add(dataDecl,
+ "--data=FILE",
+ "Data for the datset - triple or quad formats") ;
cl.add(graphDecl,
- "--graph",
+ "--graph=FILE",
"Graph for default graph of the datset") ;
cl.add(namedGraphDecl,
- "--namedGraph",
+ "--namedGraph=FILE",
"Add a graph into the dataset as a named graph") ;
//cl.add(dirDecl) ;
//cl.add(dataFmtDecl) ;
@@ -75,6 +79,7 @@ public class ModDatasetGeneral extends M
@Override
public void processArgs(CmdArgModule cmdLine)
{
+ dataURLs = cmdLine.getValues(dataDecl) ;
graphURLs = cmdLine.getValues(graphDecl) ;
namedGraphURLs = cmdLine.getValues(namedGraphDecl) ;
@@ -90,7 +95,8 @@ public class ModDatasetGeneral extends M
public Dataset createDataset()
{
// If nothing specified to the module. Leave alone and hope the query has FROM/FROM NAMED
- if ( (graphURLs == null || graphURLs.size() == 0) &&
+ if ( ( dataURLs == null || dataURLs.size() == 0) &&
+ (graphURLs == null || graphURLs.size() == 0) &&
(namedGraphURLs == null || namedGraphURLs.size() == 0 ) )
return null ;
@@ -105,27 +111,14 @@ public class ModDatasetGeneral extends M
protected void addGraphs(Dataset ds)
{
try {
- if ( (graphURLs != null) || (namedGraphURLs != null) )
+ if ( dataURLs != null )
{
- // Do quads
- List<String> triples = new ArrayList<String>() ;
- List<String> quads = new ArrayList<String>() ;
-
- for ( String fn : graphURLs )
- {
- Lang lang = RDFLanguages.filenameToLang(fn) ;
-
- if ( RDFLanguages.isQuads(lang) )
- quads.add(fn) ;
- else
- triples.add(fn) ;
- }
-
- for ( String fn : quads )
- RDFDataMgr.read(ds.asDatasetGraph(), fn) ;
- dataset =
- DatasetUtils.addInGraphs(ds, triples, namedGraphURLs, fileManager, null) ;
+ for ( String url : dataURLs )
+ RDFDataMgr.read(ds, url) ;
}
+
+ if ( (graphURLs != null) || (namedGraphURLs != null) )
+ ds = DatasetUtils.addInGraphs(ds, graphURLs, namedGraphURLs, fileManager, null) ;
}
catch (LabelExistsException ex)
{ throw new CmdException(ex.getMessage()) ; }
Modified: jena/branches/streaming-update/jena-arq/src/main/java/arq/query.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/arq/query.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/arq/query.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/arq/query.java Tue Jan 29 20:27:24 2013
@@ -76,9 +76,9 @@ public class query extends CmdARQ
super.addModule(modTime) ;
super.getUsage().startCategory("Control") ;
- super.add(argExplain, "--explain", "Explain and log query execution") ;
- super.add(argRepeat, "--repeat=N or N,M", "Do N times or N warmup and then M times (use for timing to overcome start up costs of Java)");
- super.add(argOptimize, "--optimize=", "Turn the query optimizer on or off (default: on") ;
+ super.add(argExplain, "--explain", "Explain and log query execution") ;
+ super.add(argRepeat, "--repeat=N or N,M", "Do N times or N warmup and then M times (use for timing to overcome start up costs of Java)");
+ super.add(argOptimize, "--optimize=", "Turn the query optimizer on or off (default: on)") ;
}
@Override
Modified: jena/branches/streaming-update/jena-arq/src/main/java/arq/rsparql.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/arq/rsparql.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/arq/rsparql.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/arq/rsparql.java Tue Jan 29 20:27:24 2013
@@ -20,7 +20,6 @@ package arq;
import arq.cmd.CmdException ;
import arq.cmdline.CmdARQ ;
-import arq.cmdline.ModDatasetGeneral ;
import arq.cmdline.ModQueryIn ;
import arq.cmdline.ModRemote ;
import arq.cmdline.ModResultsOut ;
@@ -36,7 +35,6 @@ public class rsparql extends CmdARQ
{
protected ModQueryIn modQuery = new ModQueryIn() ;
protected ModRemote modRemote = new ModRemote() ;
- protected ModDatasetGeneral modDesc = new ModDatasetGeneral() ;
protected ModResultsOut modResults = new ModResultsOut() ;
public static void main (String... argv)
@@ -50,7 +48,6 @@ public class rsparql extends CmdARQ
super(argv) ;
super.addModule(modRemote) ;
super.addModule(modQuery) ;
- super.addModule(modDesc) ;
super.addModule(modResults) ;
}
@@ -70,10 +67,7 @@ public class rsparql extends CmdARQ
try {
String serviceURL = modRemote.getServiceURL() ;
- QueryExecution qe = QueryExecutionFactory.sparqlService(serviceURL, query,
- modDesc.getGraphURLs(),
- modDesc.getNamedGraphURLs()) ;
-
+ QueryExecution qe = QueryExecutionFactory.sparqlService(serviceURL, query) ;
if ( modRemote.usePost() )
HttpQuery.urlLimit = 0 ;
Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/query/Query.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/query/Query.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/query/Query.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/query/Query.java Tue Jan 29 20:27:24 2013
@@ -153,6 +153,9 @@ public class Query extends Prologue impl
public boolean isUnknownType() { return queryType == QueryTypeUnknown ; }
+ // It was a mistake to extend Prologue ... but what is done is done.
+ public Prologue getPrologue() { return this ; }
+
public void setStrict(boolean isStrict)
{
strictQuery = isStrict ;
Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java Tue Jan 29 20:27:24 2013
@@ -56,10 +56,11 @@ public class TransformFilterPlacement ex
{
if ( ! doFilterPlacement )
return OpFilter.filter(exprs, new OpBGP(bgp)) ;
-
- Op op = transformFilterBGP(exprs, new HashSet<Var>(), bgp) ;
+ // Mutated
+ ExprList exprs2 = new ExprList(exprs) ;
+ Op op = transformFilterBGP(exprs2, new HashSet<Var>(), bgp) ;
// Remaining filters? e.g. ones mentioning var s not used anywhere.
- op = buildFilter(exprs, op) ;
+ op = buildFilter(exprs2, op) ;
return op ;
}
@@ -67,11 +68,12 @@ public class TransformFilterPlacement ex
{
if ( ! doFilterPlacement )
return OpFilter.filter(exprs, new OpQuadPattern(graphNode, bgp)) ;
- Op op = transformFilterQuadPattern(exprs, new HashSet<Var>(), graphNode, bgp);
- op = buildFilter(exprs, op) ;
+ // Mutated
+ ExprList exprs2 = new ExprList(exprs) ;
+ Op op = transformFilterQuadPattern(exprs2, new HashSet<Var>(), graphNode, bgp);
+ op = buildFilter(exprs2, op) ;
return op ;
}
-
public TransformFilterPlacement()
{ }
@@ -127,6 +129,7 @@ public class TransformFilterPlacement ex
return transformFilterBGP(exprs, patternVarsScope, x.getPattern()) ;
}
+ // Mutates exprs
private static Op transformFilterBGP(ExprList exprs, Set<Var> patternVarsScope, BasicPattern pattern)
{
// Any filters that depend on no variables.
Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/DatasetGraphCollection.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/DatasetGraphCollection.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/DatasetGraphCollection.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/DatasetGraphCollection.java Tue Jan 29 20:27:24 2013
@@ -21,6 +21,7 @@ package com.hp.hpl.jena.sparql.core;
import java.util.Iterator ;
import org.apache.jena.atlas.iterator.Iter ;
+import org.apache.jena.atlas.lib.Lib ;
import com.hp.hpl.jena.graph.Graph ;
import com.hp.hpl.jena.graph.Node ;
@@ -87,7 +88,7 @@ public abstract class DatasetGraphCollec
protected Graph fetchGraph(Node gn)
{
- if ( Quad.isDefaultGraph(gn) )
+ if ( Quad.isDefaultGraph(gn) || Lib.equal(gn,Quad.tripleInQuad)) // Not preferrred style
return getDefaultGraph() ;
else
return getGraph(gn) ;
Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/binding/BindingInputStream.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/binding/BindingInputStream.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/binding/BindingInputStream.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/binding/BindingInputStream.java Tue Jan 29 20:27:24 2013
@@ -84,7 +84,7 @@ public class BindingInputStream extends
{
// TODO
// Don't do anything with IRIs.
- Prologue prologue = new Prologue(new PrefixMap(), IRIResolver.createNoResolve()) ;
+ Prologue prologue = new Prologue(PrefixMapFactory.createForInput(), IRIResolver.createNoResolve()) ;
ErrorHandler handler = ErrorHandlerFactory.getDefaultErrorHandler() ;
ParserProfile profile = new ParserProfileBase(prologue, handler) ;
profile.setLabelToNode(LabelToNode.createUseLabelAsGiven()) ;
Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/binding/BindingOutputStream.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/binding/BindingOutputStream.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/binding/BindingOutputStream.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/binding/BindingOutputStream.java Tue Jan 29 20:27:24 2013
@@ -32,7 +32,7 @@ import org.apache.jena.iri.IRI ;
import org.apache.jena.riot.RiotException ;
import org.apache.jena.riot.out.NodeFormatter ;
import org.apache.jena.riot.out.NodeFormatterTTL ;
-import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMap;
import com.hp.hpl.jena.sparql.core.Var ;
Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/HashIndexTable.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/HashIndexTable.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/HashIndexTable.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/HashIndexTable.java Tue Jan 29 20:27:24 2013
@@ -33,7 +33,7 @@ import com.hp.hpl.jena.sparql.engine.bin
* Indexes bindings so that they can be search for quickly when a binding to all the
* variables is provided. If a binding to only some of the known variables is provided
* then the index still works, but will search linearly.
- * @author Paul Gearon
+ * Contribution from Paul Gearon (quoll)
*/
public class HashIndexTable implements IndexTable {
Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/IndexFactory.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/IndexFactory.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/IndexFactory.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/IndexFactory.java Tue Jan 29 20:27:24 2013
@@ -27,7 +27,8 @@ import com.hp.hpl.jena.sparql.engine.ind
/**
* Creates {@link com.hp.hpl.jena.sparql.engine.index.IndexTable}s for use by
* {@link com.hp.hpl.jena.sparql.engine.iterator.QueryIterMinus}.
- * @author Paul Gearon
+ * <p>
+ * Contribution from Paul Gearon
*/
public class IndexFactory {
Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/IndexTable.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/IndexTable.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/IndexTable.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/IndexTable.java Tue Jan 29 20:27:24 2013
@@ -25,7 +25,8 @@ import com.hp.hpl.jena.sparql.engine.bin
* {@link com.hp.hpl.jena.sparql.engine.binding.Binding}s when
* {@link com.hp.hpl.jena.sparql.engine.iterator.QueryIterMinus} is trying to determine
* which Bindings need to be removed.
- * @author Paul Gearon
+ * <p>
+ * Contribution from Paul Gearon
*/
public interface IndexTable {
Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/LinearIndex.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/LinearIndex.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/LinearIndex.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/LinearIndex.java Tue Jan 29 20:27:24 2013
@@ -45,7 +45,7 @@ import com.hp.hpl.jena.sparql.engine.bin
* TreeMap is suggested here, since there would be commonVars.size() maps, which would take
* a lot of heap, particularly since performance of this class is only an issue when the
* data to search is significant.
- * @author Paul Gearon
+ * <p>Contribution from Paul Gearon
*/
public class LinearIndex implements IndexTable {
Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIter.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIter.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIter.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIter.java Tue Jan 29 20:27:24 2013
@@ -70,6 +70,15 @@ public abstract class QueryIter extends
public int getIteratorNumber() { return iteratorNumber ; }
@Override
+ public void output(IndentedWriter out)
+ {
+ output(out, null) ;
+// out.print(Plan.startMarker) ;
+// out.print(Utils.className(this)) ;
+// out.print(Plan.finishMarker) ;
+ }
+
+ @Override
public void output(IndentedWriter out, SerializationContext sCxt)
{ out.println(getIteratorNumber()+"/"+debug()) ; }
Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/optimizer/reorder/ReorderLib.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/optimizer/reorder/ReorderLib.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/optimizer/reorder/ReorderLib.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/optimizer/reorder/ReorderLib.java Tue Jan 29 20:27:24 2013
@@ -35,7 +35,7 @@ public class ReorderLib
{
return "identity reorder" ;
}
- } ;
+ }
private static ReorderProc _identityProc = new ReorderProcIdentity() ;
private static class ReorderTransformationIdentity implements ReorderTransformation
@@ -51,7 +51,7 @@ public class ReorderLib
{
return _identityProc ;
}
- } ;
+ }
private static ReorderTransformation _identity = new ReorderTransformationIdentity() ;
/** Return a ReorderProc that does no reordering (leaving the query writer in-control)*/
Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessRemote.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessRemote.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessRemote.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessRemote.java Tue Jan 29 20:27:24 2013
@@ -18,12 +18,14 @@
package com.hp.hpl.jena.sparql.modify;
+import org.apache.http.protocol.HttpContext;
import org.apache.jena.riot.WebContent ;
import org.apache.jena.riot.web.HttpOp ;
import com.hp.hpl.jena.query.QuerySolution ;
import com.hp.hpl.jena.sparql.ARQException ;
import com.hp.hpl.jena.sparql.util.Context ;
+import com.hp.hpl.jena.sparql.util.Symbol;
import com.hp.hpl.jena.update.GraphStore ;
import com.hp.hpl.jena.update.UpdateProcessor ;
import com.hp.hpl.jena.update.UpdateRequest ;
@@ -33,13 +35,17 @@ import com.hp.hpl.jena.update.UpdateRequ
*/
public class UpdateProcessRemote implements UpdateProcessor
{
+ public static final Symbol HTTP_CONTEXT = Symbol.create("httpContext") ;
+
private final UpdateRequest request ;
private final String endpoint ;
+ private final Context context ;
- public UpdateProcessRemote(UpdateRequest request , String endpoint )
+ public UpdateProcessRemote(UpdateRequest request , String endpoint , Context context )
{
this.request = request ;
this.endpoint = endpoint ;
+ this.context = Context.setupContext(context, null) ;
}
@Override
@@ -60,14 +66,29 @@ public class UpdateProcessRemote impleme
if ( endpoint == null )
throw new ARQException("Null endpoint for remote update") ;
String reqStr = request.toString() ;
- HttpOp.execHttpPost(endpoint, WebContent.contentTypeSPARQLUpdate, reqStr) ;
+ HttpOp.execHttpPost(endpoint, WebContent.contentTypeSPARQLUpdate, reqStr, null, null, getHttpContext()) ;
}
@Override
public Context getContext()
{
- return null ;
+ return context ;
}
+ /**
+ * Convenience method to set the {@link HttpContext}
+ * @param httpContext
+ */
+ public void setHttpContext(HttpContext httpContext) {
+ getContext().put(HTTP_CONTEXT, httpContext) ;
+ }
+
+ /**
+ * Convenience method to get the {@link HttpContext}
+ * @returns HttpContext
+ */
+ public HttpContext getHttpContext() {
+ return (HttpContext) getContext().get(HTTP_CONTEXT) ;
+ }
}
Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessRemoteForm.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessRemoteForm.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessRemoteForm.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessRemoteForm.java Tue Jan 29 20:27:24 2013
@@ -23,6 +23,7 @@ import java.util.HashMap ;
import java.util.List ;
import java.util.Map ;
+import org.apache.http.protocol.HttpContext;
import org.apache.jena.atlas.lib.Pair ;
import org.apache.jena.riot.web.HttpOp ;
import org.apache.jena.riot.web.HttpResponseHandler ;
@@ -31,6 +32,7 @@ import org.apache.jena.riot.web.HttpResp
import com.hp.hpl.jena.query.QuerySolution ;
import com.hp.hpl.jena.sparql.ARQException ;
import com.hp.hpl.jena.sparql.util.Context ;
+import com.hp.hpl.jena.sparql.util.Symbol;
import com.hp.hpl.jena.update.GraphStore ;
import com.hp.hpl.jena.update.UpdateProcessor ;
import com.hp.hpl.jena.update.UpdateRequest ;
@@ -41,13 +43,17 @@ import com.hp.hpl.jena.update.UpdateRequ
*/
public class UpdateProcessRemoteForm implements UpdateProcessor
{
+ public static final Symbol HTTP_CONTEXT = Symbol.create("httpContext") ;
+
private final UpdateRequest request ;
private final String endpoint ;
+ private final Context context ;
- public UpdateProcessRemoteForm(UpdateRequest request , String endpoint )
+ public UpdateProcessRemoteForm(UpdateRequest request , String endpoint, Context context )
{
this.request = request ;
this.endpoint = endpoint ;
+ this.context = Context.setupContext(context, null) ;
}
@Override
@@ -73,13 +79,29 @@ public class UpdateProcessRemoteForm imp
Map<String, HttpResponseHandler> handlers = new HashMap<String, HttpResponseHandler>() ;
//handlers.put("text/html", HttpResponseLib.nullResponse) ;
handlers.put("*", HttpResponseLib.nullResponse) ;
- HttpOp.execHttpPostForm(endpoint, params, handlers) ;
+ HttpOp.execHttpPostForm(endpoint, params, handlers, getHttpContext()) ;
}
@Override
public Context getContext()
{
- return null ;
+ return context ;
+ }
+
+ /**
+ * Convenience method to set the {@link HttpContext}
+ * @param httpContext
+ */
+ public void setHttpContext(HttpContext httpContext) {
+ getContext().put(HTTP_CONTEXT, httpContext) ;
+ }
+
+ /**
+ * Convenience method to get the {@link HttpContext}
+ * @returns HttpContext
+ */
+ public HttpContext getHttpContext() {
+ return (HttpContext) getContext().get(HTTP_CONTEXT);
}
}
Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/request/UpdateWriter.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/request/UpdateWriter.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/request/UpdateWriter.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/request/UpdateWriter.java Tue Jan 29 20:27:24 2013
@@ -30,6 +30,7 @@ import org.apache.jena.riot.out.SinkQuad
import com.hp.hpl.jena.graph.Node;
import com.hp.hpl.jena.graph.Triple;
import com.hp.hpl.jena.sparql.ARQException;
+import com.hp.hpl.jena.sparql.core.Prologue ;
import com.hp.hpl.jena.sparql.core.Quad;
import com.hp.hpl.jena.sparql.modify.request.UpdateDataWriter.UpdateMode;
import com.hp.hpl.jena.sparql.serializer.FormatterElement;
@@ -37,6 +38,7 @@ import com.hp.hpl.jena.sparql.serializer
import com.hp.hpl.jena.sparql.serializer.SerializationContext;
import com.hp.hpl.jena.sparql.syntax.Element;
import com.hp.hpl.jena.sparql.util.FmtUtils;
+import com.hp.hpl.jena.sparql.util.NodeToLabelMapBNode ;
import com.hp.hpl.jena.update.Update;
import com.hp.hpl.jena.update.UpdateRequest;
@@ -52,14 +54,12 @@ public class UpdateWriter implements Clo
public UpdateWriter(IndentedWriter out, SerializationContext sCxt)
{
if (out == null)
- {
throw new IllegalArgumentException("out may not be null") ;
- }
+ // To get legal syntax out, the serialization context
+ // has to be a bNode mapping that does ??N vars to bNodes
if (sCxt == null)
- {
- sCxt = new SerializationContext();
- }
+ sCxt = new SerializationContext((Prologue)null, new NodeToLabelMapBNode());
this.out = out;
this.sCxt = sCxt;
@@ -68,18 +68,14 @@ public class UpdateWriter implements Clo
public void open()
{
if (null != sCxt)
- {
prologue();
- }
opened = true;
}
private void checkOpen()
{
if (!opened)
- {
throw new IllegalStateException("UpdateStreamWriter is not opened. Call open() first.");
- }
}
private void prologue()
@@ -241,9 +237,6 @@ public class UpdateWriter implements Clo
public static void output(UpdateRequest request, IndentedWriter out, SerializationContext sCxt)
{
- if ( sCxt == null )
- sCxt = new SerializationContext(request);
-
UpdateWriter uw = new UpdateWriter(out, sCxt);
uw.open();
uw.update(request);
@@ -252,9 +245,6 @@ public class UpdateWriter implements Clo
public static void output(Update update, IndentedWriter out, SerializationContext sCxt)
{
- if ( sCxt == null )
- sCxt = new SerializationContext();
-
UpdateWriter uw = new UpdateWriter(out, sCxt);
uw.open();
uw.update(update);
Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/path/PathLib.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/path/PathLib.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/path/PathLib.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/path/PathLib.java Tue Jan 29 20:27:24 2013
@@ -22,6 +22,10 @@ import java.util.ArrayList ;
import java.util.Iterator ;
import java.util.List ;
+import org.apache.jena.atlas.iterator.Filter ;
+import org.apache.jena.atlas.iterator.Iter ;
+import org.apache.jena.atlas.lib.Lib ;
+
import com.hp.hpl.jena.graph.Graph ;
import com.hp.hpl.jena.graph.Node ;
import com.hp.hpl.jena.sparql.ARQInternalErrorException ;
@@ -138,7 +142,12 @@ public class PathLib
Graph graph = execCxt.getActiveGraph() ;
if ( Var.isVar(s) && Var.isVar(o) )
- return ungroundedPath(binding, graph, Var.alloc(s), path, Var.alloc(o), execCxt) ;
+ {
+ if ( s.equals(o) )
+ return ungroundedPathSameVar(binding, graph, Var.alloc(s), path, execCxt) ;
+ else
+ return ungroundedPath(binding, graph, Var.alloc(s), path, Var.alloc(o), execCxt) ;
+ }
if ( ! Var.isVar(s) && ! Var.isVar(o) )
return groundedPath(binding, graph, s, path, o, execCxt) ;
@@ -212,4 +221,37 @@ public class PathLib
}
return qIterCat ;
}
+
+ private static QueryIterator ungroundedPathSameVar(Binding binding, Graph graph, Var var, Path path, ExecutionContext execCxt)
+ {
+ // Try each end, grounded
+ // Slightly more efficient would be to add a per-engine to do this.
+ Iterator<Node> iter = GraphUtils.allNodes(graph) ;
+ QueryIterConcat qIterCat = new QueryIterConcat(execCxt) ;
+
+ for ( ; iter.hasNext() ; )
+ {
+ Node n = iter.next() ;
+ Binding b2 = BindingFactory.binding(binding, var, n) ;
+ int x = existsPath(graph, n, path, n) ;
+ if ( x > 0 )
+ {
+ QueryIterator qIter = new QueryIterYieldN(x, b2, execCxt) ;
+ qIterCat.add(qIter) ;
+ }
+ }
+ return qIterCat ;
+ }
+
+ private static int existsPath(Graph graph, Node subject, Path path, final Node object)
+ {
+ if ( ! subject.isConcrete() || !object.isConcrete() )
+ throw new ARQInternalErrorException("Non concrete node for existsPath evaluation") ;
+ Iterator<Node> iter = PathEval.eval(graph, subject, path) ;
+ Filter<Node> filter = new Filter<Node>() { @Override public boolean accept(Node node) { return Lib.equal(node, object) ; } } ;
+ // See if we got to the node we're interested in finishing at.
+ iter = Iter.filter(iter, filter) ;
+ long x = Iter.count(iter) ;
+ return (int)x ;
+ }
}
Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/MappingRegistry.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/MappingRegistry.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/MappingRegistry.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/MappingRegistry.java Tue Jan 29 20:27:24 2013
@@ -19,6 +19,7 @@
package com.hp.hpl.jena.sparql.util;
import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMapFactory ;
/** Assist with naming symbols by URI.
* This class keeps a prefix mapping so that subsystems can register their
@@ -26,7 +27,7 @@ import org.apache.jena.riot.system.Prefi
*/
public class MappingRegistry
{
- private static PrefixMap mapping = new PrefixMap() ;
+ private static PrefixMap mapping = PrefixMapFactory.create() ;
public static void addPrefixMapping(String prefix, String uri)
{
Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/NodeFactory.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/NodeFactory.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/NodeFactory.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/NodeFactory.java Tue Jan 29 20:27:24 2013
@@ -20,6 +20,7 @@ package com.hp.hpl.jena.sparql.util;
import org.apache.jena.riot.RiotException ;
import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMapFactory ;
import org.apache.jena.riot.tokens.Token ;
import org.apache.jena.riot.tokens.Tokenizer ;
import org.apache.jena.riot.tokens.TokenizerFactory ;
@@ -34,7 +35,7 @@ import com.hp.hpl.jena.sparql.sse.SSE ;
public class NodeFactory
{
- private static final PrefixMap prefixMappingDefault = PrefixMap.fromPrefixMapping(SSE.getDefaultPrefixMapRead()) ;
+ private static final PrefixMap prefixMappingDefault = PrefixMapFactory.createForInput(SSE.getDefaultPrefixMapRead()) ;
/** Parse a node - with convenience prefix mapping */
public static Node parseNode(String nodeString)
@@ -42,7 +43,7 @@ public class NodeFactory
return parseNode(nodeString, prefixMappingDefault) ;
}
- private static PrefixMap pmapEmpty = new PrefixMap() ;
+ private static PrefixMap pmapEmpty = PrefixMapFactory.create() ;
/** Parse a string into a node.
* Pass null for the prefix mapping to indicate using no defined mappings
Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/QueryUtils.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/QueryUtils.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/QueryUtils.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/QueryUtils.java Tue Jan 29 20:27:24 2013
@@ -116,7 +116,7 @@ public class QueryUtils
}
if ( query.hashCode() != query2.hashCode() )
- throw new QueryCheckException("reparsed query hashCode does not equal parsed input query") ;
+ throw new QueryCheckException("reparsed query hashCode does not equal parsed input query \nQuery (hashCode: " + query.hashCode() + ")=\n" + query + "\n\nQuery2 (hashCode: " + query2.hashCode() + ")=\n" + query2) ;
if ( ! query.equals(query2) )
throw new QueryCheckException("reparsed output does not equal parsed input") ;
Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateExecutionFactory.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateExecutionFactory.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateExecutionFactory.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateExecutionFactory.java Tue Jan 29 20:27:24 2013
@@ -183,16 +183,36 @@ public class UpdateExecutionFactory
*/
public static UpdateProcessor createRemote(Update update, String remoteEndpoint)
{
- return createRemote(new UpdateRequest(update), remoteEndpoint) ;
+ return createRemote(update, remoteEndpoint, null) ;
}
-
+
+ /** Create an UpdateProcessor that send the update to a remote SPARQL Update service.
+ * @param update
+ * @param remoteEndpoint
+ * @param context
+ */
+ public static UpdateProcessor createRemote(Update update, String remoteEndpoint, Context context)
+ {
+ return createRemote(new UpdateRequest(update), remoteEndpoint, context) ;
+ }
+
/** Create an UpdateProcessor that send the update request to a remote SPARQL Update service.
* @param updateRequest
* @param remoteEndpoint
*/
public static UpdateProcessor createRemote(UpdateRequest updateRequest, String remoteEndpoint)
{
- return new UpdateProcessRemote(updateRequest, remoteEndpoint) ;
+ return new UpdateProcessRemote(updateRequest, remoteEndpoint, null) ;
+ }
+
+ /** Create an UpdateProcessor that send the update request to a remote SPARQL Update service.
+ * @param updateRequest
+ * @param remoteEndpoint
+ * @param context
+ */
+ public static UpdateProcessor createRemote(UpdateRequest updateRequest, String remoteEndpoint, Context context)
+ {
+ return new UpdateProcessRemote(updateRequest, remoteEndpoint, context) ;
}
/** Create an UpdateProcessor that send the update request to a remote SPARQL Update service using an HTML form
@@ -201,7 +221,17 @@ public class UpdateExecutionFactory
*/
public static UpdateProcessor createRemoteForm(Update update, String remoteEndpoint)
{
- return new UpdateProcessRemoteForm(new UpdateRequest(update), remoteEndpoint) ;
+ return createRemoteForm(update, remoteEndpoint, null) ;
+ }
+
+ /** Create an UpdateProcessor that send the update request to a remote SPARQL Update service using an HTML form
+ * @param update
+ * @param remoteEndpoint
+ * @param context
+ */
+ public static UpdateProcessor createRemoteForm(Update update, String remoteEndpoint, Context context)
+ {
+ return new UpdateProcessRemoteForm(new UpdateRequest(update), remoteEndpoint, null) ;
}
/** Create an UpdateProcessor that send the update request to a remote SPARQL Update service using an HTML form
@@ -210,6 +240,16 @@ public class UpdateExecutionFactory
*/
public static UpdateProcessor createRemoteForm(UpdateRequest updateRequest, String remoteEndpoint)
{
- return new UpdateProcessRemoteForm(updateRequest, remoteEndpoint) ;
+ return createRemoteForm(updateRequest, remoteEndpoint, null) ;
+ }
+
+ /** Create an UpdateProcessor that send the update request to a remote SPARQL Update service using an HTML form
+ * @param updateRequest
+ * @param remoteEndpoint
+ * @param context
+ */
+ public static UpdateProcessor createRemoteForm(UpdateRequest updateRequest, String remoteEndpoint, Context context)
+ {
+ return new UpdateProcessRemoteForm(updateRequest, remoteEndpoint, context) ;
}
}
Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/io/BufferingWriter.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/io/BufferingWriter.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/io/BufferingWriter.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/io/BufferingWriter.java Tue Jan 29 20:27:24 2013
@@ -57,7 +57,7 @@ public final class BufferingWriter exten
// ***** Suspiciously slow.
// ***** DO NOT USE
// Better to buffer in character space the convert in larger blocks.
- // Standard java I/O is preeety good for that.
+ // Standard java I/O is pretty good for that.
// Split:
// 1/ A buffering writer that wraps a writer
// (Use BufferedWriter or maybe own version without the hidden synchronize's)
Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/io/IndentedWriter.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/io/IndentedWriter.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/io/IndentedWriter.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/io/IndentedWriter.java Tue Jan 29 20:27:24 2013
@@ -237,19 +237,23 @@ public class IndentedWriter
public int getRow() { return row ; }
public int getCol() { return column ; }
- public int getIndent() { return currentIndent ; }
+ /** @deprecated Use getAbsoluteIndent() */
+ @Deprecated
+ public int getIndent() { return currentIndent ; }
+ public int getAbsoluteIndent() { return currentIndent ; }
+ public void setAbsoluteIndent(int x) { currentIndent = x ; }
+
/** Position past current indent */
public int getCurrentOffset()
{
- int x = getCol() - getIndent() ;
+ int x = getCol() - getAbsoluteIndent() ;
if ( x >= 0 )
return x ;
// At start of line somehow.
return 0 ;
}
-
public boolean hasLineNumbers()
{
return lineNumbers ;
@@ -292,8 +296,6 @@ public class IndentedWriter
public void setUnitIndent(int x) { unitIndent = x ; }
public int getUnitIndent() { return unitIndent ; }
- public void setAbsoluteIndent(int x) { currentIndent = x ; }
-
public boolean atLineStart() { return startingNewLine ; }
private void lineStart()
Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/iterator/Iter.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/iterator/Iter.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/iterator/Iter.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/iterator/Iter.java Tue Jan 29 20:27:24 2013
@@ -464,19 +464,24 @@ public class Iter<T> implements Iterable
public static <T> Iterator<T> convert(Iterator<?> iterator) { return (Iterator<T>)iterator ; }
/** Count the iterable - many iterable objects have a .size() operation which should be used in preference to this explicit counting operation */
- public static <T> long count(Iterable<T> iterator)
+ public static <T> long count(Iterable<T> iterable)
{
- ActionCount<T> action = new ActionCount<T>() ;
- Iter.apply(iterator, action) ;
- return action.getCount() ;
+ return count(iterable.iterator()) ;
}
/** Count the iterator (this is destructive on the iterator) */
public static <T> long count(Iterator<T> iterator)
{
- ActionCount<T> action = new ActionCount<T>() ;
- Iter.apply(iterator, action) ;
- return action.getCount() ;
+ long x = 0 ;
+ while ( iterator.hasNext() )
+ {
+ iterator.next();
+ x++ ;
+ }
+ return x ;
+// ActionCount<T> action = new ActionCount<T>() ;
+// Iter.apply(iterator, action) ;
+// return action.getCount() ;
}
// --- Consume the iterator.
Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/lib/Chars.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/lib/Chars.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/lib/Chars.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/lib/Chars.java Tue Jan 29 20:27:24 2013
@@ -183,6 +183,7 @@ public class Chars
public static final int UNSET = -2 ;
public static final char NL = '\n' ;
public static final char CR = '\r' ;
+ public static final char BSPACE = '\b' ;
public static final char CH_ZERO = (char)0 ;
Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/RiotReader.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/RiotReader.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/RiotReader.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/RiotReader.java Tue Jan 29 20:27:24 2013
@@ -35,12 +35,23 @@ import org.apache.jena.atlas.io.PeekRead
import org.apache.jena.atlas.iterator.IteratorResourceClosing ;
import org.apache.jena.atlas.json.io.parser.TokenizerJSON ;
import org.apache.jena.atlas.lib.Sink ;
-import org.apache.jena.riot.lang.* ;
-import org.apache.jena.riot.system.* ;
+import org.apache.jena.riot.lang.LangNQuads ;
+import org.apache.jena.riot.lang.LangNTriples ;
+import org.apache.jena.riot.lang.LangRDFJSON ;
+import org.apache.jena.riot.lang.LangRDFXML ;
+import org.apache.jena.riot.lang.LangRIOT ;
+import org.apache.jena.riot.lang.LangTriG ;
+import org.apache.jena.riot.lang.LangTurtle ;
+import org.apache.jena.riot.lang.PipedQuadsStream ;
+import org.apache.jena.riot.lang.PipedRDFIterator ;
+import org.apache.jena.riot.lang.PipedTriplesStream ;
+import org.apache.jena.riot.system.ErrorHandlerFactory ;
+import org.apache.jena.riot.system.IRIResolver ;
+import org.apache.jena.riot.system.RiotLib ;
+import org.apache.jena.riot.system.StreamRDF ;
+import org.apache.jena.riot.system.StreamRDFLib ;
import org.apache.jena.riot.tokens.Tokenizer ;
import org.apache.jena.riot.tokens.TokenizerFactory ;
-import org.openjena.riot.RiotQuadParsePuller ;
-import org.openjena.riot.RiotTripleParsePuller ;
import com.hp.hpl.jena.graph.Triple ;
import com.hp.hpl.jena.sparql.core.Quad ;
@@ -225,8 +236,14 @@ public class RiotReader
parse(in, lang, baseIRI, dest) ;
}
- // TODO create a Tokenizer version of this method
- public static Iterator<Triple> createIteratorTriples(InputStream input, Lang lang, String baseIRI)
+ /**
+ * Create an iterator over the parsed triples
+ * @param input Input Stream
+ * @param lang Language
+ * @param baseIRI Base IRI
+ * @return Iterator over the triples
+ */
+ public static Iterator<Triple> createIteratorTriples(final InputStream input, final Lang lang, final String baseIRI)
{
// Special case N-Triples, because the RIOT reader has a pull interface
if ( RDFLanguages.sameLang(RDFLanguages.NTRIPLES, lang) )
@@ -236,26 +253,54 @@ public class RiotReader
else
{
// Otherwise, we have to spin up a thread to deal with it
- RiotTripleParsePuller parsePuller = new RiotTripleParsePuller(input, lang, baseIRI);
- parsePuller.parse();
- return parsePuller;
+ final PipedRDFIterator<Triple> it = new PipedRDFIterator<Triple>();
+ final PipedTriplesStream out = new PipedTriplesStream(it);
+
+ Thread t = new Thread(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ parse(input, lang, baseIRI, out);
+ }
+ });
+ t.start();
+
+ return it;
}
}
-
- // TODO create a Tokenizer version of this method
- public static Iterator<Quad> createIteratorQuads(InputStream input, Lang lang, String baseIRI)
+
+ /**
+ * Creates an iterator over the parsed quads
+ * @param input Input Stream
+ * @param lang Language
+ * @param baseIRI Base IRI
+ * @return Iterator over the quads
+ */
+ public static Iterator<Quad> createIteratorQuads(final InputStream input, final Lang lang, final String baseIRI)
{
// Special case N-Quads, because the RIOT reader has a pull interface
- if ( RDFLanguages.sameLang(RDFLanguages.NTRIPLES, lang) )
+ if ( RDFLanguages.sameLang(RDFLanguages.NQUADS, lang) )
{
return new IteratorResourceClosing<Quad>(createParserNQuads(input, null), input);
}
else
{
// Otherwise, we have to spin up a thread to deal with it
- RiotQuadParsePuller parsePuller = new RiotQuadParsePuller(input, lang, baseIRI);
- parsePuller.parse();
- return parsePuller;
+ final PipedRDFIterator<Quad> it = new PipedRDFIterator<Quad>();
+ final PipedQuadsStream out = new PipedQuadsStream(it);
+
+ Thread t = new Thread(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ parse(input, lang, baseIRI, out);
+ }
+ });
+ t.start();
+
+ return it;
}
}
Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFmtLib.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFmtLib.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFmtLib.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFmtLib.java Tue Jan 29 20:27:24 2013
@@ -32,7 +32,8 @@ import org.apache.jena.atlas.lib.Chars ;
import org.apache.jena.iri.IRI ;
import org.apache.jena.iri.IRIFactory ;
import org.apache.jena.iri.IRIRelativize ;
-import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMap;
+import org.apache.jena.riot.system.PrefixMapFactory;
import org.apache.jena.riot.system.Prologue ;
import org.apache.jena.riot.system.RiotChars ;
@@ -46,7 +47,7 @@ public class NodeFmtLib
// See OutputLangUtils.
// See and use EscapeStr
- static PrefixMap dftPrefixMap = new PrefixMap() ;
+ static PrefixMap dftPrefixMap = PrefixMapFactory.createForOutput() ;
static {
PrefixMapping pm = ARQConstants.getGlobalPrefixMap() ;
Map<String, String> map = pm.getNsPrefixMap() ;
Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFormatterTTL.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFormatterTTL.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFormatterTTL.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFormatterTTL.java Tue Jan 29 20:27:24 2013
@@ -30,7 +30,8 @@ import org.apache.jena.atlas.lib.Pair ;
import org.apache.jena.iri.IRI ;
import org.apache.jena.iri.IRIFactory ;
import org.apache.jena.iri.IRIRelativize ;
-import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMap;
+import org.apache.jena.riot.system.PrefixMapFactory;
import org.apache.jena.riot.system.RiotChars ;
public class NodeFormatterTTL extends NodeFormatterNT
@@ -43,7 +44,7 @@ public class NodeFormatterTTL extends No
{
super(false) ;
if ( prefixMap == null )
- prefixMap = new PrefixMap() ;
+ prefixMap = PrefixMapFactory.createForOutput() ;
this.prefixMap = prefixMap ;
this.baseIRI = baseIRI ;
}
Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputLangUtils.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputLangUtils.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputLangUtils.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputLangUtils.java Tue Jan 29 20:27:24 2013
@@ -30,7 +30,7 @@ import org.apache.jena.atlas.io.OutputUt
import org.apache.jena.iri.IRI ;
import org.apache.jena.iri.IRIFactory ;
import org.apache.jena.iri.IRIRelativize ;
-import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMap;
import org.apache.jena.riot.system.Prologue ;
import org.apache.jena.riot.system.SyntaxLabels ;
Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputPolicy.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputPolicy.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputPolicy.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputPolicy.java Tue Jan 29 20:27:24 2013
@@ -18,7 +18,7 @@
package org.apache.jena.riot.out;
-import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMap;
public class OutputPolicy
{
Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputProfile.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputProfile.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputProfile.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputProfile.java Tue Jan 29 20:27:24 2013
@@ -18,7 +18,7 @@
package org.apache.jena.riot.out;
-import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMap;
import org.apache.jena.riot.system.Prologue ;
public class OutputProfile
Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/Prologue.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/Prologue.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/Prologue.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/Prologue.java Tue Jan 29 20:27:24 2013
@@ -18,9 +18,6 @@
package org.apache.jena.riot.system;
-import java.util.Map ;
-import java.util.Map.Entry ;
-
import org.apache.jena.iri.IRI ;
import com.hp.hpl.jena.shared.PrefixMapping ;
@@ -38,10 +35,7 @@ public class Prologue
PrefixMap pmap = null ;
if ( pmapping != null )
{
- pmap = new PrefixMap() ;
- Map<String, String> x = pmapping.getNsPrefixMap() ;
- for ( Entry<String, String> e : x.entrySet() )
- pmap.add(e.getKey(), e.getValue()) ;
+ pmap = PrefixMapFactory.createForInput(pmapping) ;
}
IRIResolver resolver = null ;
if ( base != null )
@@ -51,7 +45,7 @@ public class Prologue
public Prologue()
{
- this.prefixMap = new PrefixMap() ;
+ this.prefixMap = PrefixMapFactory.createForInput() ;
this.resolver = null ;
}
@@ -69,14 +63,14 @@ public class Prologue
public Prologue copy()
{
- PrefixMap prefixMap = new PrefixMap(this.prefixMap) ;
+ PrefixMap prefixMap = PrefixMapFactory.createForInput(this.prefixMap) ;
return new Prologue(prefixMap, resolver) ;
}
public void usePrologueFrom(Prologue other)
{
// Copy.
- prefixMap = new PrefixMap(other.prefixMap) ;
+ prefixMap = PrefixMapFactory.createForInput(other.prefixMap) ;
seenBaseURI = false ;
if ( other.resolver != null )
resolver = IRIResolver.create(other.resolver.getBaseIRIasString()) ;
@@ -90,7 +84,7 @@ public class Prologue
// New prefix mappings
PrefixMap ext = getPrefixMap() ;
if ( newMappings != null )
- ext = new PrefixMap2(ext) ;
+ ext = PrefixMapFactory.extend(ext) ;
// New base.
IRIResolver r = resolver ;
if ( base != null )
Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/RiotLib.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/RiotLib.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/RiotLib.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/RiotLib.java Tue Jan 29 20:27:24 2013
@@ -106,9 +106,9 @@ public class RiotLib
{
Prologue prologue ;
if ( resolveIRIs )
- prologue = new Prologue(new PrefixMap(), IRIResolver.create(baseIRI)) ;
+ prologue = new Prologue(PrefixMapFactory.createForInput(), IRIResolver.create(baseIRI)) ;
else
- prologue = new Prologue(new PrefixMap(), IRIResolver.createNoResolve()) ;
+ prologue = new Prologue(PrefixMapFactory.createForInput(), IRIResolver.createNoResolve()) ;
if ( checking )
return new ParserProfileChecker(prologue, handler) ;
Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/StreamRDFLib.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/StreamRDFLib.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/StreamRDFLib.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/StreamRDFLib.java Tue Jan 29 20:27:24 2013
@@ -20,7 +20,6 @@ package org.apache.jena.riot.system;
import org.apache.jena.atlas.lib.Sink ;
import org.apache.jena.atlas.lib.Tuple ;
-import org.apache.jena.riot.SysRIOT ;
import org.apache.jena.riot.lang.RDFParserOutputCounting ;
import com.hp.hpl.jena.graph.Graph ;
@@ -40,7 +39,7 @@ public class StreamRDFLib
public static StreamRDF dataset(DatasetGraph dataset) { return new ParserOutputDataset(dataset) ; }
/**
- * Outpout to a sink; prefix and base handled only within the parser.
+ * Output to a sink; prefix and base handled only within the parser.
* Unfortunately, Java needs different names for the triples and
* quads versions because of type erasure.
*/
@@ -67,19 +66,7 @@ public class StreamRDFLib
public static RDFParserOutputCounting count(StreamRDF other)
{ return new ParserOutputCountingBase(other) ; }
-// private static class ParserOutputSink implements StreamRDF
-// {
-// public ParserOutputSink () {}
-// @Override public void start() {}
-// @Override public void triple(Triple triple) {}
-// @Override public void quad(Quad quad) {}
-// @Override public void tuple(Tuple<Node> tuple) {}
-// @Override public void base(String base) {}
-// @Override public void prefix(String prefix, String iri) {}
-// @Override public void finish() {}
-// }
-
- private static class ParserOutputSinkTriplesToQuads extends StreamRDFWarpper
+ private static class ParserOutputSinkTriplesToQuads extends StreamRDFWrapper
{
private final Node gn ;
ParserOutputSinkTriplesToQuads(Node gn, StreamRDF base)
@@ -88,7 +75,6 @@ public class StreamRDFLib
@Override public void triple(Triple triple)
{ sink.quad(new Quad(gn, triple)) ; }
}
-
private static class ParserOutputSinkTriples extends StreamRDFBase
{
@@ -136,7 +122,11 @@ public class StreamRDFLib
else
{
if ( ! warningIssued )
- SysRIOT.getLogger().warn("Only triples or default graph data expected : named graph data ignored") ;
+ {
+ //SysRIOT.getLogger().warn("Only triples or default graph data expected : named graph data ignored") ;
+ // Not ideal - assumes the global default.
+ ErrorHandlerFactory.getDefaultErrorHandler().warning("Only triples or default graph data expected : named graph data ignored", -1, -1) ;
+ }
warningIssued = true ;
}
//throw new IllegalStateException("Quad passed to graph parsing") ;
@@ -158,7 +148,8 @@ public class StreamRDFLib
@Override public void triple(Triple triple)
{
- throw new IllegalStateException("Triple passed to dataset parsing") ;
+ dsg.add(Quad.defaultGraphNodeGenerated, triple.getSubject(), triple.getPredicate(), triple.getObject()) ;
+ //throw new IllegalStateException("Triple passed to dataset parsing") ;
}
@Override public void quad(Quad quad)
@@ -178,7 +169,7 @@ public class StreamRDFLib
}
}
- private static class ParserOutputCountingBase extends StreamRDFWarpper implements StreamRDF, RDFParserOutputCounting
+ private static class ParserOutputCountingBase extends StreamRDFWrapper implements StreamRDF, RDFParserOutputCounting
{
private long countTriples = 0 ;
private long countQuads = 0 ;
Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/tokens/Token.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/tokens/Token.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/tokens/Token.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/tokens/Token.java Tue Jan 29 20:27:24 2013
@@ -46,7 +46,7 @@ import org.apache.jena.atlas.io.PeekRead
import org.apache.jena.atlas.iterator.Iter ;
import org.apache.jena.atlas.lib.Pair ;
import org.apache.jena.riot.RiotException ;
-import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMap;
import org.apache.jena.riot.system.Prologue ;
import com.hp.hpl.jena.datatypes.RDFDatatype ;
Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/tokens/TokenizerText.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/tokens/TokenizerText.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/tokens/TokenizerText.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/tokens/TokenizerText.java Tue Jan 29 20:27:24 2013
@@ -539,11 +539,7 @@ public final class TokenizerText impleme
PERCENT ::= '%' HEX HEX
HEX ::= [0-9] | [A-F] | [a-f]
PN_LOCAL_ESC ::= '\' ( '_' | '~' | '.' | '-' | '!' | '$' | '&' | "'" | '(' | ')' | '*' | '+' | ',' | ';' | '=' | '/' | '?' | '#' | '@' | '%' )
-
*/
-
-
-
private String readPrefixPart()
{ return readSegment(false) ; }
@@ -1195,6 +1191,7 @@ public final class TokenizerText impleme
case 'r': return CR ;
case 't': return '\t' ;
case 'f': return '\f' ;
+ case 'b': return BSPACE ;
case '"': return '"' ;
case '\'': return '\'' ;
case '\\': return '\\' ;
Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/web/HttpOp.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/web/HttpOp.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/web/HttpOp.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/web/HttpOp.java Tue Jan 29 20:27:24 2013
@@ -43,6 +43,7 @@ import org.apache.http.entity.InputStrea
import org.apache.http.entity.StringEntity ;
import org.apache.http.impl.client.SystemDefaultHttpClient ;
import org.apache.http.message.BasicNameValuePair ;
+import org.apache.http.protocol.HttpContext;
import org.apache.jena.atlas.io.IO ;
import org.apache.jena.atlas.lib.Pair ;
import org.apache.jena.atlas.web.HttpException ;
@@ -173,7 +174,7 @@ public class HttpOp
//TODO Use MediaType
public static void execHttpPost(String url, String contentType, String content)
{
- execHttpPost(url, contentType, content, null, null) ;
+ execHttpPost(url, contentType, content, null, null, null) ;
}
/** POST without response body.
@@ -189,17 +190,21 @@ public class HttpOp
}
- /** POST a string, expect a response body.*/
- public static void execHttpPost(String url,
- String contentType, String content,
- String acceptType, Map<String, HttpResponseHandler> handlers)
+ /** POST a string, expect a response body.
+ * <p>Additional headers e.g. for authentication can be injected through an
+ * {@link HttpContext}.
+ */
+ public static void execHttpPost(String url, String contentType,
+ String content, String acceptType,
+ Map<String, HttpResponseHandler> handlers,
+ HttpContext httpContext)
{
StringEntity e = null ;
try
{
e = new StringEntity(content, "UTF-8") ;
e.setContentType(contentType) ;
- execHttpPost(url, e, acceptType, handlers) ;
+ execHttpPost(url, e, acceptType, handlers, httpContext) ;
} catch (UnsupportedEncodingException e1)
{ throw new ARQInternalErrorException("Platform does not support required UTF-8") ; }
finally { closeEntity(e) ; }
@@ -216,7 +221,7 @@ public class HttpOp
InputStreamEntity e = new InputStreamEntity(input, length) ;
e.setContentType(contentType) ;
e.setContentEncoding("UTF-8") ;
- execHttpPost(url, e, acceptType, handlers) ;
+ execHttpPost(url, e, acceptType, handlers, null) ;
}
/** POST with response body */
@@ -227,17 +232,17 @@ public class HttpOp
EntityTemplate entity = new EntityTemplate(provider) ;
entity.setContentType(contentType) ;
try {
- execHttpPost(url, entity, acceptType, handlers) ;
+ execHttpPost(url, entity, acceptType, handlers, null) ;
} finally { closeEntity(entity) ; }
}
/** POST with response body.
* <p>The content for the POST body comes from the HttpEntity.
* <p>The response is handled bythe handler map, as per {@link #execHttpGet(String, String, Map)}
+ * <p>Additional headers e.g. for authentication can be injected through an {@link HttpContext}
*/
- public static void execHttpPost(String url,
- HttpEntity provider,
- String acceptType, Map<String, HttpResponseHandler> handlers)
+ public static void execHttpPost(String url, HttpEntity provider, String acceptType,
+ Map<String, HttpResponseHandler> handlers, HttpContext context)
{
try {
long id = counter.incrementAndGet() ;
@@ -254,7 +259,7 @@ public class HttpOp
// Execute
HttpClient httpclient = new SystemDefaultHttpClient();
httppost.setEntity(provider) ;
- HttpResponse response = httpclient.execute(httppost) ;
+ HttpResponse response = httpclient.execute(httppost, context) ;
httpResponse(id, response, baseIRI, handlers) ;
httpclient.getConnectionManager().shutdown();
@@ -263,7 +268,15 @@ public class HttpOp
}
/** Execute an HTTP POST form operation */
- public static void execHttpPostForm(String url, List<Pair<String, String>> params, Map<String, HttpResponseHandler> handlers)
+ public static void execHttpPostForm(String url, List<Pair<String, String>> params,
+ Map<String, HttpResponseHandler> handlers)
+ {
+ execHttpPostForm(url, params, handlers, null) ;
+ }
+ /** Execute an HTTP POST form operation */
+ public static void execHttpPostForm(String url, List<Pair<String, String>> params,
+ Map<String, HttpResponseHandler> handlers,
+ HttpContext httpContext)
{
try {
long id = counter.incrementAndGet() ;
@@ -276,7 +289,7 @@ public class HttpOp
log.debug(format("[%d] %s %s",id ,httppost.getMethod(),httppost.getURI().toString())) ;
HttpClient httpclient = new SystemDefaultHttpClient();
- HttpResponse response = httpclient.execute(httppost) ;
+ HttpResponse response = httpclient.execute(httppost, httpContext) ;
httpResponse(id, response, baseIRI, handlers) ;
httpclient.getConnectionManager().shutdown();
} catch (IOException ex) { IO.exception(ex) ; }
Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/openjena/riot/RiotReader.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/openjena/riot/RiotReader.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/openjena/riot/RiotReader.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/openjena/riot/RiotReader.java Tue Jan 29 20:27:24 2013
@@ -32,8 +32,21 @@ import org.apache.jena.atlas.lib.Sink ;
import org.apache.jena.riot.Lang ;
import org.apache.jena.riot.RDFDataMgr ;
import org.apache.jena.riot.RDFLanguages ;
-import org.apache.jena.riot.lang.* ;
-import org.apache.jena.riot.system.* ;
+import org.apache.jena.riot.lang.LangNQuads ;
+import org.apache.jena.riot.lang.LangNTriples ;
+import org.apache.jena.riot.lang.LangRDFJSON ;
+import org.apache.jena.riot.lang.LangRDFXML ;
+import org.apache.jena.riot.lang.LangRIOT ;
+import org.apache.jena.riot.lang.LangTriG ;
+import org.apache.jena.riot.lang.LangTurtle ;
+import org.apache.jena.riot.lang.PipedQuadsStream ;
+import org.apache.jena.riot.lang.PipedRDFIterator ;
+import org.apache.jena.riot.lang.PipedTriplesStream ;
+import org.apache.jena.riot.system.ErrorHandlerFactory ;
+import org.apache.jena.riot.system.IRIResolver ;
+import org.apache.jena.riot.system.RiotLib ;
+import org.apache.jena.riot.system.StreamRDF ;
+import org.apache.jena.riot.system.StreamRDFLib ;
import org.apache.jena.riot.tokens.Tokenizer ;
import org.apache.jena.riot.tokens.TokenizerFactory ;
@@ -198,8 +211,7 @@ public class RiotReader
return org.apache.jena.riot.RiotReader.createParser(tokenizer, lang, baseIRI, dest) ;
}
- // TODO create a Tokenizer version of this method
- public static Iterator<Triple> createIteratorTriples(InputStream input, Lang lang, String baseIRI)
+ public static Iterator<Triple> createIteratorTriples(final InputStream input, final Lang lang, final String baseIRI)
{
// Special case N-Triples, because the RIOT reader has a pull interface
if ( RDFLanguages.sameLang(RDFLanguages.NTRIPLES, lang) )
@@ -209,9 +221,20 @@ public class RiotReader
else
{
// Otherwise, we have to spin up a thread to deal with it
- RiotTripleParsePuller parsePuller = new RiotTripleParsePuller(input, lang, baseIRI);
- parsePuller.parse();
- return parsePuller;
+ final PipedRDFIterator<Triple> it = new PipedRDFIterator<Triple>();
+ final PipedTriplesStream out = new PipedTriplesStream(it);
+
+ Thread t = new Thread(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ parseTriples(input, lang, baseIRI, out);
+ }
+ });
+ t.start();
+
+ return it;
}
}
@@ -235,8 +258,7 @@ public class RiotReader
return createParserTriples(tokenizer, lang, baseIRI, dest) ;
}
- // TODO create a Tokenizer version of this method
- public static Iterator<Quad> createIteratorQuads(InputStream input, Lang lang, String baseIRI)
+ public static Iterator<Quad> createIteratorQuads(final InputStream input, final Lang lang, final String baseIRI)
{
// Special case N-Quads, because the RIOT reader has a pull interface
if ( RDFLanguages.sameLang(RDFLanguages.NTRIPLES, lang) )
@@ -246,9 +268,20 @@ public class RiotReader
else
{
// Otherwise, we have to spin up a thread to deal with it
- RiotQuadParsePuller parsePuller = new RiotQuadParsePuller(input, lang, baseIRI);
- parsePuller.parse();
- return parsePuller;
+ final PipedRDFIterator<Quad> it = new PipedRDFIterator<Quad>();
+ final PipedQuadsStream out = new PipedQuadsStream(it);
+
+ Thread t = new Thread(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ parseQuads(input, lang, baseIRI, out);
+ }
+ });
+ t.start();
+
+ return it;
}
}
Modified: jena/branches/streaming-update/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/binding/TestBindingStreams.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/binding/TestBindingStreams.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/binding/TestBindingStreams.java (original)
+++ jena/branches/streaming-update/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/binding/TestBindingStreams.java Tue Jan 29 20:27:24 2013
@@ -26,7 +26,8 @@ import java.util.List ;
import junit.framework.JUnit4TestAdapter ;
import org.apache.jena.atlas.junit.BaseTest ;
import org.apache.jena.riot.RiotException ;
-import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMap;
+import org.apache.jena.riot.system.PrefixMapFactory;
import org.apache.jena.riot.tokens.Tokenizer ;
import org.apache.jena.riot.tokens.TokenizerFactory ;
import org.junit.AfterClass ;
@@ -70,7 +71,7 @@ public class TestBindingStreams extends
static Binding bb2 = build("(?a 'a\"b\"c') (?b 1)");
static Binding bb3 = build("(?a 'aΩc') (?b 1)");
- static PrefixMap pmap = new PrefixMap() ;
+ static PrefixMap pmap = PrefixMapFactory.create() ;
static {
pmap.add(":", "http://example/") ;
}
Modified: jena/branches/streaming-update/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/index/TestIndexTable.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/index/TestIndexTable.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/index/TestIndexTable.java (original)
+++ jena/branches/streaming-update/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/index/TestIndexTable.java Tue Jan 29 20:27:24 2013
@@ -48,7 +48,8 @@ import static com.hp.hpl.jena.reasoner.r
* {@link com.hp.hpl.jena.sparql.engine.index.LinearIndex} classes. Also tests
* that the {@link com.hp.hpl.jena.sparql.engine.index.IndexFactory} instantiates
* the correct type of index depending on the data.
- * @author Paul Gearon
+ *
+ * Contribution from Paul Gearon
*/
public class TestIndexTable {