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 2011/10/27 22:49:39 UTC
svn commit: r1190018 - in /incubator/jena/Jena2/ARQ/trunk/src:
main/java/com/hp/hpl/jena/sparql/algebra/
main/java/com/hp/hpl/jena/sparql/algebra/op/
main/java/com/hp/hpl/jena/sparql/algebra/optimize/
main/java/com/hp/hpl/jena/sparql/engine/main/ main/...
Author: andy
Date: Thu Oct 27 20:49:38 2011
New Revision: 1190018
URL: http://svn.apache.org/viewvc?rev=1190018&view=rev
Log:
Add OpQuad ; Create (triple,quad) block to join converter.
Added:
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpQuad.java (with props)
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPattern2Join.java (with props)
incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/algebra/optimize/TestPattern2Join.java (with props)
Modified:
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/OpAsQuery.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/OpVisitor.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/OpVisitorBase.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/OpVisitorByType.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/Transform.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/TransformBase.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/TransformCopy.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/TransformWrapper.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpBase.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpDatasetNames.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpJoin.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpQuadPattern.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/main/ExecutionDispatch.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/main/OpExecutor.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/ref/EvaluatorDispatch.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/Tags.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderOp.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/writers/WriterOp.java
incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/algebra/TS_Algebra.java
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/OpAsQuery.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/OpAsQuery.java?rev=1190018&r1=1190017&r2=1190018&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/OpAsQuery.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/OpAsQuery.java Thu Oct 27 20:49:38 2011
@@ -122,6 +122,11 @@ public class OpAsQuery
{ currentGroup().addElement(process(opTriple.getTriple())) ; }
@Override
+ public void visit(OpQuad opQuad)
+ { throw new ARQNotImplemented("OpQuad") ; }
+
+
+ @Override
public void visit(OpProcedure opProcedure)
{
throw new ARQNotImplemented("OpProcedure") ;
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/OpVisitor.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/OpVisitor.java?rev=1190018&r1=1190017&r2=1190018&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/OpVisitor.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/OpVisitor.java Thu Oct 27 20:49:38 2011
@@ -26,6 +26,7 @@ public interface OpVisitor
public void visit(OpBGP opBGP) ;
public void visit(OpQuadPattern quadPattern) ;
public void visit(OpTriple opTriple) ;
+ public void visit(OpQuad opQuad) ;
public void visit(OpPath opPath) ;
public void visit(OpTable opTable) ;
public void visit(OpNull opNull) ;
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/OpVisitorBase.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/OpVisitorBase.java?rev=1190018&r1=1190017&r2=1190018&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/OpVisitorBase.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/OpVisitorBase.java Thu Oct 27 20:49:38 2011
@@ -23,132 +23,70 @@ import com.hp.hpl.jena.sparql.algebra.op
public class OpVisitorBase implements OpVisitor
{
-
- @Override
- public void visit(OpBGP opBGP)
- {}
-
- @Override
- public void visit(OpQuadPattern quadPattern)
- {}
-
- @Override
- public void visit(OpTriple opTriple)
- {}
-
- @Override
- public void visit(OpPath opPath)
- {}
-
- @Override
- public void visit(OpProcedure opProc)
- {}
-
- @Override
- public void visit(OpPropFunc opPropFunc)
- {}
-
- @Override
- public void visit(OpJoin opJoin)
- {}
-
- @Override
- public void visit(OpSequence opSequence)
- {}
-
- @Override
- public void visit(OpDisjunction opDisjunction)
- {}
-
- @Override
- public void visit(OpLeftJoin opLeftJoin)
- {}
-
- @Override
- public void visit(OpConditional opCond)
- {}
-
- @Override
- public void visit(OpMinus opMinus)
- {}
-
- @Override
- public void visit(OpDiff opDiff)
- {}
-
- @Override
- public void visit(OpUnion opUnion)
- {}
-
- @Override
- public void visit(OpFilter opFilter)
- {}
-
- @Override
- public void visit(OpGraph opGraph)
- {}
-
- @Override
- public void visit(OpService opService)
- {}
-
- @Override
- public void visit(OpDatasetNames dsNames)
- {}
-
- @Override
- public void visit(OpTable opUnit)
- {}
-
- @Override
- public void visit(OpExt opExt)
- {}
-
- @Override
- public void visit(OpNull opNull)
- {}
-
- @Override
- public void visit(OpLabel opLabel)
- {}
-
- @Override
- public void visit(OpAssign opAssign)
- {}
-
- @Override
- public void visit(OpExtend opExtend)
- {}
-
- @Override
- public void visit(OpList opList)
- {}
-
- @Override
- public void visit(OpOrder opOrder)
- {}
-
- @Override
- public void visit(OpProject opProject)
- {}
-
- @Override
- public void visit(OpDistinct opDistinct)
- {}
-
- @Override
- public void visit(OpReduced opReduced)
- {}
-
- @Override
- public void visit(OpSlice opSlice)
- {}
-
- @Override
- public void visit(OpGroup opGroup)
- {}
-
- @Override
- public void visit(OpTopN opTop)
- {}
+
+ @Override public void visit(OpBGP opBGP) {}
+
+ @Override public void visit(OpQuadPattern quadPattern) {}
+
+ @Override public void visit(OpTriple opTriple) {}
+
+ @Override public void visit(OpQuad opQuad) {}
+
+ @Override public void visit(OpPath opPath) {}
+
+ @Override public void visit(OpProcedure opProc) {}
+
+ @Override public void visit(OpPropFunc opPropFunc) {}
+
+ @Override public void visit(OpJoin opJoin) {}
+
+ @Override public void visit(OpSequence opSequence) {}
+
+ @Override public void visit(OpDisjunction opDisjunction) {}
+
+ @Override public void visit(OpLeftJoin opLeftJoin) {}
+
+ @Override public void visit(OpConditional opCond) {}
+
+ @Override public void visit(OpMinus opMinus) {}
+
+ @Override public void visit(OpDiff opDiff) {}
+
+ @Override public void visit(OpUnion opUnion) {}
+
+ @Override public void visit(OpFilter opFilter) {}
+
+ @Override public void visit(OpGraph opGraph) {}
+
+ @Override public void visit(OpService opService) {}
+
+ @Override public void visit(OpDatasetNames dsNames) {}
+
+ @Override public void visit(OpTable opTable) {}
+
+ @Override public void visit(OpExt opExt) {}
+
+ @Override public void visit(OpNull opNull) {}
+
+ @Override public void visit(OpLabel opLabel) {}
+
+ @Override public void visit(OpAssign opAssign) {}
+
+ @Override public void visit(OpExtend opExtend) {}
+
+ @Override public void visit(OpList opList) {}
+
+ @Override public void visit(OpOrder opOrder) {}
+
+ @Override public void visit(OpProject opProject) {}
+
+ @Override public void visit(OpDistinct opDistinct) {}
+
+ @Override public void visit(OpReduced opReduced) {}
+
+ @Override public void visit(OpSlice opSlice) {}
+
+ @Override public void visit(OpGroup opGroup) {}
+
+ @Override public void visit(OpTopN opTop) {}
}
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/OpVisitorByType.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/OpVisitorByType.java?rev=1190018&r1=1190017&r2=1190018&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/OpVisitorByType.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/OpVisitorByType.java Thu Oct 27 20:49:38 2011
@@ -49,6 +49,10 @@ public abstract class OpVisitorByType im
{ visit0(opTriple) ; }
@Override
+ public void visit(OpQuad opQuad)
+ { visit0(opQuad) ; }
+
+ @Override
public void visit(OpPath opPath)
{ visit0(opPath) ; }
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/Transform.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/Transform.java?rev=1190018&r1=1190017&r2=1190018&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/Transform.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/Transform.java Thu Oct 27 20:49:38 2011
@@ -28,6 +28,7 @@ public interface Transform
public Op transform(OpTable opUnit) ;
public Op transform(OpBGP opBGP) ;
public Op transform(OpTriple opTriple) ;
+ public Op transform(OpQuad opQuad) ;
public Op transform(OpPath opPath) ;
public Op transform(OpDatasetNames dsNames) ;
public Op transform(OpQuadPattern quadPattern) ;
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/TransformBase.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/TransformBase.java?rev=1190018&r1=1190017&r2=1190018&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/TransformBase.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/TransformBase.java Thu Oct 27 20:49:38 2011
@@ -31,6 +31,8 @@ public class TransformBase implements Tr
@Override
public Op transform(OpTriple opTriple) { return opTriple ; }
@Override
+ public Op transform(OpQuad opQuad) { return opQuad ; }
+ @Override
public Op transform(OpPath opPath) { return opPath ; }
@Override
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/TransformCopy.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/TransformCopy.java?rev=1190018&r1=1190017&r2=1190018&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/TransformCopy.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/TransformCopy.java Thu Oct 27 20:49:38 2011
@@ -41,7 +41,9 @@ public class TransformCopy implements Tr
@Override
public Op transform(OpQuadPattern opQuadPattern) { return xform(opQuadPattern) ; }
@Override
- public Op transform(OpTriple opTriple) { return xform(opTriple) ; }
+ public Op transform(OpTriple opTriple) { return xform(opTriple) ; }
+ @Override
+ public Op transform(OpQuad opQuad) { return xform(opQuad) ; }
@Override
public Op transform(OpPath opPath) { return xform(opPath) ; }
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/TransformWrapper.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/TransformWrapper.java?rev=1190018&r1=1190017&r2=1190018&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/TransformWrapper.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/TransformWrapper.java Thu Oct 27 20:49:38 2011
@@ -22,7 +22,7 @@ import java.util.List ;
import com.hp.hpl.jena.sparql.algebra.op.* ;
-/** Wrap another tranform and pass on the transform operation */
+/** Wrap another transform and pass on the transform operation */
public class TransformWrapper implements Transform
{
protected final Transform transform ;
@@ -39,6 +39,8 @@ public class TransformWrapper implements
@Override
public Op transform(OpTriple opTriple) { return transform.transform(opTriple) ; }
@Override
+ public Op transform(OpQuad opQuad) { return transform.transform(opQuad) ; }
+ @Override
public Op transform(OpPath opPath) { return transform.transform(opPath) ; }
@Override
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpBase.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpBase.java?rev=1190018&r1=1190017&r2=1190018&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpBase.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpBase.java Thu Oct 27 20:49:38 2011
@@ -73,6 +73,7 @@ public abstract class OpBase extends Pri
static final int HashSequence = 0xB8 ;
static final int HashLabel = 0xB9 ;
static final int HashTriple = 0xBA ;
+ static final int HashQuad = 0xBB ;
}
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpDatasetNames.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpDatasetNames.java?rev=1190018&r1=1190017&r2=1190018&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpDatasetNames.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpDatasetNames.java Thu Oct 27 20:49:38 2011
@@ -22,6 +22,7 @@ import com.hp.hpl.jena.graph.Node ;
import com.hp.hpl.jena.sparql.algebra.Op ;
import com.hp.hpl.jena.sparql.algebra.OpVisitor ;
import com.hp.hpl.jena.sparql.algebra.Transform ;
+import com.hp.hpl.jena.sparql.sse.Tags ;
import com.hp.hpl.jena.sparql.util.NodeIsomorphismMap ;
public class OpDatasetNames extends Op0
@@ -36,7 +37,7 @@ public class OpDatasetNames extends Op0
}
@Override
- public String getName() { return "DatasetNames" ; }
+ public String getName() { return Tags.tagDatasetNames ; }
@Override
public Op apply(Transform transform) { return transform.transform(this) ; }
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpJoin.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpJoin.java?rev=1190018&r1=1190017&r2=1190018&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpJoin.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpJoin.java Thu Oct 27 20:49:38 2011
@@ -31,7 +31,7 @@ public class OpJoin extends Op2
public static Op create(Op left, Op right)
{
// Don't simplify here - changes SPARQL for OPTIONAL {{ FILTER }}
- // The {{}} reslts in (join unit (filter ...)) the filter is not moved
+ // The {{}} results in (join unit (filter ...)) the filter is not moved
// into the LeftJoin.
// // Inline simplification (too early - changes SPARQL for OPTIONAL {{ FILTER }}
Added: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpQuad.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpQuad.java?rev=1190018&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpQuad.java (added)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpQuad.java Thu Oct 27 20:49:38 2011
@@ -0,0 +1,100 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.sparql.algebra.op;
+
+import com.hp.hpl.jena.sparql.algebra.Op ;
+import com.hp.hpl.jena.sparql.algebra.OpVisitor ;
+import com.hp.hpl.jena.sparql.algebra.Transform ;
+import com.hp.hpl.jena.sparql.core.BasicPattern ;
+import com.hp.hpl.jena.sparql.core.Quad ;
+import com.hp.hpl.jena.sparql.core.QuadPattern ;
+import com.hp.hpl.jena.sparql.sse.Tags ;
+import com.hp.hpl.jena.sparql.util.NodeIsomorphismMap ;
+import com.hp.hpl.jena.sparql.util.Utils ;
+
+/** Algebra operation for a single quad.
+ * @see OpTriple
+ */
+public class OpQuad extends Op0
+{
+ private final Quad quad ;
+ private OpQuadPattern opQuadPattern = null ;
+
+ public OpQuad(Quad quad)
+ {
+ this.quad = quad ;
+ }
+
+ public final Quad getQuad() { return quad ; }
+
+
+ public OpQuadPattern asQuadPattern()
+ {
+ if ( opQuadPattern == null )
+ {
+ BasicPattern bp = new BasicPattern() ;
+ bp.add(getQuad().asTriple()) ;
+ opQuadPattern = new OpQuadPattern(quad.getGraph(),bp) ;
+ }
+ return opQuadPattern ;
+ }
+
+ @Override
+ public Op apply(Transform transform)
+ { return transform.transform(this) ; }
+
+ @Override
+ public Op copy()
+ {
+ return new OpQuad(quad) ;
+ }
+
+ @Override
+ public boolean equalTo(Op other, NodeIsomorphismMap labelMap)
+ {
+ if ( ! (other instanceof OpQuad) )
+ return false ;
+ OpQuad opQuad = (OpQuad)other ;
+ return Utils.quadIso(getQuad(), opQuad.getQuad(), labelMap) ;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return OpBase.HashTriple ^ quad.hashCode() ;
+ }
+
+ @Override
+ public void visit(OpVisitor opVisitor)
+ { opVisitor.visit(this) ; }
+
+ @Override
+ public String getName()
+ {
+ return Tags.tagTriple ;
+ }
+
+ public boolean equivalent(OpQuadPattern opQuads)
+ {
+ QuadPattern quads = opQuads.getPattern() ;
+ if ( quads.size() != 1 ) return false ;
+ Quad q = quads.get(0) ;
+ return quad.equals(q) ;
+ }
+}
Propchange: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpQuad.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpQuadPattern.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpQuadPattern.java?rev=1190018&r1=1190017&r2=1190018&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpQuadPattern.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpQuadPattern.java Thu Oct 27 20:49:38 2011
@@ -71,13 +71,6 @@ public class OpQuadPattern extends Op0
return quads ;
}
-// @Deprecated
-// public List<Quad> getQuads()
-// {
-// initQuads() ;
-// return quads.getList() ;
-// }
-
public Node getGraphNode() { return graphNode ; }
public BasicPattern getBasicPattern() { return triples ; }
public boolean isEmpty() { return triples.size() == 0 ; }
Added: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPattern2Join.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPattern2Join.java?rev=1190018&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPattern2Join.java (added)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPattern2Join.java Thu Oct 27 20:49:38 2011
@@ -0,0 +1,72 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.sparql.algebra.optimize;
+
+import com.hp.hpl.jena.graph.Triple ;
+import com.hp.hpl.jena.sparql.algebra.Op ;
+import com.hp.hpl.jena.sparql.algebra.TransformCopy ;
+import com.hp.hpl.jena.sparql.algebra.op.* ;
+import com.hp.hpl.jena.sparql.core.BasicPattern ;
+import com.hp.hpl.jena.sparql.core.Quad ;
+import com.hp.hpl.jena.sparql.core.QuadPattern ;
+
+public class TransformPattern2Join extends TransformCopy
+{
+ @Override
+ public Op transform(OpBGP opBGP) { return expand(opBGP.getPattern()) ; }
+
+ @Override
+ public Op transform(OpQuadPattern quadPattern) { return expand(quadPattern.getPattern()) ; }
+
+ public static Op expand(BasicPattern bgp)
+ {
+ if ( bgp.getList().isEmpty() )
+ return OpTable.unit() ;
+ Op op = null ;
+ for ( Triple t : bgp.getList() )
+ {
+ OpTriple x = new OpTriple(t) ;
+ op = join(op, x) ;
+ }
+ return op ;
+ }
+
+ public static Op expand(QuadPattern quads)
+ {
+ if ( quads.getList().isEmpty() )
+ return OpTable.unit() ;
+ Op op = null ;
+ for ( Quad q : quads.getList() )
+ {
+ OpQuad x = new OpQuad(q) ;
+ op = join(op, x) ;
+ }
+ return op ;
+ }
+
+
+ private static Op join(Op left, Op right)
+ {
+ if ( left == null || OpJoin.isJoinIdentify(left) )
+ return right ;
+ if ( right == null || OpJoin.isJoinIdentify(right) )
+ return left ;
+ return OpJoin.create(left, right) ;
+ }
+}
Propchange: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPattern2Join.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/main/ExecutionDispatch.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/main/ExecutionDispatch.java?rev=1190018&r1=1190017&r2=1190018&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/main/ExecutionDispatch.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/main/ExecutionDispatch.java Thu Oct 27 20:49:38 2011
@@ -75,6 +75,14 @@ class ExecutionDispatch implements OpVis
}
@Override
+ public void visit(OpQuad opQuad)
+ {
+ QueryIterator input = pop() ;
+ QueryIterator qIter = opExecutor.execute(opQuad, input) ;
+ push(qIter) ;
+ }
+
+ @Override
public void visit(OpPath opPath)
{
QueryIterator input = pop() ;
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/main/OpExecutor.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/main/OpExecutor.java?rev=1190018&r1=1190017&r2=1190018&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/main/OpExecutor.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/main/OpExecutor.java Thu Oct 27 20:49:38 2011
@@ -136,6 +136,12 @@ public class OpExecutor
return execute(opTriple.asBGP(), input) ;
}
+ protected QueryIterator execute(OpQuad opQuad, QueryIterator input)
+ {
+ return execute(opQuad.asQuadPattern(), input) ;
+ }
+
+
protected QueryIterator execute(OpQuadPattern quadPattern, QueryIterator input)
{
// Convert to BGP forms to execute in this graph-centric engine.
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/ref/EvaluatorDispatch.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/ref/EvaluatorDispatch.java?rev=1190018&r1=1190017&r2=1190018&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/ref/EvaluatorDispatch.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/ref/EvaluatorDispatch.java Thu Oct 27 20:49:38 2011
@@ -81,6 +81,11 @@ public class EvaluatorDispatch implement
}
@Override
+ public void visit(OpQuad opQuad)
+ {
+ visit(opQuad.asQuadPattern()) ;
+ }
+ @Override
public void visit(OpPath opPath)
{
Table table = evaluator.pathPattern(opPath.getTriplePath()) ;
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/Tags.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/Tags.java?rev=1190018&r1=1190017&r2=1190018&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/Tags.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/Tags.java Thu Oct 27 20:49:38 2011
@@ -71,6 +71,7 @@ public class Tags
public static final String tagDiff = "diff" ;
public static final String tagMinus = "minus" ;
public static final String tagUnion = "union" ;
+ public static final String tagDatasetNames = "datasetnames" ;
public static final String tagToList = "tolist" ;
public static final String tagOrderBy = "order" ;
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderOp.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderOp.java?rev=1190018&r1=1190017&r2=1190018&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderOp.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderOp.java Thu Oct 27 20:49:38 2011
@@ -76,6 +76,7 @@ public class BuilderOp
addBuild(Tags.tagBGP, buildBGP) ;
addBuild(Tags.tagQuadPattern, buildQuadPattern) ;
addBuild(Tags.tagTriple, buildTriple) ;
+ addBuild(Tags.tagQuad, buildQuad) ;
addBuild(Tags.tagTriplePath, buildTriplePath) ;
addBuild(Tags.tagFilter, buildFilter) ;
addBuild(Tags.tagGraph, buildGraph) ;
@@ -89,6 +90,7 @@ public class BuilderOp
addBuild(Tags.tagDiff, buildDiff) ;
addBuild(Tags.tagMinus, buildMinus) ;
addBuild(Tags.tagUnion, buildUnion) ;
+ addBuild(Tags.tagDatasetNames, buildDatasetNames) ;
addBuild(Tags.tagConditional, buildConditional) ;
addBuild(Tags.tagToList, buildToList) ;
@@ -283,6 +285,13 @@ public class BuilderOp
return new OpTriple(t) ;
}} ;
+ final protected Build buildQuad = new Build(){
+ @Override
+ public Op make(ItemList list)
+ {
+ Quad q = BuilderGraph.buildQuad(list) ;
+ return new OpQuad(q) ;
+ }} ;
final protected Build buildTriplePath = new Build(){
@Override
@@ -416,6 +425,17 @@ public class BuilderOp
}
} ;
+ final protected Build buildDatasetNames = new Build()
+ {
+ @Override
+ public Op make(ItemList list)
+ {
+ BuilderLib.checkLength(2, list, Tags.tagDatasetNames) ;
+ Node n = BuilderNode.buildNode(list.get(1)) ;
+ return new OpDatasetNames(n) ;
+ }
+ } ;
+
final protected Build buildConditional = new Build()
{
@Override
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/writers/WriterOp.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/writers/WriterOp.java?rev=1190018&r1=1190017&r2=1190018&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/writers/WriterOp.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/writers/WriterOp.java Thu Oct 27 20:49:38 2011
@@ -226,6 +226,13 @@ public class WriterOp
}
@Override
+ public void visit(OpQuad opQuad)
+ {
+ formatQuad(opQuad.getQuad()) ;
+ }
+
+
+ @Override
public void visit(OpPath opPath)
{
//start(opPath, NoNL) ;
Modified: incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/algebra/TS_Algebra.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/algebra/TS_Algebra.java?rev=1190018&r1=1190017&r2=1190018&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/algebra/TS_Algebra.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/algebra/TS_Algebra.java Thu Oct 27 20:49:38 2011
@@ -20,6 +20,7 @@ package com.hp.hpl.jena.sparql.algebra;
import com.hp.hpl.jena.sparql.algebra.optimize.TestOptimizer ;
+import com.hp.hpl.jena.sparql.algebra.optimize.TestPattern2Join ;
import com.hp.hpl.jena.sparql.algebra.optimize.TestVarRename ;
import junit.framework.TestSuite ;
@@ -32,7 +33,8 @@ import org.junit.runners.Suite ;
, TestClassify.class
, TestFilterTransform.class
, TestVarRename.class
- , TestOptimizer.class
+ , TestOptimizer.class
+ , TestPattern2Join.class
// , TestUnionGraph.class
// , TestUnionTransformTriples.class
// , TestUnionTransformQuads.class
Added: incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/algebra/optimize/TestPattern2Join.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/algebra/optimize/TestPattern2Join.java?rev=1190018&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/algebra/optimize/TestPattern2Join.java (added)
+++ incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/algebra/optimize/TestPattern2Join.java Thu Oct 27 20:49:38 2011
@@ -0,0 +1,106 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.sparql.algebra.optimize;
+
+import org.junit.Test ;
+import org.openjena.atlas.junit.BaseTest ;
+import org.openjena.atlas.lib.StrUtils ;
+
+import com.hp.hpl.jena.query.Query ;
+import com.hp.hpl.jena.query.QueryFactory ;
+import com.hp.hpl.jena.sparql.algebra.Algebra ;
+import com.hp.hpl.jena.sparql.algebra.Op ;
+import com.hp.hpl.jena.sparql.algebra.Transformer ;
+import com.hp.hpl.jena.sparql.sse.SSE ;
+
+public class TestPattern2Join extends BaseTest
+{
+
+ @Test public void bgp2join_01() { test3("{}",
+ "(table unit)") ; }
+
+ @Test public void bgp2join_02() { test3("{?s ?p ?o}",
+ "(triple ?s ?p ?o)") ; }
+
+ @Test public void bgp2join_03() { test3("{?s1 ?p1 ?o1 . ?s2 ?p2 ?o2 . }",
+ "(join ",
+ " (triple ?s1 ?p1 ?o1)",
+ " (triple ?s2 ?p2 ?o2) )") ; }
+
+ @Test public void bgp2join_04() { test3("{?s1 ?p1 ?o1 . ?s2 ?p2 ?o2 . ?s3 ?p3 ?o3 . }",
+ "(join ",
+ " (join (triple ?s1 ?p1 ?o1) (triple ?s2 ?p2 ?o2))",
+ " (triple ?s3 ?p3 ?o3) )") ; }
+
+ @Test public void qp2join_01() { test4("{GRAPH ?g { }}", "(datasetnames ?g)") ; }
+
+ @Test public void qp2join_02() { test4("{GRAPH ?g { ?s ?p ?o }}", "(quad ?g ?s ?p ?o)") ; }
+
+ @Test public void qp2join_03() { test4("{GRAPH ?g { ?s1 ?p1 ?o1 . ?s2 ?p2 ?o2 . }}",
+ "(join ",
+ " (quad ?g ?s1 ?p1 ?o1)",
+ " (quad ?g ?s2 ?p2 ?o2) )") ; }
+
+ @Test public void qp2join_04() { test4("{GRAPH ?g { ?s1 ?p1 ?o1 . ?s2 ?p2 ?o2 . ?s3 ?p3 ?o3 .}}",
+ "(join ",
+ " (join (quad ?g ?s1 ?p1 ?o1) (quad ?g ?s2 ?p2 ?o2))",
+ " (quad ?g ?s3 ?p3 ?o3) )") ; }
+
+ @Test public void qp2join_05() { test4("{GRAPH ?g { ?s1 ?p1 ?o1 . ?s2 ?p2 ?o2 . ?s3 ?p3 ?o3 .}}",
+ "(join ",
+ " (join (quad ?g ?s1 ?p1 ?o1) (quad ?g ?s2 ?p2 ?o2))",
+ " (quad ?g ?s3 ?p3 ?o3) )") ; }
+
+ @Test public void qp2join_06() { test4("{GRAPH ?g1 { ?s1 ?p1 ?o1 } GRAPH ?g2 { ?s2 ?p2 ?o2 } }",
+ "(join (quadpattern (?g1 ?s1 ?p1 ?o1)) (quadpattern (?g2 ?s2 ?p2 ?o2)) )") ; }
+
+
+ @Test public void qp2join_07() { test4("{GRAPH ?g1 { ?s1 ?p1 ?o1 . ?s9 ?p9 ?o9} GRAPH ?g2 { ?s2 ?p2 ?o2 . ?s8 ?p8 ?o8}}",
+ "(join ",
+ " (join (quad ?g1 ?s1 ?p1 ?o1) (quad ?g1 ?s9 ?p9 ?o9))",
+ " (join (quad ?g2 ?s2 ?p2 ?o2) (quad ?g2 ?s8 ?p8 ?o8))",
+ ")") ; }
+
+
+ private static void test3(String pattern, String... joinForm)
+ {
+ Query q = QueryFactory.create("PREFIX : <http://example/> SELECT * "+pattern) ;
+ Op op = Algebra.compile(q.getQueryPattern()) ;
+ test(op, joinForm) ;
+ }
+
+ private static void test4(String pattern, String... joinForm)
+ {
+ Query q = QueryFactory.create("PREFIX : <http://example/> SELECT * "+pattern) ;
+ Op op = Algebra.compile(q.getQueryPattern()) ;
+ op = Algebra.toQuadForm(op) ;
+ test(op, joinForm) ;
+ }
+
+ private static void test(Op input, String... joinForm)
+ {
+ System.out.println(input) ;
+
+ Op op2 = Transformer.transform(new TransformPattern2Join() , input) ;
+ String x = StrUtils.strjoinNL(joinForm) ;
+ Op opExpected = SSE.parseOp("(prefix ((: <http://example/>)) "+x+")") ;
+ assertEquals(op2, opExpected) ;
+ }
+}
+
Propchange: incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/algebra/optimize/TestPattern2Join.java
------------------------------------------------------------------------------
svn:mime-type = text/plain