You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2012/10/02 21:23:53 UTC

svn commit: r1393120 - in /jena/trunk/jena-arq: ReleaseNotes.txt src/main/java/com/hp/hpl/jena/sparql/lang/ParserBase.java src/main/java/com/hp/hpl/jena/sparql/lang/ParserQueryBase.java

Author: andy
Date: Tue Oct  2 19:23:53 2012
New Revision: 1393120

URL: http://svn.apache.org/viewvc?rev=1393120&view=rev
Log:
Blank node labels can not be reused across different INSERT DATA operations in the same SPARQL Update Request (spec clarification)

Modified:
    jena/trunk/jena-arq/ReleaseNotes.txt
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/ParserBase.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/ParserQueryBase.java

Modified: jena/trunk/jena-arq/ReleaseNotes.txt
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/ReleaseNotes.txt?rev=1393120&r1=1393119&r2=1393120&view=diff
==============================================================================
--- jena/trunk/jena-arq/ReleaseNotes.txt (original)
+++ jena/trunk/jena-arq/ReleaseNotes.txt Tue Oct  2 19:23:53 2012
@@ -4,10 +4,12 @@ ChangeLog for ARQ
 
 ==== ARQ 2.9.4
 
++ Blank node labels can not be reused across different INSERT DATA operations in the same SPARQL Update Request
+  (spec clarification) 
 + JENA-322 : Make jcl-over-slf4 a required dependency
 + JENA-321 : Remove GraphStore.(start|finish)Request() (was previosuly deprecated)
 + Remove deprecated QueryExecutionBase.cancelAllowDrain (see JENA-93)
-+ Implement WG decision on BIND : use original semantics. 
++ Implement SPARQL-WG decision on BIND : use original semantics. 
 + JENA-294 : improved optimization of sequeneces of OPTIONALs where the grouois only OPTIONAL and an equality filter
 + JENA-302 Add URIs for all XQuery/Xpath F&O functions for duration accessors
 + JENA-303 Add URIs for all XQuery/Xpath F&O functions where there are SPARQL functions

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/ParserBase.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/ParserBase.java?rev=1393120&r1=1393119&r2=1393120&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/ParserBase.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/ParserBase.java Tue Oct  2 19:23:53 2012
@@ -297,9 +297,7 @@ public class ParserBase
     // -------- Basic Graph Patterns and Blank Node label scopes
     
     // A BasicGraphPattern is any sequence of TripleBlocks, separated by filters,
-    // but not by other graph patterns 
-    
-    // SPARQL does not have a straight syntactic unit for BGPs - but prefix does. 
+    // but not by other graph patterns. 
     
     protected void startBasicGraphPattern()
     { activeLabelMap.clear() ; }

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/ParserQueryBase.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/ParserQueryBase.java?rev=1393120&r1=1393119&r2=1393120&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/ParserQueryBase.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/ParserQueryBase.java Tue Oct  2 19:23:53 2012
@@ -18,10 +18,7 @@
 
 package com.hp.hpl.jena.sparql.lang;
 
-import java.util.ArrayDeque ;
-import java.util.ArrayList ;
-import java.util.Deque ;
-import java.util.List ;
+import java.util.* ;
 
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.query.Query ;
@@ -78,6 +75,12 @@ public class ParserQueryBase extends Par
     protected void startQuery() {}
     protected void finishQuery() {}
 
+//    protected void startBasicGraphPattern()
+//    { activeLabelMap.clear() ; }
+//
+//    protected void endBasicGraphPattern()
+//    { oldLabels.addAll(activeLabelMap.getLabels()) ; }
+    
     // Move down to SPARQL 1.1 or rename as ParserBase
     protected void startUpdateOperation() {}
     protected void finishUpdateOperation() {}
@@ -90,9 +93,13 @@ public class ParserQueryBase extends Par
     {
         oldBNodesAreVariables = getBNodesAreVariables() ;
         setBNodesAreVariables(false) ;
+        activeLabelMap.clear() ;
     } 
+    
     protected void finishDataInsert(QuadDataAcc qd, int line, int col)
     {
+        oldLabels.addAll(activeLabelMap.getLabels()) ;
+        activeLabelMap.clear() ;
         setBNodesAreVariables(oldBNodesAreVariables) ;
     }
     
@@ -109,15 +116,23 @@ public class ParserQueryBase extends Par
         setBNodesAreAllowed(oldBNodesAreAllowed) ;
     }
     
+    Set<String> oldLabels2 = null ;
+    
     protected void startInsertTemplate(QuadAcc qd, int line, int col)
     {
         oldBNodesAreVariables = getBNodesAreVariables() ;
         setBNodesAreVariables(false) ;
+        // Hide used labels (INSERT DATA)
+        oldLabels2 = oldLabels ;
+        oldLabels = new HashSet<String>() ;
+        activeLabelMap.clear() ;
     }
     
     protected void finishInsertTemplate(QuadAcc qd, int line, int col)
     {
         setBNodesAreVariables(oldBNodesAreVariables) ;
+        oldLabels = oldLabels2 ;
+        activeLabelMap.clear() ;
     }
     
     protected void startDeleteTemplate(QuadAcc qd, int line, int col)