JENA-816 : SPARQL for RDF 1.1 : "Argument Compatibility Rules" Project: http://git-wip-us.apache.org/repos/asf/jena/repo Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/96476222 Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/96476222 Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/96476222
Branch: refs/heads/hadoop-rdf Commit: 96476222d3bd9dd8c59e7e5ccde586fd3b124a7e Parents: 707ecb9 Author: Andy Seaborne <[email protected]> Authored: Sat Nov 22 17:31:52 2014 +0000 Committer: Andy Seaborne <[email protected]> Committed: Sat Nov 22 17:31:52 2014 +0000 ---------------------------------------------------------------------- .../hpl/jena/sparql/expr/nodevalue/NodeFunctions.java | 12 ++++++++++-- .../com/hp/hpl/jena/sparql/expr/TestNodeFunctions.java | 13 +++++-------- .../com/hp/hpl/jena/sparql/expr/TestNodeValue.java | 10 +++++++--- 3 files changed, 22 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jena/blob/96476222/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeFunctions.java ---------------------------------------------------------------------- diff --git a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeFunctions.java b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeFunctions.java index 94013ff..ff52250 100644 --- a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeFunctions.java +++ b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeFunctions.java @@ -30,11 +30,13 @@ import org.apache.jena.atlas.logging.Log ; import org.apache.jena.iri.IRI ; import org.apache.jena.iri.IRIFactory ; import org.apache.jena.iri.Violation ; + import com.hp.hpl.jena.sparql.expr.ExprEvalException ; import com.hp.hpl.jena.sparql.expr.ExprTypeException ; import com.hp.hpl.jena.sparql.expr.NodeValue ; import com.hp.hpl.jena.sparql.graph.NodeConst ; import com.hp.hpl.jena.sparql.util.FmtUtils ; +import com.hp.hpl.jena.sparql.util.NodeUtils ; import com.hp.hpl.jena.vocabulary.XSD ; /** @@ -52,9 +54,15 @@ public class NodeFunctions { Node n = nv.asNode() ; if ( !n.isLiteral() ) throw new ExprEvalException(label + ": Not a literal: " + nv) ; - RDFDatatype dt = n.getLiteralDatatype() ; String lang = n.getLiteralLanguage() ; - + + if ( NodeUtils.isLangString(n) ) + // Language tag. Legal. + return n ; + + // No language tag : either no datatype or a datatype of xsd:string + // Special case : rdf:langString and no language ==> Illegal + RDFDatatype dt = n.getLiteralDatatype() ; if ( dt != null && !dt.equals(XSDDatatype.XSDstring) ) throw new ExprEvalException(label + ": Not a string literal: " + nv) ; return n ; http://git-wip-us.apache.org/repos/asf/jena/blob/96476222/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeFunctions.java ---------------------------------------------------------------------- diff --git a/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeFunctions.java b/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeFunctions.java index 3e0bd4e..af59b16 100644 --- a/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeFunctions.java +++ b/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeFunctions.java @@ -21,6 +21,7 @@ package com.hp.hpl.jena.sparql.expr ; import org.apache.jena.atlas.junit.BaseTest ; import org.junit.Test ; +import com.hp.hpl.jena.JenaRuntime ; import com.hp.hpl.jena.datatypes.xsd.XSDDatatype ; import com.hp.hpl.jena.graph.Node ; import com.hp.hpl.jena.graph.NodeFactory ; @@ -32,13 +33,6 @@ public class TestNodeFunctions extends BaseTest { private static final double accuracyExact = 0.0d ; private static final double accuracyClose = 0.000001d ; - // public static TestSuite suite() - // { - // TestSuite ts = new TestSuite(TestNodeFunctions.class) ; - // ts.setName(Utils.classShortName(TestNodeFunctions.class)) ; - // return ts ; - // } - @Test public void testSameTerm1() { Node n1 = NodeFactory.createLiteral("xyz") ; Node n2 = NodeFactory.createLiteral("xyz") ; @@ -60,7 +54,10 @@ public class TestNodeFunctions extends BaseTest { @Test public void testSameTerm4() { Node n1 = NodeFactory.createLiteral("xyz") ; Node n2 = NodeFactory.createLiteral("xyz", null, XSDDatatype.XSDstring) ; - assertFalse(NodeFunctions.sameTerm(n1, n2)) ; + if ( JenaRuntime.isRDF11 ) + assertTrue(NodeFunctions.sameTerm(n1, n2)) ; + else + assertFalse(NodeFunctions.sameTerm(n1, n2)) ; } @Test public void testSameTerm5() { http://git-wip-us.apache.org/repos/asf/jena/blob/96476222/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeValue.java ---------------------------------------------------------------------- diff --git a/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeValue.java b/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeValue.java index 83b323b..f6d1296 100644 --- a/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeValue.java +++ b/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeValue.java @@ -26,6 +26,7 @@ import java.util.TimeZone ; import org.apache.jena.atlas.junit.BaseTest ; import org.junit.Test ; +import com.hp.hpl.jena.JenaRuntime ; import com.hp.hpl.jena.datatypes.xsd.XSDDatatype ; import com.hp.hpl.jena.graph.Node ; import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ; @@ -630,9 +631,12 @@ public class TestNodeValue extends BaseTest assertTrue("Not a string: "+v, v.isString()) ; assertTrue("Not a node: "+v, v.hasNode()) ; String actualStr = v.asQuotedString() ; - assertEquals("Print form mismatch", - "\"string\"^^<"+XSDDatatype.XSDstring.getURI()+">", - actualStr) ; + String rightAnswer = JenaRuntime.isRDF11 + // RDF 1.1 -- appearance is a without ^^ + ? "\"string\"" + : "\"string\"^^<"+XSDDatatype.XSDstring.getURI()+">" ; + + assertEquals("Print form mismatch", rightAnswer, actualStr) ; } // TODO testSameValueDecimal tests
