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/11/30 19:21:46 UTC

svn commit: r1415776 - in /jena/trunk/jena-arq/src: main/java/arq/cmdline/ main/java/com/hp/hpl/jena/sparql/lang/ main/java/org/openjena/riot/system/ test/java/org/openjena/riot/lang/

Author: andy
Date: Fri Nov 30 18:21:45 2012
New Revision: 1415776

URL: http://svn.apache.org/viewvc?rev=1415776&view=rev
Log:
Process "BNode IRIs" (i.e. <_:label>) in parsed data.

Modified:
    jena/trunk/jena-arq/src/main/java/arq/cmdline/ModSymbol.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/ParserBase.java
    jena/trunk/jena-arq/src/main/java/org/openjena/riot/system/ParserProfileBase.java
    jena/trunk/jena-arq/src/main/java/org/openjena/riot/system/ParserProfileChecker.java
    jena/trunk/jena-arq/src/main/java/org/openjena/riot/system/RiotLib.java
    jena/trunk/jena-arq/src/test/java/org/openjena/riot/lang/TestIRI.java

Modified: jena/trunk/jena-arq/src/main/java/arq/cmdline/ModSymbol.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/arq/cmdline/ModSymbol.java?rev=1415776&r1=1415775&r2=1415776&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/arq/cmdline/ModSymbol.java (original)
+++ jena/trunk/jena-arq/src/main/java/arq/cmdline/ModSymbol.java Fri Nov 30 18:21:45 2012
@@ -51,6 +51,8 @@ public class ModSymbol implements ArgMod
     @Override
     public void processArgs(CmdArgModule cmdLine)
     {
+        ARQ.init();
+        
         if ( cmdLine.getValues(setDecl) == null || cmdLine.getValues(setDecl).size() == 0 )
             return ;
         

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=1415776&r1=1415775&r2=1415776&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 Fri Nov 30 18:21:45 2012
@@ -23,6 +23,7 @@ import java.util.HashSet ;
 import java.util.Set ;
 
 import org.apache.jena.atlas.logging.Log ;
+import org.openjena.riot.system.RiotLib ;
 
 import com.hp.hpl.jena.datatypes.RDFDatatype ;
 import com.hp.hpl.jena.datatypes.TypeMapper ;
@@ -32,7 +33,6 @@ import com.hp.hpl.jena.graph.Triple ;
 import com.hp.hpl.jena.n3.JenaURIException ;
 import com.hp.hpl.jena.query.ARQ ;
 import com.hp.hpl.jena.query.QueryParseException ;
-import com.hp.hpl.jena.rdf.model.AnonId ;
 import com.hp.hpl.jena.sparql.ARQInternalErrorException ;
 import com.hp.hpl.jena.sparql.core.Prologue ;
 import com.hp.hpl.jena.sparql.core.TriplePath ;
@@ -232,10 +232,8 @@ public class ParserBase
     }
 
     // ---- IRIs and Nodes
-    
-    final static String bNodeLabelStart = "_:" ;
-    
-    boolean skolomizedBNodes = ARQ.isTrue(ARQ.constantBNodeLabels) ;
+    // See RiotLib re bNode IRIs.
+    // Merge sometime.
     
     protected String resolveQuotedIRI(String iriStr ,int line, int column)
     {
@@ -278,24 +276,20 @@ public class ParserBase
         return s ;
     }
     
+    boolean skolomizedBNodes = ARQ.isTrue(ARQ.constantBNodeLabels) ;
     protected Node createNode(String iri)
     {
-        // Is it a bNode label? i.e. <_:xyz>
-        if ( isBNodeIRI(iri) )
-        {
-            String s = iri.substring(bNodeLabelStart.length()) ;
-            Node n = Node.createAnon(new AnonId(s)) ;
-            return n ;
-        }
-        return Node.createURI(iri) ;
+        if ( skolomizedBNodes )
+            return RiotLib.createIRIorBNode(iri) ;
+        else
+            return Node.createURI(iri) ;
     }
     
     protected boolean isBNodeIRI(String iri)
     {
-        return skolomizedBNodes && iri.startsWith(bNodeLabelStart) ;
+        return skolomizedBNodes && RiotLib.isBNodeIRI(iri) ;
     }
     
-    
     // -------- Basic Graph Patterns and Blank Node label scopes
     
     // A BasicGraphPattern is any sequence of TripleBlocks, separated by filters,

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/system/ParserProfileBase.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/system/ParserProfileBase.java?rev=1415776&r1=1415775&r2=1415776&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/system/ParserProfileBase.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/system/ParserProfileBase.java Fri Nov 30 18:21:45 2012
@@ -100,7 +100,7 @@ public class ParserProfileBase implement
     @Override
     public Node createURI(String uriStr, long line, long col)
     {
-        return Node.createURI(uriStr) ;
+        return RiotLib.createIRIorBNode(uriStr) ;
     }
 
     @Override

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/system/ParserProfileChecker.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/system/ParserProfileChecker.java?rev=1415776&r1=1415775&r2=1415776&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/system/ParserProfileChecker.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/system/ParserProfileChecker.java Fri Nov 30 18:21:45 2012
@@ -102,8 +102,13 @@ public class ParserProfileChecker extend
     public Node createURI(String x, long line, long col)
     { 
         try {
-            String resolvedIRI = resolveIRI(x, line, col) ;
-            return Node.createURI(resolvedIRI) ;
+            if ( RiotLib.isBNodeIRI(x) )
+                return RiotLib.createIRIorBNode(x) ;
+            else
+            {
+                String resolvedIRI = resolveIRI(x, line, col) ;
+                return Node.createURI(resolvedIRI) ;
+            }
         } catch (RiotException ex)
         {
             // Error was handled.

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/system/RiotLib.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/system/RiotLib.java?rev=1415776&r1=1415775&r2=1415776&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/system/RiotLib.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/system/RiotLib.java Fri Nov 30 18:21:45 2012
@@ -27,11 +27,38 @@ import org.openjena.riot.tokens.Tokenize
 import org.openjena.riot.tokens.TokenizerFactory ;
 
 import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.query.ARQ ;
+import com.hp.hpl.jena.rdf.model.AnonId ;
 import com.hp.hpl.jena.sparql.ARQConstants ;
 
 /** Misc RIOT code */
 public class RiotLib
 {
+    final static String bNodeLabelStart = "_:" ;
+    final static boolean skolomizedBNodes = ARQ.isTrue(ARQ.constantBNodeLabels) ;
+    
+    /** Implement <_:....> as a 2bNode IRI"
+     * that is, use the given label as the BNode internal label.
+     * Use with care.
+     */
+    public static Node createIRIorBNode(String iri)
+    {
+        // Is it a bNode label? i.e. <_:xyz>
+        if ( isBNodeIRI(iri) )
+        {
+            String s = iri.substring(bNodeLabelStart.length()) ;
+            Node n = Node.createAnon(new AnonId(s)) ;
+            return n ;
+        }
+        return Node.createURI(iri) ;
+    }
+
+    /** Test whether  */
+    public static boolean isBNodeIRI(String iri)
+    {
+        return skolomizedBNodes && iri.startsWith(bNodeLabelStart) ;
+    }
+    
     static ParserProfile profile = profile(Lang.TURTLE, null, null) ;
     static {
         PrefixMap pmap = profile.getPrologue().getPrefixMap() ;

Modified: jena/trunk/jena-arq/src/test/java/org/openjena/riot/lang/TestIRI.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/openjena/riot/lang/TestIRI.java?rev=1415776&r1=1415775&r2=1415776&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/openjena/riot/lang/TestIRI.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/openjena/riot/lang/TestIRI.java Fri Nov 30 18:21:45 2012
@@ -18,17 +18,20 @@
 
 package org.openjena.riot.lang;
 
+import com.hp.hpl.jena.graph.Node ;
+
+import org.apache.jena.atlas.junit.BaseTest ;
+import org.apache.jena.iri.IRI ;
+import org.apache.jena.iri.IRIFactory ;
 import org.junit.Test ;
 import org.openjena.riot.ErrorHandler ;
 import org.openjena.riot.ErrorHandlerTestLib ;
-import static org.openjena.riot.ErrorHandlerTestLib.* ;
+import org.openjena.riot.ErrorHandlerTestLib.ExWarning ;
 import org.openjena.riot.checker.CheckerIRI ;
 import org.openjena.riot.system.Checker ;
+import org.openjena.riot.system.RiotLib ;
 
-import org.apache.jena.iri.IRI ;
-import org.apache.jena.iri.IRIFactory ;
-
-public class TestIRI
+public class TestIRI extends BaseTest
 {
     static protected final ErrorHandler handler = new ErrorHandlerTestLib.ErrorHandlerEx() ;
     static protected final Checker checker = new Checker(new ErrorHandlerTestLib.ErrorHandlerEx()) ;
@@ -49,7 +52,6 @@ public class TestIRI
 
     @Test(expected=ExWarning.class) 
     public void iriErr3()  { test("http://example/.") ; }
-
     
     private void test(String uriStr)
     {
@@ -57,4 +59,18 @@ public class TestIRI
         CheckerIRI.iriViolations(iri, handler) ;
     }
     
+    @Test public void bNodeIRI_1()
+    {
+        Node n = RiotLib.createIRIorBNode("_:abc") ;
+        assertTrue(n.isBlank()) ;
+        assertEquals("abc", n.getBlankNodeLabel()) ;
+    }
+    
+    @Test public void bNodeIRI_2()
+    {
+        Node n = RiotLib.createIRIorBNode("abc") ;
+        assertTrue(n.isURI()) ;
+        assertEquals("abc", n.getURI()) ;
+    }
+    
 }