[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