Author: reto
Date: Tue Dec 15 11:08:28 2009
New Revision: 890754

URL: http://svn.apache.org/viewvc?rev=890754&view=rev
Log:
CLEREZZA-15: committing on behalf of manuel

Modified:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/
   (props changed)
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/StringQuerySerializer.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleAskQuery.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleConstructQuery.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleDescribeQuery.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleGroupGraphPattern.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleOptionalGraphPattern.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleSelectQuery.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleStringQuerySerializer.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/test/java/org/apache/clerezza/rdf/core/sparql/QuerySerializerTest.java

Propchange: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Tue Dec 15 11:08:28 2009
@@ -0,0 +1 @@
+/incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core:890278-890753

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/StringQuerySerializer.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/StringQuerySerializer.java?rev=890754&r1=890753&r2=890754&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/StringQuerySerializer.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/StringQuerySerializer.java
 Tue Dec 15 11:08:28 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/trunk/org.apache.clerezza.parent/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/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleAskQuery.java?rev=890754&r1=890753&r2=890754&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleAskQuery.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleAskQuery.java
 Tue Dec 15 11:08:28 2009
@@ -28,6 +28,6 @@
 
        @Override
        public String toString() {
-               return 
SimpleStringQuerySerializer.getInstance().serialize(this);
+               return (new SimpleStringQuerySerializer()).serialize(this);
        }
 }

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/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/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleConstructQuery.java?rev=890754&r1=890753&r2=890754&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleConstructQuery.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleConstructQuery.java
 Tue Dec 15 11:08:28 2009
@@ -45,6 +45,6 @@
 
        @Override
        public String toString() {
-               return 
SimpleStringQuerySerializer.getInstance().serialize(this);
+               return (new SimpleStringQuerySerializer()).serialize(this);
        }
 }

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/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/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleDescribeQuery.java?rev=890754&r1=890753&r2=890754&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleDescribeQuery.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleDescribeQuery.java
 Tue Dec 15 11:08:28 2009
@@ -55,6 +55,6 @@
 
        @Override
        public String toString() {
-               return 
SimpleStringQuerySerializer.getInstance().serialize(this);
+               return (new SimpleStringQuerySerializer()).serialize(this);
        }
 }

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/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/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleGroupGraphPattern.java?rev=890754&r1=890753&r2=890754&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleGroupGraphPattern.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleGroupGraphPattern.java
 Tue Dec 15 11:08:28 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/trunk/org.apache.clerezza.parent/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/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleOptionalGraphPattern.java?rev=890754&r1=890753&r2=890754&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleOptionalGraphPattern.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleOptionalGraphPattern.java
 Tue Dec 15 11:08:28 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/trunk/org.apache.clerezza.parent/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/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleSelectQuery.java?rev=890754&r1=890753&r2=890754&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleSelectQuery.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleSelectQuery.java
 Tue Dec 15 11:08:28 2009
@@ -74,6 +74,6 @@
 
        @Override
        public String toString() {
-               return 
SimpleStringQuerySerializer.getInstance().serialize(this);
+               return (new SimpleStringQuerySerializer()).serialize(this);
        }
 }

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/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/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleStringQuerySerializer.java?rev=890754&r1=890753&r2=890754&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleStringQuerySerializer.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleStringQuerySerializer.java
 Tue Dec 15 11:08:28 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/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/test/java/org/apache/clerezza/rdf/core/sparql/QuerySerializerTest.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/test/java/org/apache/clerezza/rdf/core/sparql/QuerySerializerTest.java?rev=890754&r1=890753&r2=890754&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/test/java/org/apache/clerezza/rdf/core/sparql/QuerySerializerTest.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/test/java/org/apache/clerezza/rdf/core/sparql/QuerySerializerTest.java
 Tue Dec 15 11:08:28 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));
+       }
 }


Reply via email to