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 2012/05/18 04:46:02 UTC
svn commit: r1339955 - in
/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql:
engine/QueryExecutionBase.java util/ModelUtils.java
Author: sallen
Date: Fri May 18 02:46:02 2012
New Revision: 1339955
URL: http://svn.apache.org/viewvc?rev=1339955&view=rev
Log:
Added utility methods to convert iterators of Triples to Statements and vice-versa.
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/QueryExecutionBase.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/ModelUtils.java
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/QueryExecutionBase.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/QueryExecutionBase.java?rev=1339955&r1=1339954&r2=1339955&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/QueryExecutionBase.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/QueryExecutionBase.java Fri May 18 02:46:02 2012
@@ -24,12 +24,8 @@ import java.util.List ;
import java.util.Set ;
import java.util.concurrent.TimeUnit ;
-import org.openjena.atlas.iterator.Iter ;
-import org.openjena.atlas.iterator.IteratorResourceClosing ;
-import org.openjena.atlas.iterator.Transform ;
import org.openjena.atlas.lib.AlarmClock ;
import org.openjena.atlas.lib.Callback ;
-import org.openjena.atlas.lib.Closeable ;
import org.openjena.atlas.lib.Pingback ;
import org.openjena.atlas.logging.Log ;
@@ -48,7 +44,6 @@ import com.hp.hpl.jena.rdf.model.ModelFa
import com.hp.hpl.jena.rdf.model.RDFNode ;
import com.hp.hpl.jena.rdf.model.Resource ;
import com.hp.hpl.jena.rdf.model.Statement ;
-import com.hp.hpl.jena.rdf.model.StmtIterator ;
import com.hp.hpl.jena.shared.PrefixMapping ;
import com.hp.hpl.jena.sparql.ARQConstants ;
import com.hp.hpl.jena.sparql.core.DatasetGraph ;
@@ -361,26 +356,7 @@ public class QueryExecutionBase implemen
@Override
public Iterator<Triple> execDescribeTriples()
{
- Model model = execDescribe() ;
-
- // TODO Is this the best way to get an Iterator<Triple> out of a model?
- final StmtIterator it = model.listStatements() ;
- return new IteratorResourceClosing<Triple>(Iter.map(it, new Transform<Statement, Triple>()
- {
- @Override
- public Triple convert(Statement item)
- {
- return item.asTriple() ;
- }
- }),
- new Closeable()
- {
- @Override
- public void close()
- {
- it.close() ;
- }
- });
+ return ModelUtils.statementsToTriples(execDescribe().listStatements());
}
@Override
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/ModelUtils.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/ModelUtils.java?rev=1339955&r1=1339954&r2=1339955&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/ModelUtils.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/ModelUtils.java Fri May 18 02:46:02 2012
@@ -18,15 +18,25 @@
package com.hp.hpl.jena.sparql.util;
+import java.util.Iterator ;
+
+import org.openjena.atlas.iterator.Iter ;
+import org.openjena.atlas.iterator.IteratorResourceClosing ;
+import org.openjena.atlas.iterator.Transform ;
+import org.openjena.atlas.lib.Closeable ;
+
import com.hp.hpl.jena.graph.Node ;
import com.hp.hpl.jena.graph.Triple ;
import com.hp.hpl.jena.query.QueryException ;
import com.hp.hpl.jena.rdf.model.Model ;
import com.hp.hpl.jena.rdf.model.RDFNode ;
import com.hp.hpl.jena.rdf.model.Statement ;
+import com.hp.hpl.jena.rdf.model.StmtIterator;
import com.hp.hpl.jena.rdf.model.impl.LiteralImpl ;
import com.hp.hpl.jena.rdf.model.impl.ResourceImpl ;
+import com.hp.hpl.jena.rdf.model.impl.StmtIteratorImpl ;
import com.hp.hpl.jena.sparql.ARQInternalErrorException ;
+import com.hp.hpl.jena.util.iterator.ClosableIterator ;
public class ModelUtils
@@ -78,5 +88,60 @@ public class ModelUtils
// Statement stmt = model.createStatement((Resource)s, (Property)p, o) ;
// return stmt ;
}
+
+
+ public static StmtIterator triplesToStatements(final Iterator<Triple> it, final Model refModel)
+ {
+ return new StmtIteratorImpl(Iter.map(it, new Transform<Triple,Statement>()
+ {
+ @Override
+ public Statement convert(Triple item)
+ {
+ return refModel.asStatement(item);
+ }
+ }))
+ {
+ // Make sure to close the incoming iterator
+ @Override
+ public void close()
+ {
+ if (it instanceof ClosableIterator<?>)
+ {
+ ((ClosableIterator<?>)it).close();
+ }
+ else
+ {
+ Iter.close(it);
+ }
+ }
+ };
+ }
+
+ public static Iterator<Triple> statementsToTriples(final Iterator<Statement> it)
+ {
+ return new IteratorResourceClosing<Triple>(Iter.map(it, new Transform<Statement,Triple>()
+ {
+ @Override
+ public Triple convert(Statement item)
+ {
+ return item.asTriple();
+ }
+ }),
+ new Closeable()
+ {
+ @Override
+ public void close()
+ {
+ if (it instanceof ClosableIterator<?>)
+ {
+ ((ClosableIterator<?>)it).close();
+ }
+ else
+ {
+ Iter.close(it);
+ }
+ }
+ });
+ }
}