http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/8363724b/extras/rya.pcj.fluo/pcj.fluo.app/src/main/java/org/apache/rya/indexing/pcj/fluo/app/query/SparqlFluoQueryBuilder.java ---------------------------------------------------------------------- diff --git a/extras/rya.pcj.fluo/pcj.fluo.app/src/main/java/org/apache/rya/indexing/pcj/fluo/app/query/SparqlFluoQueryBuilder.java b/extras/rya.pcj.fluo/pcj.fluo.app/src/main/java/org/apache/rya/indexing/pcj/fluo/app/query/SparqlFluoQueryBuilder.java index 7b21575..57ae9d2 100644 --- a/extras/rya.pcj.fluo/pcj.fluo.app/src/main/java/org/apache/rya/indexing/pcj/fluo/app/query/SparqlFluoQueryBuilder.java +++ b/extras/rya.pcj.fluo/pcj.fluo.app/src/main/java/org/apache/rya/indexing/pcj/fluo/app/query/SparqlFluoQueryBuilder.java @@ -42,13 +42,13 @@ import java.util.concurrent.atomic.AtomicReference; import org.apache.rya.api.client.CreatePCJ.ExportStrategy; import org.apache.rya.api.client.CreatePCJ.QueryType; +import org.apache.rya.api.function.aggregation.AggregationElement; +import org.apache.rya.api.function.aggregation.AggregationType; import org.apache.rya.indexing.pcj.fluo.app.ConstructGraph; import org.apache.rya.indexing.pcj.fluo.app.ConstructProjection; import org.apache.rya.indexing.pcj.fluo.app.FluoStringConverter; import org.apache.rya.indexing.pcj.fluo.app.IncrementalUpdateConstants; import org.apache.rya.indexing.pcj.fluo.app.NodeType; -import org.apache.rya.indexing.pcj.fluo.app.query.AggregationMetadata.AggregationElement; -import org.apache.rya.indexing.pcj.fluo.app.query.AggregationMetadata.AggregationType; import org.apache.rya.indexing.pcj.fluo.app.query.JoinMetadata.JoinType; import org.apache.rya.indexing.pcj.fluo.app.util.FilterSerializer; import org.apache.rya.indexing.pcj.fluo.app.util.FilterSerializer.FilterParseException; @@ -103,73 +103,73 @@ public class SparqlFluoQueryBuilder { private String queryId; private NodeIds nodeIds; private Optional<Integer> joinBatchSize = Optional.empty(); - - //Default behavior is to export to Kafka - subject to change when user can + + //Default behavior is to export to Kafka - subject to change when user can //specify their own export strategy private Set<ExportStrategy> exportStrategies = new HashSet<>(Arrays.asList(ExportStrategy.KAFKA)); - - public SparqlFluoQueryBuilder setSparql(String sparql) { + + public SparqlFluoQueryBuilder setSparql(final String sparql) { this.sparql = Preconditions.checkNotNull(sparql); return this; } - - public SparqlFluoQueryBuilder setTupleExpr(TupleExpr te) { + + public SparqlFluoQueryBuilder setTupleExpr(final TupleExpr te) { this.te = Preconditions.checkNotNull(te); return this; } - + /** * Sets the FluoQuery id as generated by {@link NodeType#generateNewFluoIdForType(NodeType)} or * {@link NodeType#generateNewIdForType(NodeType, String)}, where NodeType is of type Query. * @param queryId for the {@link FluoQuery} * @return SparqlFluoQueryBuilder for chaining method calls */ - public SparqlFluoQueryBuilder setFluoQueryId(String queryId) { + public SparqlFluoQueryBuilder setFluoQueryId(final String queryId) { this.queryId = Preconditions.checkNotNull(queryId); return this; } - - public SparqlFluoQueryBuilder setNodeIds(NodeIds nodeIds) { + + public SparqlFluoQueryBuilder setNodeIds(final NodeIds nodeIds) { this.nodeIds = Preconditions.checkNotNull(nodeIds); return this; } - - public SparqlFluoQueryBuilder setExportStrategies(Set<ExportStrategy> exportStrategies) { + + public SparqlFluoQueryBuilder setExportStrategies(final Set<ExportStrategy> exportStrategies) { this.exportStrategies = exportStrategies; return this; } - - public SparqlFluoQueryBuilder setJoinBatchSize(int joinBatchSize) { - Preconditions.checkArgument(joinBatchSize > 0); + + public SparqlFluoQueryBuilder setJoinBatchSize(final int joinBatchSize) { + Preconditions.checkArgument(joinBatchSize > 0); this.joinBatchSize = Optional.of(joinBatchSize); return this; } - + public FluoQuery build() throws UnsupportedQueryException { Preconditions.checkNotNull(sparql); Preconditions.checkNotNull(queryId); Preconditions.checkNotNull(exportStrategies); - + if(nodeIds == null) { nodeIds = new NodeIds(); } - + if(te == null) { - SPARQLParser parser = new SPARQLParser(); + final SPARQLParser parser = new SPARQLParser(); ParsedQuery pq; try { pq = parser.parseQuery(sparql, null); - } catch (MalformedQueryException e) { + } catch (final MalformedQueryException e) { throw new RuntimeException(e); } te = pq.getTupleExpr(); } - + PeriodicQueryUtil.placePeriodicQueryNode(te); - String childNodeId = nodeIds.getOrMakeId(te); - + final String childNodeId = nodeIds.getOrMakeId(te); + final FluoQuery.Builder fluoQueryBuilder = FluoQuery.builder(); - QueryMetadata.Builder queryBuilder = QueryMetadata.builder(queryId); + final QueryMetadata.Builder queryBuilder = QueryMetadata.builder(queryId); //sets {@link QueryType} and VariableOrder setVarOrderAndQueryType(queryBuilder, te); queryBuilder @@ -177,18 +177,18 @@ public class SparqlFluoQueryBuilder { .setChildNodeId(childNodeId) .setExportStrategies(exportStrategies) .setJoinBatchSize(joinBatchSize); - + fluoQueryBuilder.setQueryMetadata(queryBuilder); - + setChildMetadata(fluoQueryBuilder, childNodeId, queryBuilder.getVariableOrder(), queryId); - + final NewQueryVisitor visitor = new NewQueryVisitor(fluoQueryBuilder, nodeIds); te.visit( visitor ); - + final FluoQuery fluoQuery = fluoQueryBuilder.build(); return fluoQuery; } - + /** * A data structure that creates and keeps track of Node IDs for the nodes * of a {@link ParsedQuery}. This structure should only be used while creating @@ -275,7 +275,7 @@ public class SparqlFluoQueryBuilder { // Put them together to create the Node ID. return prefix + "_" + unique; } - + } /** @@ -327,7 +327,7 @@ public class SparqlFluoQueryBuilder { } else { groupByVariableOrder = new VariableOrder(); } - + // The aggregations that need to be performed are the Group Elements. final List<AggregationElement> aggregations = new ArrayList<>(); @@ -361,15 +361,15 @@ public class SparqlFluoQueryBuilder { aggregationBuilder.setChildNodeId(childNodeId); aggregationBuilder.setGroupByVariableOrder(groupByVariableOrder); - - Set<String> aggregationVars = getVarsToDelete(groupByVariableOrder.getVariableOrders(), aggregationBuilder.getVariableOrder().getVariableOrders()); + + final Set<String> aggregationVars = getVarsToDelete(groupByVariableOrder.getVariableOrders(), aggregationBuilder.getVariableOrder().getVariableOrders()); FluoQueryUtils.updateVarOrders(fluoQueryBuilder, UpdateAction.DeleteVariable, Lists.newArrayList(aggregationVars), aggregationId); - + for(final AggregationElement aggregation : aggregations) { aggregationBuilder.addAggregation(aggregation); } - - + + // Update the child node's metadata. final Set<String> childVars = getVars(child); @@ -459,7 +459,7 @@ public class SparqlFluoQueryBuilder { @Override public void meet(final Filter node) { - + // Get or create a builder for this node populated with the known metadata. final String filterId = nodeIds.getOrMakeId(node); @@ -472,7 +472,7 @@ public class SparqlFluoQueryBuilder { String filterString; try { filterString = FilterSerializer.serialize(node); - } catch (FilterParseException e) { + } catch (final FilterParseException e) { throw new RuntimeException(e); } filterBuilder.setFilterSparql(filterString); @@ -493,10 +493,11 @@ public class SparqlFluoQueryBuilder { // Walk to the next node. super.meet(node); } - + + @Override public void meetOther(final QueryModelNode qNode) { if (qNode instanceof PeriodicQueryNode) { - PeriodicQueryNode node = (PeriodicQueryNode) qNode; + final PeriodicQueryNode node = (PeriodicQueryNode) qNode; // Get or create a builder for this node populated with the // known metadata. final String periodicId = nodeIds.getOrMakeId(node); @@ -531,9 +532,9 @@ public class SparqlFluoQueryBuilder { FluoQueryUtils.updateVarOrders(fluoQueryBuilder, UpdateAction.AddVariable, Arrays.asList(IncrementalUpdateConstants.PERIODIC_BIN_ID), periodicId); // Walk to the next node. node.getArg().visit(this); - } + } } - + @Override public void meet(final Projection node) { @@ -564,25 +565,26 @@ public class SparqlFluoQueryBuilder { // Walk to the next node. super.meet(node); } - - - public void meet(Reduced node) { - //create id, initialize ConstructQueryMetadata builder, register ConstructQueryMetadata + + + @Override + public void meet(final Reduced node) { + //create id, initialize ConstructQueryMetadata builder, register ConstructQueryMetadata //builder with FluoQueryBuilder, and add metadata that we currently have final String constructId = nodeIds.getOrMakeId(node); - + ConstructQueryMetadata.Builder constructBuilder = fluoQueryBuilder.getConstructQueryBuilder().orNull(); if(constructBuilder == null) { constructBuilder = ConstructQueryMetadata.builder(); constructBuilder.setNodeId(constructId); fluoQueryBuilder.setConstructQueryMetadata(constructBuilder); } - + //get child node QueryModelNode child = node.getArg(); Preconditions.checkArgument(child instanceof Projection || child instanceof MultiProjection); - UnaryTupleOperator unary = (UnaryTupleOperator) child; - + final UnaryTupleOperator unary = (UnaryTupleOperator) child; + //get ProjectionElemList to build ConstructGraph final List<ProjectionElemList> projections = new ArrayList<>(); if(unary instanceof Projection) { @@ -590,15 +592,15 @@ public class SparqlFluoQueryBuilder { } else { projections.addAll(((MultiProjection)unary).getProjections()); } - + //get ExtensionElems to build ConstructGraph - QueryModelNode grandChild = unary.getArg(); + final QueryModelNode grandChild = unary.getArg(); Preconditions.checkArgument(grandChild instanceof Extension); - Extension extension = (Extension) grandChild; + final Extension extension = (Extension) grandChild; final List<ExtensionElem> extensionElems = extension.getElements(); final ConstructGraph graph = getConstructGraph(projections, extensionElems); constructBuilder.setConstructGraph(graph); - + //set child to the next node we care about in Fluo //if Extension's arg is a Group node, then it is an Aggregation, so set child to Extension //otherwise set child to Extension's child (only care about Extensions if they are Aggregations) @@ -607,42 +609,42 @@ public class SparqlFluoQueryBuilder { } else { child = extension.getArg(); } - + //Set the child node in the ConstructQueryMetadataBuilder - String childNodeId = nodeIds.getOrMakeId(child); + final String childNodeId = nodeIds.getOrMakeId(child); constructBuilder.setChildNodeId(childNodeId); - + // Update the child node's metadata. final Set<String> childVars = getVars((TupleExpr)child); final VariableOrder childVarOrder = new VariableOrder(childVars); setChildMetadata(fluoQueryBuilder, childNodeId, childVarOrder, constructId); - + //fast forward visitor to next node we care about child.visit(this); } - - private ConstructGraph getConstructGraph(List<ProjectionElemList> projections, List<ExtensionElem> extensionElems) { - Map<String, Value> valueMap = new HashMap<>(); + + private ConstructGraph getConstructGraph(final List<ProjectionElemList> projections, final List<ExtensionElem> extensionElems) { + final Map<String, Value> valueMap = new HashMap<>(); //create valueMap to associate source names with Values - for(ExtensionElem elem: extensionElems) { - String name = elem.getName(); - ValueExpr expr = elem.getExpr(); + for(final ExtensionElem elem: extensionElems) { + final String name = elem.getName(); + final ValueExpr expr = elem.getExpr(); if(expr instanceof ValueConstant) { - Value value = ((ValueConstant) expr).getValue(); + final Value value = ((ValueConstant) expr).getValue(); valueMap.put(name, value); } else if(expr instanceof BNodeGenerator) { valueMap.put(name, new BNodeImpl(UUID.randomUUID().toString())); } } - - Set<ConstructProjection> constructProj = new HashSet<>(); + + final Set<ConstructProjection> constructProj = new HashSet<>(); //build ConstructProjection for each ProjectionElemList - for(ProjectionElemList list: projections) { + for(final ProjectionElemList list: projections) { validateProjectionElemList(list); - List<Var> vars = new ArrayList<>(); - for(ProjectionElem elem: list.getElements()) { - String sourceName = elem.getSourceName(); - Var var = new Var(sourceName); + final List<Var> vars = new ArrayList<>(); + for(final ProjectionElem elem: list.getElements()) { + final String sourceName = elem.getSourceName(); + final Var var = new Var(sourceName); if(valueMap.containsKey(sourceName)) { var.setValue(valueMap.get(sourceName)); } @@ -650,25 +652,25 @@ public class SparqlFluoQueryBuilder { } constructProj.add(new ConstructProjection(vars.get(0), vars.get(1), vars.get(2))); } - + return new ConstructGraph(constructProj); } - - private Set<String> getVarsToDelete(Collection<String> groupByVars, Collection<String> varOrderVars) { - Set<String> groupBySet = Sets.newHashSet(groupByVars); - Set<String> varOrderSet = Sets.newHashSet(varOrderVars); - + + private Set<String> getVarsToDelete(final Collection<String> groupByVars, final Collection<String> varOrderVars) { + final Set<String> groupBySet = Sets.newHashSet(groupByVars); + final Set<String> varOrderSet = Sets.newHashSet(varOrderVars); + return Sets.difference(varOrderSet, groupBySet); } - - private void validateProjectionElemList(ProjectionElemList list) { - List<ProjectionElem> elements = list.getElements(); + + private void validateProjectionElemList(final ProjectionElemList list) { + final List<ProjectionElem> elements = list.getElements(); checkArgument(elements.size() == 3); checkArgument(elements.get(0).getTargetName().equals("subject")); checkArgument(elements.get(1).getTargetName().equals("predicate")); checkArgument(elements.get(2).getTargetName().equals("object")); } - + /** * Get the non-constant variables from a {@link TupleExpr}. * @@ -769,55 +771,58 @@ public class SparqlFluoQueryBuilder { return shifted; } } - - private void setVarOrderAndQueryType(QueryMetadata.Builder builder, TupleExpr te) { - QueryMetadataLocator locator = new QueryMetadataLocator(); + + private void setVarOrderAndQueryType(final QueryMetadata.Builder builder, final TupleExpr te) { + final QueryMetadataLocator locator = new QueryMetadataLocator(); try { te.visit(locator); - } catch (Exception e) { + } catch (final Exception e) { throw new RuntimeException(e); } - + builder.setVarOrder(locator.getVarOrder()); builder.setQueryType(locator.getQueryType()); } - + public static class QueryMetadataLocator extends QueryModelVisitorBase<Exception> { - + private VariableOrder varOrder; private QueryType queryType; - + public VariableOrder getVarOrder() { return varOrder; } - + public QueryType getQueryType() { return queryType; } - - public void meet(Projection node) throws Exception { - Set<String> bindingNames = node.getBindingNames(); + + @Override + public void meet(final Projection node) throws Exception { + final Set<String> bindingNames = node.getBindingNames(); if(varOrder == null) { varOrder = new VariableOrder(bindingNames); } - + if(queryType == null) { queryType = QueryType.PROJECTION; } super.meet(node); } - - public void meet(Reduced node) throws Exception { + + @Override + public void meet(final Reduced node) throws Exception { if(varOrder == null) { varOrder = getConstructGraphVarOrder(node); } - + if(queryType == null) { queryType = QueryType.CONSTRUCT; } super.meet(node); } - + + @Override public void meetOther(final QueryModelNode node) throws Exception { if (node instanceof PeriodicQueryNode) { queryType = QueryType.PERIODIC; @@ -826,14 +831,14 @@ public class SparqlFluoQueryBuilder { } } } - - private static VariableOrder getConstructGraphVarOrder(Reduced node) { - + + private static VariableOrder getConstructGraphVarOrder(final Reduced node) { + //get child node - QueryModelNode child = node.getArg(); + final QueryModelNode child = node.getArg(); Preconditions.checkArgument(child instanceof Projection || child instanceof MultiProjection); - UnaryTupleOperator unary = (UnaryTupleOperator) child; - + final UnaryTupleOperator unary = (UnaryTupleOperator) child; + //get ProjectionElemList to build ConstructGraph final List<ProjectionElemList> projections = new ArrayList<>(); if(unary instanceof Projection) { @@ -841,26 +846,26 @@ public class SparqlFluoQueryBuilder { } else { projections.addAll(((MultiProjection)unary).getProjections()); } - + return getConstructGraphVarOrder(projections); } - - private static VariableOrder getConstructGraphVarOrder(List<ProjectionElemList> projections) { - Set<String> varOrders = new HashSet<>(); - - for(ProjectionElemList elems: projections) { - for(ProjectionElem elem: elems.getElements()) { - String name = elem.getSourceName(); + + private static VariableOrder getConstructGraphVarOrder(final List<ProjectionElemList> projections) { + final Set<String> varOrders = new HashSet<>(); + + for(final ProjectionElemList elems: projections) { + for(final ProjectionElem elem: elems.getElements()) { + final String name = elem.getSourceName(); if(!name.startsWith("-const-") && !name.startsWith("-anon-")) { varOrders.add(name); } } } - + return new VariableOrder(varOrders); } - - + + /** * Update a query node's metadata to include it's binding set variable order * and it's parent node id. This information is only known when handling @@ -921,21 +926,21 @@ public class SparqlFluoQueryBuilder { aggregationBuilder.setVarOrder(childVarOrder); aggregationBuilder.setParentNodeId(parentNodeId); break; - + case PROJECTION: ProjectionMetadata.Builder projectionBuilder = fluoQueryBuilder.getProjectionBuilder(childNodeId).orNull(); if(projectionBuilder == null) { projectionBuilder = ProjectionMetadata.builder(childNodeId); fluoQueryBuilder.addProjectionBuilder(projectionBuilder); } - + projectionBuilder.setVarOrder(childVarOrder); projectionBuilder.setParentNodeId(parentNodeId); break; - + case QUERY: throw new IllegalArgumentException("A QUERY node cannot be the child of another node."); - + case CONSTRUCT: ConstructQueryMetadata.Builder constructBuilder = fluoQueryBuilder.getConstructQueryBuilder().orNull(); if(constructBuilder == null) { @@ -943,12 +948,12 @@ public class SparqlFluoQueryBuilder { constructBuilder.setNodeId(childNodeId); fluoQueryBuilder.setConstructQueryMetadata(constructBuilder); } - + Preconditions.checkArgument(childNodeId.equals(constructBuilder.getNodeId())); constructBuilder.setVarOrder(childVarOrder); constructBuilder.setParentNodeId(parentNodeId); break; - + case PERIODIC_QUERY: PeriodicQueryMetadata.Builder periodicQueryBuilder = fluoQueryBuilder.getPeriodicQueryBuilder().orNull(); if (periodicQueryBuilder == null) { @@ -959,7 +964,7 @@ public class SparqlFluoQueryBuilder { periodicQueryBuilder.setVarOrder(childVarOrder); periodicQueryBuilder.setParentNodeId(parentNodeId); break; - + default: throw new IllegalArgumentException("Unsupported NodeType: " + childType); }
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/8363724b/extras/rya.pcj.fluo/pcj.fluo.integration/src/test/java/org/apache/rya/indexing/pcj/fluo/app/query/FluoQueryMetadataDAOIT.java ---------------------------------------------------------------------- diff --git a/extras/rya.pcj.fluo/pcj.fluo.integration/src/test/java/org/apache/rya/indexing/pcj/fluo/app/query/FluoQueryMetadataDAOIT.java b/extras/rya.pcj.fluo/pcj.fluo.integration/src/test/java/org/apache/rya/indexing/pcj/fluo/app/query/FluoQueryMetadataDAOIT.java index 45492de..384ec5d 100644 --- a/extras/rya.pcj.fluo/pcj.fluo.integration/src/test/java/org/apache/rya/indexing/pcj/fluo/app/query/FluoQueryMetadataDAOIT.java +++ b/extras/rya.pcj.fluo/pcj.fluo.integration/src/test/java/org/apache/rya/indexing/pcj/fluo/app/query/FluoQueryMetadataDAOIT.java @@ -31,10 +31,10 @@ import org.apache.fluo.api.client.Snapshot; import org.apache.fluo.api.client.Transaction; import org.apache.rya.api.client.CreatePCJ.ExportStrategy; import org.apache.rya.api.client.CreatePCJ.QueryType; +import org.apache.rya.api.function.aggregation.AggregationElement; +import org.apache.rya.api.function.aggregation.AggregationType; import org.apache.rya.indexing.pcj.fluo.app.ConstructGraph; import org.apache.rya.indexing.pcj.fluo.app.NodeType; -import org.apache.rya.indexing.pcj.fluo.app.query.AggregationMetadata.AggregationElement; -import org.apache.rya.indexing.pcj.fluo.app.query.AggregationMetadata.AggregationType; import org.apache.rya.indexing.pcj.fluo.app.query.JoinMetadata.JoinType; import org.apache.rya.indexing.pcj.storage.accumulo.VariableOrder; import org.apache.rya.pcj.fluo.test.base.RyaExportITBase; @@ -146,7 +146,7 @@ public class FluoQueryMetadataDAOIT extends RyaExportITBase { final FluoQueryMetadataDAO dao = new FluoQueryMetadataDAO(); // Create the object that will be serialized. - String queryId = NodeType.generateNewFluoIdForType(NodeType.QUERY); + final String queryId = NodeType.generateNewFluoIdForType(NodeType.QUERY); final QueryMetadata.Builder builder = QueryMetadata.builder(queryId); builder.setQueryType(QueryType.PROJECTION); builder.setVarOrder(new VariableOrder("y;s;d")); @@ -172,7 +172,7 @@ public class FluoQueryMetadataDAOIT extends RyaExportITBase { assertEquals(originalMetadata, storedMetdata); } } - + @Test public void projectionMetadataTest() { final FluoQueryMetadataDAO dao = new FluoQueryMetadataDAO(); @@ -202,15 +202,15 @@ public class FluoQueryMetadataDAOIT extends RyaExportITBase { assertEquals(originalMetadata, storedMetdata); } } - + @Test public void constructQueryMetadataTest() throws MalformedQueryException { - - String query = "select ?x ?y where {?x <uri:p1> ?y. ?y <uri:p2> <uri:o1> }"; - SPARQLParser parser = new SPARQLParser(); - ParsedQuery pq = parser.parseQuery(query, null); - List<StatementPattern> patterns = StatementPatternCollector.process(pq.getTupleExpr()); - + + final String query = "select ?x ?y where {?x <uri:p1> ?y. ?y <uri:p2> <uri:o1> }"; + final SPARQLParser parser = new SPARQLParser(); + final ParsedQuery pq = parser.parseQuery(query, null); + final List<StatementPattern> patterns = StatementPatternCollector.process(pq.getTupleExpr()); + final FluoQueryMetadataDAO dao = new FluoQueryMetadataDAO(); // Create the object that will be serialized. @@ -301,13 +301,13 @@ public class FluoQueryMetadataDAOIT extends RyaExportITBase { assertEquals(originalMetadata, storedMetadata); } } - + @Test public void periodicQueryMetadataTest() { final FluoQueryMetadataDAO dao = new FluoQueryMetadataDAO(); // Create the object that will be serialized. - PeriodicQueryMetadata originalMetadata = PeriodicQueryMetadata.builder() + final PeriodicQueryMetadata originalMetadata = PeriodicQueryMetadata.builder() .setNodeId("nodeId") .setParentNodeId("parentNodeId") .setVarOrder(new VariableOrder("a","b","c")) @@ -317,7 +317,7 @@ public class FluoQueryMetadataDAOIT extends RyaExportITBase { .setUnit(TimeUnit.DAYS) .setTemporalVariable("a") .build(); - + try(FluoClient fluoClient = FluoFactory.newClient(super.getFluoConfiguration())) { // Write it to the Fluo table. @@ -352,14 +352,14 @@ public class FluoQueryMetadataDAOIT extends RyaExportITBase { "?worker <http://worksAt> <http://Chipotle>. " + "}"; - SparqlFluoQueryBuilder builder = new SparqlFluoQueryBuilder(); + final SparqlFluoQueryBuilder builder = new SparqlFluoQueryBuilder(); builder.setSparql(sparql); builder.setFluoQueryId(NodeType.generateNewFluoIdForType(NodeType.QUERY)); final FluoQuery originalQuery = builder.build(); assertEquals(QueryType.PROJECTION, originalQuery.getQueryType()); assertEquals(false, originalQuery.getConstructQueryMetadata().isPresent()); - + try(FluoClient fluoClient = FluoFactory.newClient(super.getFluoConfiguration())) { // Write it to the Fluo table. try(Transaction tx = fluoClient.newTransaction()) { @@ -377,7 +377,7 @@ public class FluoQueryMetadataDAOIT extends RyaExportITBase { assertEquals(originalQuery, storedQuery); } } - + @Test public void fluoConstructQueryTest() throws MalformedQueryException, UnsupportedQueryException { final FluoQueryMetadataDAO dao = new FluoQueryMetadataDAO(); @@ -393,11 +393,11 @@ public class FluoQueryMetadataDAOIT extends RyaExportITBase { "?worker <http://worksAt> <http://Chipotle>. " + "}"; - SparqlFluoQueryBuilder builder = new SparqlFluoQueryBuilder(); + final SparqlFluoQueryBuilder builder = new SparqlFluoQueryBuilder(); builder.setSparql(sparql); builder.setFluoQueryId(NodeType.generateNewFluoIdForType(NodeType.QUERY)); final FluoQuery originalQuery = builder.build(); - + assertEquals(QueryType.CONSTRUCT, originalQuery.getQueryType()); assertEquals(true, originalQuery.getConstructQueryMetadata().isPresent()); @@ -418,8 +418,8 @@ public class FluoQueryMetadataDAOIT extends RyaExportITBase { assertEquals(originalQuery, storedQuery); } } - - + + @Test public void fluoNestedQueryTest() throws MalformedQueryException, UnsupportedQueryException { final FluoQueryMetadataDAO dao = new FluoQueryMetadataDAO(); @@ -435,13 +435,13 @@ public class FluoQueryMetadataDAOIT extends RyaExportITBase { "?id <urn:price> ?price ." + "} " + "GROUP BY ?type ?location }}"; - - - SparqlFluoQueryBuilder builder = new SparqlFluoQueryBuilder(); + + + final SparqlFluoQueryBuilder builder = new SparqlFluoQueryBuilder(); builder.setSparql(sparql); builder.setFluoQueryId(NodeType.generateNewFluoIdForType(NodeType.QUERY)); final FluoQuery originalQuery = builder.build(); - + assertEquals(QueryType.PROJECTION, originalQuery.getQueryType()); try(FluoClient fluoClient = FluoFactory.newClient(super.getFluoConfiguration())) { @@ -461,7 +461,7 @@ public class FluoQueryMetadataDAOIT extends RyaExportITBase { assertEquals(originalQuery, storedQuery); } } - + @Test public void fluoNestedConstructQueryTest() throws MalformedQueryException, UnsupportedQueryException { final FluoQueryMetadataDAO dao = new FluoQueryMetadataDAO(); @@ -478,16 +478,16 @@ public class FluoQueryMetadataDAOIT extends RyaExportITBase { + "SELECT ?location (count(?obs) AS ?obsCount) (avg(?velocity) AS ?avgVelocity) " + "WHERE { " + "FILTER(?velocity > 75) " - + "?obs <urn:hasVelocity> ?velocity. " - + "?obs <urn:hasLocation> ?location. " + + "?obs <urn:hasVelocity> ?velocity. " + + "?obs <urn:hasLocation> ?location. " + "}GROUP BY ?location }}"; - - - SparqlFluoQueryBuilder builder = new SparqlFluoQueryBuilder(); + + + final SparqlFluoQueryBuilder builder = new SparqlFluoQueryBuilder(); builder.setSparql(sparql); builder.setFluoQueryId(NodeType.generateNewFluoIdForType(NodeType.QUERY)); final FluoQuery originalQuery = builder.build(); - + assertEquals(QueryType.CONSTRUCT, originalQuery.getQueryType()); try(FluoClient fluoClient = FluoFactory.newClient(super.getFluoConfiguration())) { @@ -507,5 +507,5 @@ public class FluoQueryMetadataDAOIT extends RyaExportITBase { assertEquals(originalQuery, storedQuery); } } - + } \ No newline at end of file
