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 2014/03/23 18:39:21 UTC
svn commit: r1580547 - in
/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena: query/ARQ.java
sparql/SystemARQ.java sparql/expr/NodeValue.java
sparql/expr/nodevalue/NodeValueString.java
sparql/expr/nodevalue/XSDFuncOp.java
Author: andy
Date: Sun Mar 23 17:39:21 2014
New Revision: 1580547
URL: http://svn.apache.org/r1580547
Log:
Tidy strict mode setting for testing around globals (NodeValue)
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/ARQ.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/SystemARQ.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueString.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/ARQ.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/ARQ.java?rev=1580547&r1=1580546&r2=1580547&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/ARQ.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/ARQ.java Sun Mar 23 17:39:21 2014
@@ -24,9 +24,8 @@ import org.slf4j.LoggerFactory ;
import com.hp.hpl.jena.sparql.ARQConstants ;
import com.hp.hpl.jena.sparql.SystemARQ ;
-import com.hp.hpl.jena.sparql.algebra.optimize.TransformOrderByDistinctApplication;
+import com.hp.hpl.jena.sparql.algebra.optimize.TransformOrderByDistinctApplication ;
import com.hp.hpl.jena.sparql.engine.main.StageBuilder ;
-import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ;
import com.hp.hpl.jena.sparql.lib.Metadata ;
import com.hp.hpl.jena.sparql.mgt.ARQMgt ;
import com.hp.hpl.jena.sparql.mgt.Explain ;
@@ -410,47 +409,63 @@ public class ARQ
*/
public static final Symbol generateToList = ARQConstants.allocSymbol("generateToList") ;
- /** Set global strict mode */
+ /** Set strict mode, including expression evaluation */
public static void setStrictMode() { setStrictMode(ARQ.getContext()) ; }
- /** Set strict mode for a given Context */
-
+ /** Set strict mode for a given Context.
+ *
+ * Does not influence expression evaluation because NodeValues
+ * are controlled globally, not per context.
+ */
public static void setStrictMode(Context context)
{
- XSDFuncOp.strictDateTimeFO = true ;
- context.set(optimization, false) ;
+ SystemARQ.StrictDateTimeFO = true ;
+ SystemARQ.ValueExtensions = false ;
+ SystemARQ.SameValueAsString = false ;
+
+ context.set(optimization, false) ;
+ context.set(hideNonDistiguishedVariables, true) ;
+ context.set(strictGraph, true) ;
+ context.set(strictSPARQL, true) ;
+ context.set(enablePropertyFunctions, false) ;
- context.set(hideNonDistiguishedVariables, true) ;
- context.set(strictGraph, true) ;
- context.set(strictSPARQL, true) ;
- context.set(extensionValueTypes, false) ;
- context.set(constantBNodeLabels, false) ;
- context.set(enablePropertyFunctions, false) ;
- context.set(generateToList, true) ;
- context.set(regexImpl, xercesRegex) ;
+ context.set(extensionValueTypes, false) ;
+ context.set(constantBNodeLabels, false) ;
+ context.set(generateToList, true) ;
+ context.set(regexImpl, xercesRegex) ;
+ context.set(enableRomanNumerals, false) ;
+
//context.set(filterPlacement, false) ;
// XSDFuncOp.strictDateTimeFO = false ;
}
-
+
public static boolean isStrictMode() { return ARQ.getContext().isTrue(strictSPARQL) ; }
- public static void setNormalMode() { setNormalMode(ARQ.getContext()) ; }
+ /** Set normal mode, including expression evaluation */
+ public static void setNormalMode() {
+ SystemARQ.StrictDateTimeFO = false ;
+ SystemARQ.ValueExtensions = true ;
+ SystemARQ.SameValueAsString = true ;
+ setNormalMode(ARQ.getContext()) ;
+ }
+ /** Explicitly set the values for normal operation.
+ * Does not influence expression evaluation.
+ */
public static void setNormalMode(Context context)
{
- XSDFuncOp.strictDateTimeFO = false ;
- context.unset(optimization) ;
-
- //context.set(hideNonDistiguishedVariables, true) ;
- context.set(strictSPARQL, false) ;
- context.set(constantBNodeLabels, true) ;
- context.set(enablePropertyFunctions, true) ;
- context.set(strictGraph, false) ;
+ context.set(optimization, true) ;
+ context.set(hideNonDistiguishedVariables, false) ;
+ context.set(strictGraph, false) ;
+ context.set(strictSPARQL, false) ;
+ context.set(enablePropertyFunctions, true) ;
+
+ context.set(extensionValueTypes, true) ;
+ context.set(constantBNodeLabels, true) ;
+ context.set(generateToList, false) ;
+ context.set(regexImpl, javaRegex) ;
+ context.set(enableRomanNumerals, true) ;
- //context.set(useSAX, false) ;
- context.set(enableRomanNumerals, false) ;
- // enableBlankNodeLabels() ;
- context.set(regexImpl, javaRegex) ;
// if ( getContext().isTrue(romanNumeralsAsFirstClassDatatypes) )
// RomanNumeralDatatype.enableAsFirstClassDatatype() ; // Wires into the TypeMapper.
}
@@ -496,6 +511,7 @@ public class ARQ
return ;
initialized = true ;
globalContext = defaultSettings() ;
+
RIOT.init() ;
StageBuilder.init() ;
ARQMgt.init() ; // After context and after PATH/NAME/VERSION/BUILD_DATE are set
@@ -514,10 +530,22 @@ public class ARQ
// Force a call
static { init() ; }
- private static Context defaultSettings()
+ private static Context defaultSettings()
{
+ SystemARQ.StrictDateTimeFO = false ;
+ SystemARQ.ValueExtensions = true ;
+ SystemARQ.SameValueAsString = true ;
+
Context context = new Context() ;
- setNormalMode(context) ;
+ context.unset(optimization) ;
+ //context.set(hideNonDistiguishedVariables, true) ;
+ context.set(strictSPARQL, false) ;
+ context.set(constantBNodeLabels, true) ;
+ context.set(enablePropertyFunctions, true) ;
+ context.set(strictGraph, false) ;
+ context.set(enableRomanNumerals, false) ;
+ context.set(regexImpl, javaRegex) ;
+
return context ;
}
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/SystemARQ.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/SystemARQ.java?rev=1580547&r1=1580546&r2=1580547&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/SystemARQ.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/SystemARQ.java Sun Mar 23 17:39:21 2014
@@ -38,6 +38,26 @@ import com.hp.hpl.jena.sparql.mgt.System
public class SystemARQ
{
+ // NodeValues work without the context so something only have global settings.
+
+ /** Control whether eadditon datattypes, over and above strict, minimal SPARQL compliance, are handled.
+ * Examples incldue xsd;date and simple literal/xsd:string.
+ */
+ public static boolean ValueExtensions = true ;
+ /** Control whether simple literals, string literals without datatype orlanguage tag,
+ * are created sameValueAs xsd:string. Normally true.
+ * Some testing for pre-RDF-1.1 assumes otherwise.
+ */
+ public static boolean SameValueAsString = true ;
+ /**
+ * Under strict F&O, dateTimes and dates with no timezone have one magically applied.
+ * This default timezone is implementation dependent and can lead to different answers
+ * to queries depending on the timezone. Normally, ARQ uses XMLSchema dateTime comparions,
+ * which an yield "indeterminate", which in turn is an evaluation error.
+ * F&O insists on true/false and so can lead to false positves and negatives.
+ */
+ public static boolean StrictDateTimeFO = false ;
+
/** Sync a Model if it provides the underlying graph provides sync . Do nothing otherwise. */
public static void sync(Model model)
{
@@ -123,4 +143,5 @@ public class SystemARQ
{
return versions.iterator() ;
}
+
}
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java?rev=1580547&r1=1580546&r2=1580547&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java Sun Mar 23 17:39:21 2014
@@ -53,6 +53,7 @@ import com.hp.hpl.jena.graph.impl.Litera
import com.hp.hpl.jena.query.ARQ ;
import com.hp.hpl.jena.rdf.model.AnonId ;
import com.hp.hpl.jena.sparql.ARQInternalErrorException ;
+import com.hp.hpl.jena.sparql.SystemARQ ;
import com.hp.hpl.jena.sparql.engine.ExecutionContext ;
import com.hp.hpl.jena.sparql.engine.binding.Binding ;
import com.hp.hpl.jena.sparql.expr.nodevalue.* ;
@@ -118,8 +119,6 @@ public abstract class NodeValue extends
public static boolean VerboseWarnings = true ;
public static boolean VerboseExceptions = false ;
- private static boolean VALUE_EXTENSIONS = ARQ.getContext().isTrueOrUndef(ARQ.extensionValueTypes) ;
- private static boolean sameValueAsString = VALUE_EXTENSIONS ;
private static RefBoolean enableRomanNumerals = new RefBoolean(ARQ.enableRomanNumerals, false) ;
//private static RefBoolean strictSPARQL = new RefBoolean(ARQ.strictSPARQL, false) ;
@@ -565,7 +564,7 @@ public abstract class NodeValue extends
Node node1 = nv1.getNode() ;
Node node2 = nv2.getNode() ;
- if ( ! VALUE_EXTENSIONS )
+ if ( ! SystemARQ.ValueExtensions )
// No value extensions => raw rdfTermEquals
return NodeFunctions.rdfTermEquals(node1, node2) ;
@@ -592,7 +591,7 @@ public abstract class NodeValue extends
case VSPACE_DIFFERENT:
// Known to be incompatible.
- if ( ! VALUE_EXTENSIONS && ( nv1.isLiteral() && nv2.isLiteral() ) )
+ if ( ! SystemARQ.ValueExtensions && ( nv1.isLiteral() && nv2.isLiteral() ) )
raise(new ExprEvalException("Incompatible: "+nv1+" and "+nv2)) ;
return false ;
}
@@ -858,7 +857,7 @@ public abstract class NodeValue extends
if ( nv.isGMonthDay() ) return VSPACE_G_MONTHDAY ;
if ( nv.isGDay() ) return VSPACE_G_DAY ;
- if ( VALUE_EXTENSIONS && nv.isDate() )
+ if ( SystemARQ.ValueExtensions && nv.isDate() )
return VSPACE_DATE ;
if ( nv.isString()) return VSPACE_STRING ;
@@ -866,7 +865,7 @@ public abstract class NodeValue extends
if ( ! nv.isLiteral() ) return VSPACE_NODE ;
- if ( VALUE_EXTENSIONS && nv.getNode() != null &&
+ if ( SystemARQ.ValueExtensions && nv.getNode() != null &&
nv.getNode().isLiteral() &&
! nv.getNode().getLiteralLanguage().equals("") )
return VSPACE_LANG ;
@@ -1032,7 +1031,7 @@ public abstract class NodeValue extends
try { // DatatypeFormatException - should not happen
- if ( sameValueAsString && XSDstring.isValidLiteral(lit) )
+ if ( SystemARQ.SameValueAsString && XSDstring.isValidLiteral(lit) )
// String - plain or xsd:string
return new NodeValueString(lit.getLexicalForm(), node) ;
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueString.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueString.java?rev=1580547&r1=1580546&r2=1580547&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueString.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueString.java Sun Mar 23 17:39:21 2014
@@ -26,8 +26,7 @@ import com.hp.hpl.jena.sparql.util.FmtUt
public class NodeValueString extends NodeValue
{
- // A plain string - no lang tag, no datatype.
- // If there is a lang tag, the node in the super class handled it.
+ // A plain string, no language tag or xsd:string.
private String string ;
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java?rev=1580547&r1=1580546&r2=1580547&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java Sun Mar 23 17:39:21 2014
@@ -53,6 +53,7 @@ import com.hp.hpl.jena.datatypes.xsd.XSD
import com.hp.hpl.jena.graph.Node ;
import com.hp.hpl.jena.graph.NodeFactory ;
import com.hp.hpl.jena.sparql.ARQInternalErrorException ;
+import com.hp.hpl.jena.sparql.SystemARQ ;
import com.hp.hpl.jena.sparql.expr.* ;
import com.hp.hpl.jena.sparql.util.DateTimeStruct ;
/**
@@ -854,18 +855,9 @@ public class XSDFuncOp
// dateTimeCompare
// works for dates as well because they are implemented as dateTimes on their start point.
- /**
- * Under strict F&O, dateTimes and dates with no timezone have one magically applied.
- * This default timezone is implementation dependent and can lead to different answers
- * to queries depending on the timezone. Normally, ARQ uses XMLSchema dateTime comparions,
- * which an yield "indeterminate", which in turn is an evaluation error.
- * F&O insists on true/false and so can lead to false positves and negatives.
- */
- public static boolean strictDateTimeFO = false ;
-
public static int compareDateTime(NodeValue nv1, NodeValue nv2)
{
- if ( strictDateTimeFO )
+ if ( SystemARQ.StrictDateTimeFO )
return compareDateTimeFO(nv1, nv2) ;
return compareXSDDateTime(nv1.getDateTime(), nv2.getDateTime()) ;
}