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()) ;
+ }
+
}