Author: hasan
Date: Mon Dec 14 17:55:41 2009
New Revision: 890414
URL: http://svn.apache.org/viewvc?rev=890414&view=rev
Log:
CLEREZZA-15: fixed bug in serializer
Added:
incubator/clerezza/issues/CLEREZZA-15/
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/
- copied from r890277,
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/
Modified:
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/StringQuerySerializer.java
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleAskQuery.java
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleConstructQuery.java
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleDescribeQuery.java
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleGroupGraphPattern.java
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleOptionalGraphPattern.java
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleSelectQuery.java
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleStringQuerySerializer.java
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/test/java/org/apache/clerezza/rdf/core/sparql/QuerySerializerTest.java
Modified:
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/StringQuerySerializer.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/StringQuerySerializer.java?rev=890414&r1=890277&r2=890414&view=diff
==============================================================================
---
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/StringQuerySerializer.java
(original)
+++
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/StringQuerySerializer.java
Mon Dec 14 17:55:41 2009
@@ -25,11 +25,21 @@
import org.apache.clerezza.rdf.core.sparql.query.SelectQuery;
/**
+ * This abstract class provides a method to generate a {...@link String}
+ * representation of a {...@link Query}.
*
* @author hasan
*/
public abstract class StringQuerySerializer {
+ /**
+ * Serializes a {...@link Query} object to a {...@link String}.
+ *
+ * @param query
+ * the Query object to be serialized
+ * @return
+ * a String representation of the specified Query object.
+ */
public String serialize(Query query) {
if (query instanceof SelectQuery) {
return serialize((SelectQuery) query);
@@ -42,11 +52,43 @@
}
}
+ /**
+ * Serializes a {...@link SelectQuery} object to a {...@link String}.
+ *
+ * @param selectQuery
+ * the SelectQuery object to be serialized
+ * @return
+ * a String representation of the specified SelectQuery
object.
+ */
public abstract String serialize(SelectQuery selectQuery);
+ /**
+ * Serializes a {...@link ConstructQuery} object to a {...@link String}.
+ *
+ * @param constructQuery
+ * the ConstructQuery object to be serialized
+ * @return
+ * a String representation of the specified ConstructQuery
object.
+ */
public abstract String serialize(ConstructQuery constructQuery);
+ /**
+ * Serializes a {...@link DescribeQuery} object to a {...@link String}.
+ *
+ * @param describeQuery
+ * the DescribeQuery object to be serialized
+ * @return
+ * a String representation of the specified DescribeQuery
object.
+ */
public abstract String serialize(DescribeQuery describeQuery);
+ /**
+ * Serializes an {...@link AskQuery} object to a {...@link String}.
+ *
+ * @param askQuery
+ * the AskQuery object to be serialized
+ * @return
+ * a String representation of the specified AskQuery
object.
+ */
public abstract String serialize(AskQuery askQuery);
}
Modified:
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleAskQuery.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleAskQuery.java?rev=890414&r1=890277&r2=890414&view=diff
==============================================================================
---
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleAskQuery.java
(original)
+++
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleAskQuery.java
Mon Dec 14 17:55:41 2009
@@ -28,6 +28,6 @@
@Override
public String toString() {
- return
SimpleStringQuerySerializer.getInstance().serialize(this);
+ return (new SimpleStringQuerySerializer()).serialize(this);
}
}
Modified:
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleConstructQuery.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleConstructQuery.java?rev=890414&r1=890277&r2=890414&view=diff
==============================================================================
---
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleConstructQuery.java
(original)
+++
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleConstructQuery.java
Mon Dec 14 17:55:41 2009
@@ -45,6 +45,6 @@
@Override
public String toString() {
- return
SimpleStringQuerySerializer.getInstance().serialize(this);
+ return (new SimpleStringQuerySerializer()).serialize(this);
}
}
Modified:
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleDescribeQuery.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleDescribeQuery.java?rev=890414&r1=890277&r2=890414&view=diff
==============================================================================
---
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleDescribeQuery.java
(original)
+++
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleDescribeQuery.java
Mon Dec 14 17:55:41 2009
@@ -55,6 +55,6 @@
@Override
public String toString() {
- return
SimpleStringQuerySerializer.getInstance().serialize(this);
+ return (new SimpleStringQuerySerializer()).serialize(this);
}
}
Modified:
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleGroupGraphPattern.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleGroupGraphPattern.java?rev=890414&r1=890277&r2=890414&view=diff
==============================================================================
---
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleGroupGraphPattern.java
(original)
+++
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleGroupGraphPattern.java
Mon Dec 14 17:55:41 2009
@@ -25,9 +25,11 @@
import org.apache.clerezza.rdf.core.sparql.query.Expression;
import org.apache.clerezza.rdf.core.sparql.query.GraphPattern;
import org.apache.clerezza.rdf.core.sparql.query.GroupGraphPattern;
+import org.apache.clerezza.rdf.core.sparql.query.OptionalGraphPattern;
import org.apache.clerezza.rdf.core.sparql.query.TriplePattern;
/**
+ * This class implements {...@link GroupGraphPattern}.
*
* @author hasan
*/
@@ -46,14 +48,37 @@
return constraints;
}
+ /**
+ * Adds a {...@link GraphPattern} to the group.
+ *
+ * @param graphPattern
+ * the GraphPattern to be added.
+ */
public void addGraphPattern(GraphPattern graphPattern) {
graphPatterns.add(graphPattern);
}
+ /**
+ * Adds a constraint to the {...@link GroupGraphPattern}.
+ *
+ * @param constraint
+ * an {...@link Expression} as the constraint to be added.
+ */
public void addConstraint(Expression constraint) {
constraints.add(constraint);
}
+ /**
+ * If the last {...@link GraphPattern} added to the group is not a
+ * {...@link SimpleBasicGraphPattern}, then creates one containing the
+ * specified {...@link TriplePattern}s and adds it to the group.
+ * Otherwise, adds the specified {...@link TriplePattern}s to the last
+ * added {...@link SimpleBasicGraphPattern} in the group.
+ *
+ * @param triplePatterns
+ * a set of {...@link TriplePattern}s to be added into a
+ * {...@link SimpleBasicGraphPattern} of the group.
+ */
public void addTriplePatterns(Set<TriplePattern> triplePatterns) {
GraphPattern prevGraphPattern;
int size = graphPatterns.size();
@@ -68,6 +93,17 @@
graphPatterns.add(new SimpleBasicGraphPattern(triplePatterns));
}
+ /**
+ * Adds an {...@link OptionalGraphPattern} to the group consisting of
+ * a main graph pattern and the specified {...@link GroupGraphPattern}
as
+ * the optional pattern.
+ * The main graph pattern is taken from the last added {...@link
GraphPattern}
+ * in the group, if it exists. Otherwise, the main graph pattern is
null.
+ *
+ * @param optional
+ * a {...@link GroupGraphPattern} as the optional pattern
of
+ * an {...@link OptionalGraphPattern}.
+ */
public void addOptionalGraphPattern(GroupGraphPattern optional) {
GraphPattern prevGraphPattern = null;
Modified:
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleOptionalGraphPattern.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleOptionalGraphPattern.java?rev=890414&r1=890277&r2=890414&view=diff
==============================================================================
---
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleOptionalGraphPattern.java
(original)
+++
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleOptionalGraphPattern.java
Mon Dec 14 17:55:41 2009
@@ -23,7 +23,8 @@
import org.apache.clerezza.rdf.core.sparql.query.OptionalGraphPattern;
/**
- *
+ * This class implements {...@link OptionalGraphPattern}.
+ *
* @author hasan
*/
public class SimpleOptionalGraphPattern implements OptionalGraphPattern {
@@ -31,15 +32,26 @@
private GraphPattern mainGraphPattern;
private GroupGraphPattern optionalGraphPattern;
+ /**
+ * Constructs an {...@link OptionalGraphPattern} out of a {...@link
GraphPattern}
+ * as the main graph pattern and a {...@link GroupGraphPattern} as the
+ * optional pattern.
+ *
+ * @param mainGraphPattern
+ * a {...@link GraphPattern} specifying the main pattern.
+ * @param optionalGraphPattern
+ * a {...@link GroupGraphPattern} specifying the optional
pattern.
+ */
public SimpleOptionalGraphPattern(GraphPattern mainGraphPattern,
GroupGraphPattern optionalGraphPattern) {
- if (mainGraphPattern == null) {
- throw new IllegalArgumentException("Main graph pattern
may not be null");
- }
if (optionalGraphPattern == null) {
throw new IllegalArgumentException("Optional graph
pattern may not be null");
}
- this.mainGraphPattern = mainGraphPattern;
+ if (mainGraphPattern == null) {
+ this.mainGraphPattern = new SimpleGroupGraphPattern();
+ } else {
+ this.mainGraphPattern = mainGraphPattern;
+ }
this.optionalGraphPattern = optionalGraphPattern;
}
Modified:
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleSelectQuery.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleSelectQuery.java?rev=890414&r1=890277&r2=890414&view=diff
==============================================================================
---
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleSelectQuery.java
(original)
+++
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleSelectQuery.java
Mon Dec 14 17:55:41 2009
@@ -74,6 +74,6 @@
@Override
public String toString() {
- return
SimpleStringQuerySerializer.getInstance().serialize(this);
+ return (new SimpleStringQuerySerializer()).serialize(this);
}
}
Modified:
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleStringQuerySerializer.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleStringQuerySerializer.java?rev=890414&r1=890277&r2=890414&view=diff
==============================================================================
---
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleStringQuerySerializer.java
(original)
+++
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleStringQuerySerializer.java
Mon Dec 14 17:55:41 2009
@@ -45,21 +45,18 @@
import org.apache.clerezza.rdf.core.sparql.query.TriplePattern;
import org.apache.clerezza.rdf.core.sparql.query.UnaryOperation;
import org.apache.clerezza.rdf.core.sparql.query.Variable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
+ * This class implements abstract methods of {...@link StringQuerySerializer}
+ * to serialize specific {...@link Query} types.
*
* @author hasan
*/
public class SimpleStringQuerySerializer extends StringQuerySerializer {
- static final SimpleStringQuerySerializer instance = new
SimpleStringQuerySerializer();
-
- private SimpleStringQuerySerializer() {
- }
-
- public static StringQuerySerializer getInstance() {
- return instance;
- }
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Override
public String serialize(SelectQuery selectQuery) {
@@ -108,50 +105,20 @@
if (queryPattern == null) {
return;
}
- s.append("WHERE\n{\n");
- appendQueryPattern(s, q.getQueryPattern());
- s.append("\n}\n");
- }
-
- private void appendQueryPattern(StringBuffer s, GroupGraphPattern g) {
-
- for (GraphPattern p : g.getGraphPatterns()) {
- if (p instanceof BasicGraphPattern) {
- appendTriplePatterns(s,
- ((BasicGraphPattern)
p).getTriplePatterns());
- } else if (p instanceof GroupGraphPattern) {
- s.append(" {");
- appendQueryPattern(s, (GroupGraphPattern) p);
- s.append("} ");
- } else if (p instanceof OptionalGraphPattern) {
- appendQueryPattern(s,
- (GroupGraphPattern)
((OptionalGraphPattern) p).getMainGraphPattern());
- s.append(" OPTIONAL ");
- appendQueryPattern(s,
- ((OptionalGraphPattern)
p).getOptionalGraphPattern());
- } else if (p instanceof AlternativeGraphPattern) {
- List<GroupGraphPattern>
alternativeGraphPatterns =
- ((AlternativeGraphPattern)
p).getAlternativeGraphPatterns();
- if ((alternativeGraphPatterns != null) &&
-
(!alternativeGraphPatterns.isEmpty())) {
- appendQueryPattern(s,
alternativeGraphPatterns.get(0));
- int size =
alternativeGraphPatterns.size();
- int i = 1;
- while (i < size) {
- s.append(" UNION ");
- appendQueryPattern(s,
alternativeGraphPatterns.get(i));
- i++;
- }
- }
- } else if (p instanceof GraphGraphPattern) {
- s.append("GRAPH ");
- appendResourceOrVariable(s,
((GraphGraphPattern) p).getGraph());
- s.append(" ");
- appendQueryPattern(s, ((GraphGraphPattern)
p).getGroupGraphPattern());
- }
+ s.append("WHERE\n");
+ appendGroupGraphPattern(s, q.getQueryPattern());
+ }
+
+ private void appendGroupGraphPattern(StringBuffer s,
+ GroupGraphPattern groupGraphPattern) {
+
+ s.append("{ ");
+ for (GraphPattern graphPattern :
groupGraphPattern.getGraphPatterns()) {
+ appendGraphPattern(s, graphPattern);
}
- for (Expression e : g.getFilter()) {
- boolean brackettedExpr = !((e instanceof BuiltInCall)
|| (e instanceof FunctionCall));
+ for (Expression e : groupGraphPattern.getFilter()) {
+ boolean brackettedExpr = !((e instanceof BuiltInCall)
+ || (e instanceof FunctionCall));
s.append("FILTER ");
if (brackettedExpr) {
s.append("(");
@@ -162,6 +129,43 @@
}
s.append("\n");
}
+ s.append("} ");
+ }
+
+ private void appendGraphPattern(StringBuffer s, GraphPattern
graphPattern) {
+ if (graphPattern instanceof BasicGraphPattern) {
+ appendTriplePatterns(s,
+ ((BasicGraphPattern)
graphPattern).getTriplePatterns());
+ } else if (graphPattern instanceof GroupGraphPattern) {
+ appendGroupGraphPattern(s, (GroupGraphPattern)
graphPattern);
+ } else if (graphPattern instanceof OptionalGraphPattern) {
+ appendGraphPattern(s,
+ ((OptionalGraphPattern)
graphPattern).getMainGraphPattern());
+ s.append(" OPTIONAL ");
+ appendGroupGraphPattern(s,
+ ((OptionalGraphPattern)
graphPattern).getOptionalGraphPattern());
+ } else if (graphPattern instanceof AlternativeGraphPattern) {
+ List<GroupGraphPattern> alternativeGraphPatterns =
+ ((AlternativeGraphPattern)
graphPattern).getAlternativeGraphPatterns();
+ if ((alternativeGraphPatterns != null) &&
+ (!alternativeGraphPatterns.isEmpty())) {
+ appendGroupGraphPattern(s,
alternativeGraphPatterns.get(0));
+ int size = alternativeGraphPatterns.size();
+ int i = 1;
+ while (i < size) {
+ s.append(" UNION ");
+ appendGroupGraphPattern(s,
alternativeGraphPatterns.get(i));
+ i++;
+ }
+ }
+ } else if (graphPattern instanceof GraphGraphPattern) {
+ s.append("GRAPH ");
+ appendResourceOrVariable(s, ((GraphGraphPattern)
graphPattern).getGraph());
+ s.append(" ");
+ appendGroupGraphPattern(s, ((GraphGraphPattern)
graphPattern).getGroupGraphPattern());
+ } else {
+ logger.warn("Unsupported GraphPattern {}",
graphPattern.getClass());
+ }
}
private void appendTriplePatterns(StringBuffer s,
Modified:
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/test/java/org/apache/clerezza/rdf/core/sparql/QuerySerializerTest.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/test/java/org/apache/clerezza/rdf/core/sparql/QuerySerializerTest.java?rev=890414&r1=890277&r2=890414&view=diff
==============================================================================
---
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/test/java/org/apache/clerezza/rdf/core/sparql/QuerySerializerTest.java
(original)
+++
incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core/src/test/java/org/apache/clerezza/rdf/core/sparql/QuerySerializerTest.java
Mon Dec 14 17:55:41 2009
@@ -35,6 +35,7 @@
import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleConstructQuery;
import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleDescribeQuery;
import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleGroupGraphPattern;
+import
org.apache.clerezza.rdf.core.sparql.query.impl.SimpleOptionalGraphPattern;
import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleOrderCondition;
import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleSelectQuery;
import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleTriplePattern;
@@ -202,4 +203,45 @@
Assert.assertTrue(selectQuery.toString()
.replaceAll("( |\n)+", "
").trim().equals(queryString));
}
+
+ @Test
+ public void testOptional() {
+
+ final String queryString = "SELECT ?title ?price WHERE { " +
+ "?x <http://purl.org/dc/elements/1.1/title>
?title . " +
+ "OPTIONAL { ?x <http://example.org/ns#price>
?price . } " +
+ "}";
+
+ Variable title = new Variable("title");
+ Variable price = new Variable("price");
+ SimpleSelectQuery selectQuery = new SimpleSelectQuery();
+ selectQuery.addSelection(title);
+ selectQuery.addSelection(price);
+
+ Variable x = new Variable("x");
+ Set<TriplePattern> triplePatterns = new
HashSet<TriplePattern>();
+ triplePatterns.add(new SimpleTriplePattern(x,
+ new
UriRef("http://purl.org/dc/elements/1.1/title"), title));
+
+ SimpleBasicGraphPattern bgp = new
SimpleBasicGraphPattern(triplePatterns);
+
+ Set<TriplePattern> triplePatternsOpt = new
HashSet<TriplePattern>();
+ triplePatternsOpt.add(new SimpleTriplePattern(x,
+ new UriRef("http://example.org/ns#price"),
price));
+
+ SimpleBasicGraphPattern bgpOpt =
+ new SimpleBasicGraphPattern(triplePatternsOpt);
+
+ SimpleGroupGraphPattern ggpOpt = new SimpleGroupGraphPattern();
+ ggpOpt.addGraphPattern(bgpOpt);
+
+ SimpleOptionalGraphPattern ogp = new
SimpleOptionalGraphPattern(bgp, ggpOpt);
+
+ SimpleGroupGraphPattern queryPattern = new
SimpleGroupGraphPattern();
+ queryPattern.addGraphPattern(ogp);
+ selectQuery.setQueryPattern(queryPattern);
+
+ Assert.assertTrue(selectQuery.toString()
+ .replaceAll("( |\n)+", "
").trim().equals(queryString));
+ }
}