You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by ha...@apache.org on 2012/12/08 14:20:09 UTC
svn commit: r1418671 - in /incubator/clerezza/trunk/rdf.core/src:
main/java/org/apache/clerezza/rdf/core/sparql/query/
main/java/org/apache/clerezza/rdf/core/sparql/query/impl/
main/javacc/org/apache/clerezza/rdf/core/sparql/
test/java/org/apache/clere...
Author: hasan
Date: Sat Dec 8 13:20:03 2012
New Revision: 1418671
URL: http://svn.apache.org/viewvc?rev=1418671&view=rev
Log:
CLEREZZA-725: improved SPARQL query parsing and serialization with respect to preservation of pattern ordering
Added:
incubator/clerezza/trunk/rdf.core/src/test/java/org/apache/clerezza/rdf/core/sparql/QueryParserSerializerCombinationTest.java
Modified:
incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/BasicGraphPattern.java
incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/ConstructQuery.java
incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/GroupGraphPattern.java
incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleBasicGraphPattern.java
incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleConstructQuery.java
incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleGroupGraphPattern.java
incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleStringQuerySerializer.java
incubator/clerezza/trunk/rdf.core/src/main/javacc/org/apache/clerezza/rdf/core/sparql/JavaCCGeneratedQueryParser.jj
incubator/clerezza/trunk/rdf.core/src/test/java/org/apache/clerezza/rdf/core/sparql/QuerySerializerTest.java
Modified: incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/BasicGraphPattern.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/BasicGraphPattern.java?rev=1418671&r1=1418670&r2=1418671&view=diff
==============================================================================
--- incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/BasicGraphPattern.java (original)
+++ incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/BasicGraphPattern.java Sat Dec 8 13:20:03 2012
@@ -18,6 +18,7 @@
*/
package org.apache.clerezza.rdf.core.sparql.query;
+import java.util.List;
import java.util.Set;
/**
@@ -30,9 +31,15 @@ import java.util.Set;
public interface BasicGraphPattern extends GraphPattern {
/**
- *
+ * @deprecated use getTriplePatternList instead and convert the result to a Set if needed
* @return a set of all triple patterns to match.
*/
public Set<TriplePattern> getTriplePatterns();
+ /**
+ *
+ * @return a list of all triple patterns to match.
+ */
+ public List<TriplePattern> getTriplePatternList();
+
}
Modified: incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/ConstructQuery.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/ConstructQuery.java?rev=1418671&r1=1418670&r2=1418671&view=diff
==============================================================================
--- incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/ConstructQuery.java (original)
+++ incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/ConstructQuery.java Sat Dec 8 13:20:03 2012
@@ -18,6 +18,7 @@
*/
package org.apache.clerezza.rdf.core.sparql.query;
+import java.util.List;
import java.util.Set;
/**
@@ -31,6 +32,8 @@ import java.util.Set;
public interface ConstructQuery extends QueryWithSolutionModifier {
/**
+ * @deprecated use getTemplate instead and convert the result to a Set if needed
+ *
* <p>Gets the template for constructing triples in a CONSTRUCT query.</p>
* @see <a href="http://www.w3.org/TR/rdf-sparql-query/#construct">
* SPARQL Query Language: 10.2 CONSTRUCT</a>
@@ -38,4 +41,13 @@ public interface ConstructQuery extends
* new triples.
*/
public Set<TriplePattern> getConstructTemplate();
+
+ /**
+ * <p>Gets the template for constructing triples in a CONSTRUCT query.</p>
+ * @see <a href="http://www.w3.org/TR/rdf-sparql-query/#construct">
+ * SPARQL Query Language: 10.2 CONSTRUCT</a>
+ * @return a template as a list of triple patterns for constructing
+ * new triples.
+ */
+ public List<TriplePattern> getTemplate();
}
Modified: incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/GroupGraphPattern.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/GroupGraphPattern.java?rev=1418671&r1=1418670&r2=1418671&view=diff
==============================================================================
--- incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/GroupGraphPattern.java (original)
+++ incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/GroupGraphPattern.java Sat Dec 8 13:20:03 2012
@@ -31,12 +31,19 @@ import java.util.Set;
public interface GroupGraphPattern extends GraphPattern {
/**
+ * @deprecated use getGraphPatternList instead and convert the result to a Set if needed
*
* @return a set of all patterns, ANDed together.
*/
public Set<GraphPattern> getGraphPatterns();
/**
+ *
+ * @return a list of all patterns, ANDed together.
+ */
+ public List<GraphPattern> getGraphPatternList();
+
+ /**
* @return
* a list of filter expressions for all patterns in the group if any,
* otherwise an empty list is returned.
Modified: incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleBasicGraphPattern.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleBasicGraphPattern.java?rev=1418671&r1=1418670&r2=1418671&view=diff
==============================================================================
--- incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleBasicGraphPattern.java (original)
+++ incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleBasicGraphPattern.java Sat Dec 8 13:20:03 2012
@@ -18,7 +18,9 @@
*/
package org.apache.clerezza.rdf.core.sparql.query.impl;
+import java.util.ArrayList;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
import org.apache.clerezza.rdf.core.sparql.query.BasicGraphPattern;
import org.apache.clerezza.rdf.core.sparql.query.TriplePattern;
@@ -29,20 +31,36 @@ import org.apache.clerezza.rdf.core.spar
*/
public class SimpleBasicGraphPattern implements BasicGraphPattern {
- private Set<TriplePattern> triplePatterns;
+ private List<TriplePattern> triplePatterns = new ArrayList<TriplePattern>();
public SimpleBasicGraphPattern(Set<TriplePattern> triplePatterns) {
- this.triplePatterns = (triplePatterns == null)
- ? new HashSet<TriplePattern>()
- : triplePatterns;
+ if (triplePatterns != null) {
+ this.triplePatterns.addAll(triplePatterns);
+ }
+ }
+
+ public SimpleBasicGraphPattern(List<TriplePattern> triplePatterns) {
+ if (triplePatterns != null) {
+ this.triplePatterns = triplePatterns;
+ }
}
@Override
+ @Deprecated
public Set<TriplePattern> getTriplePatterns() {
+ return new HashSet(triplePatterns);
+ }
+
+ @Override
+ public List<TriplePattern> getTriplePatternList() {
return triplePatterns;
}
public void addTriplePatterns(Set<TriplePattern> triplePatterns) {
this.triplePatterns.addAll(triplePatterns);
}
+
+ public void addTriplePatterns(List<TriplePattern> triplePatterns) {
+ this.triplePatterns.addAll(triplePatterns);
+ }
}
Modified: incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleConstructQuery.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleConstructQuery.java?rev=1418671&r1=1418670&r2=1418671&view=diff
==============================================================================
--- incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleConstructQuery.java (original)
+++ incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleConstructQuery.java Sat Dec 8 13:20:03 2012
@@ -18,7 +18,9 @@
*/
package org.apache.clerezza.rdf.core.sparql.query.impl;
+import java.util.ArrayList;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
import org.apache.clerezza.rdf.core.sparql.query.TriplePattern;
@@ -30,16 +32,28 @@ import org.apache.clerezza.rdf.core.spar
public class SimpleConstructQuery extends SimpleQueryWithSolutionModifier
implements ConstructQuery {
- private Set<TriplePattern> triplePatterns;
+ private List<TriplePattern> triplePatterns = new ArrayList<TriplePattern>();
public SimpleConstructQuery(Set<TriplePattern> triplePatterns) {
- this.triplePatterns = (triplePatterns == null)
- ? new HashSet<TriplePattern>()
- : triplePatterns;
+ if (triplePatterns != null) {
+ this.triplePatterns.addAll(triplePatterns);
+ }
+ }
+
+ public SimpleConstructQuery(List<TriplePattern> triplePatterns) {
+ if (triplePatterns != null) {
+ this.triplePatterns = triplePatterns;
+ }
}
@Override
+ @Deprecated
public Set<TriplePattern> getConstructTemplate() {
+ return new HashSet(triplePatterns);
+ }
+
+ @Override
+ public List<TriplePattern> getTemplate() {
return triplePatterns;
}
Modified: incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleGroupGraphPattern.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleGroupGraphPattern.java?rev=1418671&r1=1418670&r2=1418671&view=diff
==============================================================================
--- incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleGroupGraphPattern.java (original)
+++ incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleGroupGraphPattern.java Sat Dec 8 13:20:03 2012
@@ -39,11 +39,17 @@ public class SimpleGroupGraphPattern imp
private List<GraphPattern> graphPatterns = new ArrayList<GraphPattern>();
@Override
+ @Deprecated
public Set<GraphPattern> getGraphPatterns() {
return new HashSet(graphPatterns);
}
@Override
+ public List<GraphPattern> getGraphPatternList() {
+ return graphPatterns;
+ }
+
+ @Override
public List<Expression> getFilter() {
return constraints;
}
@@ -80,6 +86,21 @@ public class SimpleGroupGraphPattern imp
* {@link SimpleBasicGraphPattern} of the group.
*/
public void addTriplePatterns(Set<TriplePattern> triplePatterns) {
+ addTriplePatterns(new ArrayList(triplePatterns));
+ }
+
+ /**
+ * 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 list of {@link TriplePattern}s to be added into a
+ * {@link SimpleBasicGraphPattern} of the group.
+ */
+ public void addTriplePatterns(List<TriplePattern> triplePatterns) {
GraphPattern prevGraphPattern;
int size = graphPatterns.size();
if (size > 0) {
Modified: incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleStringQuerySerializer.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleStringQuerySerializer.java?rev=1418671&r1=1418670&r2=1418671&view=diff
==============================================================================
--- incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleStringQuerySerializer.java (original)
+++ incubator/clerezza/trunk/rdf.core/src/main/java/org/apache/clerezza/rdf/core/sparql/query/impl/SimpleStringQuerySerializer.java Sat Dec 8 13:20:03 2012
@@ -19,7 +19,6 @@
package org.apache.clerezza.rdf.core.sparql.query.impl;
import java.util.List;
-import java.util.Set;
import org.apache.clerezza.rdf.core.BNode;
import org.apache.clerezza.rdf.core.Resource;
import org.apache.clerezza.rdf.core.UriRef;
@@ -114,7 +113,7 @@ public class SimpleStringQuerySerializer
GroupGraphPattern groupGraphPattern) {
s.append("{ ");
- for (GraphPattern graphPattern : groupGraphPattern.getGraphPatterns()) {
+ for (GraphPattern graphPattern : groupGraphPattern.getGraphPatternList()) {
appendGraphPattern(s, graphPattern);
}
for (Expression e : groupGraphPattern.getFilter()) {
@@ -136,7 +135,7 @@ public class SimpleStringQuerySerializer
private void appendGraphPattern(StringBuffer s, GraphPattern graphPattern) {
if (graphPattern instanceof BasicGraphPattern) {
appendTriplePatterns(s,
- ((BasicGraphPattern) graphPattern).getTriplePatterns());
+ ((BasicGraphPattern) graphPattern).getTriplePatternList());
} else if (graphPattern instanceof GroupGraphPattern) {
appendGroupGraphPattern(s, (GroupGraphPattern) graphPattern);
} else if (graphPattern instanceof OptionalGraphPattern) {
@@ -170,7 +169,7 @@ public class SimpleStringQuerySerializer
}
private void appendTriplePatterns(StringBuffer s,
- Set<TriplePattern> triplePatterns) {
+ List<TriplePattern> triplePatterns) {
for (TriplePattern p : triplePatterns) {
appendResourceOrVariable(s, p.getSubject());
@@ -271,7 +270,7 @@ public class SimpleStringQuerySerializer
@Override
public String serialize(ConstructQuery constructQuery) {
StringBuffer s = new StringBuffer("CONSTRUCT\n");
- Set<TriplePattern> triplePatterns = constructQuery.getConstructTemplate();
+ List<TriplePattern> triplePatterns = constructQuery.getTemplate();
s.append("{ ");
if (triplePatterns != null && !triplePatterns.isEmpty()) {
appendTriplePatterns(s, triplePatterns);
Modified: incubator/clerezza/trunk/rdf.core/src/main/javacc/org/apache/clerezza/rdf/core/sparql/JavaCCGeneratedQueryParser.jj
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/rdf.core/src/main/javacc/org/apache/clerezza/rdf/core/sparql/JavaCCGeneratedQueryParser.jj?rev=1418671&r1=1418670&r2=1418671&view=diff
==============================================================================
--- incubator/clerezza/trunk/rdf.core/src/main/javacc/org/apache/clerezza/rdf/core/sparql/JavaCCGeneratedQueryParser.jj (original)
+++ incubator/clerezza/trunk/rdf.core/src/main/javacc/org/apache/clerezza/rdf/core/sparql/JavaCCGeneratedQueryParser.jj Sat Dec 8 13:20:03 2012
@@ -33,10 +33,8 @@ package org.apache.clerezza.rdf.core.spa
import java.util.ArrayList;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.clerezza.rdf.core.BNode;
@@ -145,10 +143,10 @@ class JavaCCGeneratedQueryParser {
return v;
}
- private void addTriplePatterns(Set<TriplePattern> triplePatterns,
+ private void addTriplePatterns(List<TriplePattern> triplePatterns,
ResourceOrVariable subject,
UriRefOrVariable predicate,
- Set<ResourceOrVariable> objects) {
+ List<ResourceOrVariable> objects) {
for (ResourceOrVariable object : objects) {
triplePatterns.add(
@@ -158,7 +156,7 @@ class JavaCCGeneratedQueryParser {
// nodes contain at least one element
private ResourceOrVariable addTriplePatterns(
- Set<TriplePattern> triplePatterns,
+ List<TriplePattern> triplePatterns,
List<ResourceOrVariable> nodes) {
ResourceOrVariable head = null;
@@ -344,7 +342,7 @@ private void SelectQuery() : {
/* [6] ConstructQuery ::= 'CONSTRUCT' ConstructTemplate DatasetClause* WhereClause SolutionModifier */
private void ConstructQuery() : {
- Set<TriplePattern> triplePatterns = null; } {
+ List<TriplePattern> triplePatterns = null; } {
<CONSTRUCT>
triplePatterns=ConstructTemplate() {
@@ -491,7 +489,7 @@ private GroupGraphPattern GroupGraphPatt
/* [21] TriplesBlock ::= TriplesSameSubject ( '.' TriplesBlock? )? */
private void TriplesBlock(GroupGraphPattern groupGraphPattern) : {
- Set<TriplePattern> triplePatterns; } {
+ List<TriplePattern> triplePatterns; } {
triplePatterns=TriplesSameSubject() {
((SimpleGroupGraphPattern) groupGraphPattern).addTriplePatterns(triplePatterns); }
@@ -604,8 +602,8 @@ private List<Expression> ArgList() : {
}
/* [30] ConstructTemplate ::= '{' ConstructTriples? '}' */
-private Set<TriplePattern> ConstructTemplate() : {
- Set<TriplePattern> triplePatterns = null; } {
+private List<TriplePattern> ConstructTemplate() : {
+ List<TriplePattern> triplePatterns = null; } {
"{" (
triplePatterns=ConstructTriples()
@@ -614,8 +612,8 @@ private Set<TriplePattern> ConstructTemp
}
/* [31] ConstructTriples ::= TriplesSameSubject ( '.' ConstructTriples? )? */
-private Set<TriplePattern> ConstructTriples() : {
- Set<TriplePattern> triplePatterns, t; } {
+private List<TriplePattern> ConstructTriples() : {
+ List<TriplePattern> triplePatterns, t; } {
triplePatterns=TriplesSameSubject()
( "."
@@ -628,8 +626,8 @@ private Set<TriplePattern> ConstructTrip
}
/* [32] TriplesSameSubject ::= VarOrTerm PropertyListNotEmpty | TriplesNode PropertyList */
-private Set<TriplePattern> TriplesSameSubject() : {
- Set<TriplePattern> triplePatterns = new HashSet<TriplePattern>();
+private List<TriplePattern> TriplesSameSubject() : {
+ List<TriplePattern> triplePatterns = new ArrayList<TriplePattern>();
ResourceOrVariable subject; } {
( subject=VarOrTerm() PropertyListNotEmpty(subject, triplePatterns) {
@@ -643,9 +641,9 @@ private Set<TriplePattern> TriplesSameSu
/* [33] PropertyListNotEmpty ::= Verb ObjectList ( ';' ( Verb ObjectList )? )* */
private void PropertyListNotEmpty(ResourceOrVariable subject,
- Set<TriplePattern> triplePatterns) : {
+ List<TriplePattern> triplePatterns) : {
UriRefOrVariable predicate;
- Set<ResourceOrVariable> objects; } {
+ List<ResourceOrVariable> objects; } {
predicate=Verb()
objects=ObjectList(triplePatterns) {
addTriplePatterns(triplePatterns, subject, predicate, objects); }
@@ -659,16 +657,16 @@ private void PropertyListNotEmpty(Resour
/* [34] PropertyList ::= PropertyListNotEmpty? */
private void PropertyList(ResourceOrVariable subject,
- Set<TriplePattern> triplePatterns) : { } {
+ List<TriplePattern> triplePatterns) : { } {
( PropertyListNotEmpty(subject, triplePatterns) )?
}
/* [35] ObjectList ::= Object ( ',' Object )* */
-private Set<ResourceOrVariable> ObjectList(Set<TriplePattern> triplePatterns) : {
+private List<ResourceOrVariable> ObjectList(List<TriplePattern> triplePatterns) : {
ResourceOrVariable object; } {
{
- Set<ResourceOrVariable> objects = new HashSet<ResourceOrVariable>();
+ List<ResourceOrVariable> objects = new ArrayList<ResourceOrVariable>();
}
object=Object(triplePatterns) {
objects.add(object); }
@@ -681,7 +679,7 @@ private Set<ResourceOrVariable> ObjectLi
}
/* [36] Object ::= GraphNode */
-private ResourceOrVariable Object(Set<TriplePattern> triplePatterns) : {
+private ResourceOrVariable Object(List<TriplePattern> triplePatterns) : {
ResourceOrVariable object; } {
object=GraphNode(triplePatterns) {
@@ -698,9 +696,9 @@ private UriRefOrVariable Verb() : {
return new UriRefOrVariable(RDF_TYPE); }
}
-// Fill in the specified set of TriplePattern and returns the subject node
+// Fill in the specified list of TriplePattern and returns the subject node
/* [38] TriplesNode ::= Collection | BlankNodePropertyList */
-private ResourceOrVariable TriplesNode(Set<TriplePattern> triplePatterns) : {
+private ResourceOrVariable TriplesNode(List<TriplePattern> triplePatterns) : {
ResourceOrVariable subject; } {
(
subject=Collection(triplePatterns)
@@ -711,7 +709,7 @@ private ResourceOrVariable TriplesNode(S
}
/* [39] BlankNodePropertyList ::= '[' PropertyListNotEmpty ']' */
-private ResourceOrVariable BlankNodePropertyList(Set<TriplePattern> triplePatterns) : { } {
+private ResourceOrVariable BlankNodePropertyList(List<TriplePattern> triplePatterns) : { } {
{
ResourceOrVariable subject = getNewBNode();
}
@@ -720,7 +718,7 @@ private ResourceOrVariable BlankNodeProp
}
/* [40] Collection ::= '(' GraphNode+ ')' */
-private ResourceOrVariable Collection(Set<TriplePattern> triplePatterns) : {
+private ResourceOrVariable Collection(List<TriplePattern> triplePatterns) : {
ResourceOrVariable node;
List<ResourceOrVariable> nodes = new ArrayList<ResourceOrVariable>(); } {
@@ -734,7 +732,7 @@ private ResourceOrVariable Collection(Se
}
/* [41] GraphNode ::= VarOrTerm | TriplesNode */
-private ResourceOrVariable GraphNode(Set<TriplePattern> triplePatterns) : {
+private ResourceOrVariable GraphNode(List<TriplePattern> triplePatterns) : {
ResourceOrVariable node; } {
(
Added: incubator/clerezza/trunk/rdf.core/src/test/java/org/apache/clerezza/rdf/core/sparql/QueryParserSerializerCombinationTest.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/rdf.core/src/test/java/org/apache/clerezza/rdf/core/sparql/QueryParserSerializerCombinationTest.java?rev=1418671&view=auto
==============================================================================
--- incubator/clerezza/trunk/rdf.core/src/test/java/org/apache/clerezza/rdf/core/sparql/QueryParserSerializerCombinationTest.java (added)
+++ incubator/clerezza/trunk/rdf.core/src/test/java/org/apache/clerezza/rdf/core/sparql/QueryParserSerializerCombinationTest.java Sat Dec 8 13:20:03 2012
@@ -0,0 +1,140 @@
+/*
+ * 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 org.apache.clerezza.rdf.core.sparql;
+
+import org.apache.clerezza.rdf.core.sparql.query.Query;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ *
+ * @author hasan
+ */
+public class QueryParserSerializerCombinationTest {
+
+ public QueryParserSerializerCombinationTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() {
+ }
+
+ @AfterClass
+ public static void tearDownClass() {
+ }
+
+ @Before
+ public void setUp() {
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ @Test
+ public void testPatternOrderPreservation() throws Exception {
+ String queryString =
+ "SELECT ?property ?range ?property_description ?subproperty ?subproperty_description \n"
+ + "WHERE\n"
+ + "{ ?property <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .\n"
+ + "{ { ?property <http://www.w3.org/2000/01/rdf-schema#domain> ?superclass .\n"
+ + "<http://example.org/ontologies/market_ontology.owl#Company> <http://www.w3.org/2000/01/rdf-schema#subClassOf> ?superclass .\n"
+ + "} UNION { ?property <http://www.w3.org/2000/01/rdf-schema#domain> ?dunion .\n"
+ + "?dunion <http://www.w3.org/2002/07/owl#unionOf> ?dlist .\n"
+ + "?dlist <http://jena.hpl.hp.com/ARQ/list#member> ?superclass .\n"
+ + "<http://example.org/ontologies/market_ontology.owl#Company> <http://www.w3.org/2000/01/rdf-schema#subClassOf> ?superclass .\n"
+ + "} } { { ?property <http://www.w3.org/2000/01/rdf-schema#range> ?superrange .\n"
+ + "?range <http://www.w3.org/2000/01/rdf-schema#subClassOf> ?superrange .\n"
+ + "FILTER (! (isBLANK(?range)))\n"
+ + "} UNION { ?property <http://www.w3.org/2000/01/rdf-schema#range> ?range .\n"
+ + "FILTER (! (isBLANK(?range)))\n"
+ + "} } OPTIONAL { ?somesub <http://www.w3.org/2000/01/rdf-schema#subClassOf> ?range .\n"
+ + "FILTER (((?somesub) != (<http://www.w3.org/2002/07/owl#Nothing>)) && ((?somesub) != (?range)))\n"
+ + "} OPTIONAL { ?subproperty <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> ?property .\n"
+ + " OPTIONAL { ?subproperty <http://purl.org/dc/elements/1.1/description> ?subproperty_description .\n"
+ + "} FILTER (((?subproperty) != (<http://www.w3.org/2002/07/owl#bottomObjectProperty>)) && ((?subproperty) != (?property)))\n"
+ + "} OPTIONAL { ?property <http://purl.org/dc/elements/1.1/description> ?property_description .\n"
+ + "} FILTER ((?property) != (<http://www.w3.org/2002/07/owl#bottomObjectProperty>))\n"
+ + "FILTER ((?range) != (<http://www.w3.org/2002/07/owl#Nothing>))\n"
+ + "FILTER (! (BOUND(?somesub)))\n"
+ + "} \n";
+
+ Query query = QueryParser.getInstance().parse(queryString);
+ Assert.assertEquals(queryString.replaceAll("\\s", "").trim(), query.toString().replaceAll("\\s", "").trim());
+ }
+
+ @Test
+ public void testParsingAndSerializationStability() throws Exception {
+ String queryString =
+ "PREFIX mo: <http://example.org/ontologies/market_ontology.owl#>\n"
+ + "PREFIX list: <http://jena.hpl.hp.com/ARQ/list#>\n"
+ + "PREFIX owl: <http://www.w3.org/2002/07/owl#>\n"
+ + "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n"
+ + "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n"
+ + "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n"
+ + "SELECT ?property ?range ?property_description ?subproperty ?subproperty_description\n"
+ + "WHERE {\n"
+ + " ?property a owl:ObjectProperty .\n"
+ + " FILTER (?property != owl:bottomObjectProperty) .\n"
+ + " {\n"
+ + " {\n"
+ + " ?property rdfs:domain ?superclass .\n"
+ + " mo:Company rdfs:subClassOf ?superclass .\n"
+ + " }\n"
+ + " UNION\n"
+ + " {\n"
+ + " ?property rdfs:domain ?dunion .\n"
+ + " ?dunion owl:unionOf ?dlist .\n"
+ + " ?dlist list:member ?superclass .\n"
+ + " mo:Company rdfs:subClassOf ?superclass .\n"
+ + " }\n"
+ + " }\n"
+ + " {\n"
+ + " {\n"
+ + " ?property rdfs:range ?superrange .\n"
+ + " ?range rdfs:subClassOf ?superrange .\n"
+ + " FILTER (!isBlank(?range)) .\n"
+ + " }\n"
+ + " UNION\n"
+ + " {\n"
+ + " ?property rdfs:range ?range .\n"
+ + " FILTER (!isBlank(?range)) .\n"
+ + " }\n"
+ + " } .\n"
+ + " FILTER (?range != owl:Nothing) .\n"
+ + " OPTIONAL { ?somesub rdfs:subClassOf ?range . FILTER(?somesub != owl:Nothing && ?somesub != ?range)}\n"
+ + " FILTER (!bound(?somesub)) .\n"
+ + " OPTIONAL {\n"
+ + " ?subproperty rdfs:subPropertyOf ?property .\n"
+ + " FILTER(?subproperty != owl:bottomObjectProperty && ?subproperty != ?property)\n"
+ + " OPTIONAL { ?subproperty dc:description ?subproperty_description . }\n"
+ + " }\n"
+ + " OPTIONAL { ?property dc:description ?property_description . }\n"
+ + "} ";
+
+ Query query1 = QueryParser.getInstance().parse(queryString);
+ Thread.sleep(5000l);
+ Query query2 = QueryParser.getInstance().parse(queryString);
+ Assert.assertEquals(query1.toString(), query2.toString());
+ }
+}
Modified: incubator/clerezza/trunk/rdf.core/src/test/java/org/apache/clerezza/rdf/core/sparql/QuerySerializerTest.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/rdf.core/src/test/java/org/apache/clerezza/rdf/core/sparql/QuerySerializerTest.java?rev=1418671&r1=1418670&r2=1418671&view=diff
==============================================================================
--- incubator/clerezza/trunk/rdf.core/src/test/java/org/apache/clerezza/rdf/core/sparql/QuerySerializerTest.java (original)
+++ incubator/clerezza/trunk/rdf.core/src/test/java/org/apache/clerezza/rdf/core/sparql/QuerySerializerTest.java Sat Dec 8 13:20:03 2012
@@ -22,8 +22,6 @@ import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import org.junit.Assert;
-import org.junit.Test;
import org.apache.clerezza.rdf.core.LiteralFactory;
import org.apache.clerezza.rdf.core.UriRef;
import org.apache.clerezza.rdf.core.sparql.query.BinaryOperation;
@@ -44,6 +42,8 @@ import org.apache.clerezza.rdf.core.spar
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;
+import org.junit.Assert;
+import org.junit.Test;
/**
*