Revision: 13788
          http://gate.svn.sourceforge.net/gate/?rev=13788&view=rev
Author:   valyt
Date:     2011-05-03 09:44:56 +0000 (Tue, 03 May 2011)

Log Message:
-----------
Intercept errors from the SPARQL endpoint and send them upwards in the guise of 
an IllegalArgumentException.

Modified Paths:
--------------
    mimir/trunk/plugins/sparql/src/gate/mimir/sparql/SPARQLResultSet.java
    
mimir/trunk/plugins/sparql/src/gate/mimir/sparql/SPARQLSemanticAnnotationHelper.java

Modified: mimir/trunk/plugins/sparql/src/gate/mimir/sparql/SPARQLResultSet.java
===================================================================
--- mimir/trunk/plugins/sparql/src/gate/mimir/sparql/SPARQLResultSet.java       
2011-05-03 09:41:36 UTC (rev 13787)
+++ mimir/trunk/plugins/sparql/src/gate/mimir/sparql/SPARQLResultSet.java       
2011-05-03 09:44:56 UTC (rev 13788)
@@ -284,7 +284,7 @@
 //   * @throws Exception
 //   */
 //  public static void main(String[] args) throws Exception{
-//    String query = "PREFIX :<http://dbpedia.org/ontology/> SELECT ?inst 
WHERE { ?inst a ?class . FILTER (?class = :Mountain)} LIMIT 100";
+//    String query = "PREFIX :<http://dbpedia.org/ontology/> THIS IS AN ERROR 
SELECT ?inst WHERE { ?inst a ?class . FILTER (?class = :Mountain)} LIMIT 100";
 //    SPARQLSemanticAnnotationHelper ssah = new SPARQLSemanticAnnotationHelper(
 //            "annType", 
"http://gateservice5:8081/openrdf-workbench/repositories/DBPedia/query";, new 
String[]{}, 
 //            new String[]{}, new String[]{}, new String[]{}, new String[]{}, 

Modified: 
mimir/trunk/plugins/sparql/src/gate/mimir/sparql/SPARQLSemanticAnnotationHelper.java
===================================================================
--- 
mimir/trunk/plugins/sparql/src/gate/mimir/sparql/SPARQLSemanticAnnotationHelper.java
        2011-05-03 09:41:36 UTC (rev 13787)
+++ 
mimir/trunk/plugins/sparql/src/gate/mimir/sparql/SPARQLSemanticAnnotationHelper.java
        2011-05-03 09:44:56 UTC (rev 13788)
@@ -195,11 +195,12 @@
     Set<Mention> mentions = new HashSet<Mention>();
     List<Constraint> passThroughConstraints = new ArrayList<Constraint>();
     String query = null;
+    String originalQuery = null;
     for(Constraint aConstraint : constraints) {
       if(SPARQL_QUERY_FEATURE_NAME.equals(aConstraint.getFeatureName())) {
+        originalQuery = (String)aConstraint.getValue(); 
         query = (queryPrefix != null ? queryPrefix : "") + 
-            (String)aConstraint.getValue() + 
-            (querySuffix != null ? querySuffix : "");
+            originalQuery + (querySuffix != null ? querySuffix : "");
       } else {
         passThroughConstraints.add(aConstraint);
       }
@@ -211,6 +212,17 @@
       // run the query on the SPARQL endpoint
       try {
         SPARQLResultSet srs = runQuery(query);
+        // check for errors
+        for(int i = 0; i < srs.getColumnNames().length; i++) {
+          if(srs.getColumnNames()[i].equals("error-message")) {
+            // we have an error message
+            String errorMessage = (srs.getRows().length > 0 &&  
+                srs.getRows()[0].length > i) ? srs.getRows()[0][i] : null;
+            throw new IllegalArgumentException("Query \"" + originalQuery + 
+                "\" resulted in an error" + 
+                (errorMessage != null ? (":\n" + errorMessage) : "."));
+          }
+        }
         // convert each result row into a query for the delegate
         for(String[] aRow : srs.getRows()) {
           List<Constraint> delegateConstraints =


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network 
management toolset available today.  Delivers lowest initial 
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
GATE-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gate-cvs

Reply via email to