[Mulgara-svn] r1328 - trunk/src/jar/util/java/org/mulgara/util
pag at mulgara.org
pag at mulgara.org
Thu Oct 16 19:00:25 UTC 2008
Author: pag
Date: 2008-10-16 12:00:24 -0700 (Thu, 16 Oct 2008)
New Revision: 1328
Modified:
trunk/src/jar/util/java/org/mulgara/util/SparqlUtil.java
trunk/src/jar/util/java/org/mulgara/util/SparqlUtilUnitTest.java
Log:
Better handling for edge cases when detecting SPARQL vs TQL
Modified: trunk/src/jar/util/java/org/mulgara/util/SparqlUtil.java
===================================================================
--- trunk/src/jar/util/java/org/mulgara/util/SparqlUtil.java 2008-10-16 18:59:59 UTC (rev 1327)
+++ trunk/src/jar/util/java/org/mulgara/util/SparqlUtil.java 2008-10-16 19:00:24 UTC (rev 1328)
@@ -28,7 +28,7 @@
public class SparqlUtil {
/** A pattern for extracting the first word from a query */
- static Pattern firstWordPattern = Pattern.compile("^\\s*([^\\{\\s]+)");
+ static Pattern firstWordPattern = Pattern.compile("^\\s*([^\\{\\s\\*\\?\\$]+)");
/** A pattern for finding the first WHERE expression */
static Pattern firstWherePattern = Pattern.compile("\\s+where\\s*", Pattern.CASE_INSENSITIVE);
@@ -71,7 +71,10 @@
// there should be a {. If not, then either interpreter will give an error
if (!m.find()) return true;
- // WHERE exists, so look for the {
- return query.charAt(m.end()) == '{';
+ // WHERE exists, look for the first {
+ int firstBrace = query.indexOf('{', SELECT.length() + 1);
+
+ // make sure the brace exists, and is either part of this WHERE or was the first in the string
+ return firstBrace > 0 && firstBrace <= m.end();
}
}
Modified: trunk/src/jar/util/java/org/mulgara/util/SparqlUtilUnitTest.java
===================================================================
--- trunk/src/jar/util/java/org/mulgara/util/SparqlUtilUnitTest.java 2008-10-16 18:59:59 UTC (rev 1327)
+++ trunk/src/jar/util/java/org/mulgara/util/SparqlUtilUnitTest.java 2008-10-16 19:00:24 UTC (rev 1328)
@@ -96,6 +96,18 @@
assertTrue(SparqlUtil.looksLikeSparql(s1));
assertTrue(SparqlUtil.looksLikeSparql(s1.toUpperCase()));
+ s1 = "select * { ?x ?y 'select ?x ?y ?z from <rmi://localhost/server1#> where { ?x ?y ?z }' }";
+ assertTrue(SparqlUtil.looksLikeSparql(s1));
+ assertTrue(SparqlUtil.looksLikeSparql(s1.toUpperCase()));
+
+ s1 = "select*{?x ?y 'select ?x ?y ?z from <rmi://localhost/server1#> where { ?x ?y ?z }' }";
+ assertTrue(SparqlUtil.looksLikeSparql(s1));
+ assertTrue(SparqlUtil.looksLikeSparql(s1.toUpperCase()));
+
+ s1 = "select$x{?x ?y 'select ?x ?y ?z from <rmi://localhost/server1#> where { ?x ?y ?z }' }";
+ assertTrue(SparqlUtil.looksLikeSparql(s1));
+ assertTrue(SparqlUtil.looksLikeSparql(s1.toUpperCase()));
+
s1 = "select ?x ?y from <rmi://localhost/server1#> where { ?x ?y 'select ?x ?y ?z from <rmi://localhost/server1#> where { ?x ?y ?z }' }";
assertTrue(SparqlUtil.looksLikeSparql(s1));
assertTrue(SparqlUtil.looksLikeSparql(s1.toUpperCase()));
More information about the Mulgara-svn
mailing list