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/05/07 15:50:59 UTC
svn commit: r1335022 - in /incubator/jena/Jena2/ARQ/trunk/src:
main/java/com/hp/hpl/jena/sparql/expr/
main/java/com/hp/hpl/jena/sparql/expr/nodevalue/
test/java/com/hp/hpl/jena/sparql/expr/
test/java/com/hp/hpl/jena/sparql/junit/
Author: andy
Date: Mon May 7 13:50:58 2012
New Revision: 1335022
URL: http://svn.apache.org/viewvc?rev=1335022&view=rev
Log:
Preparation for date/time +- duration code.
Removed:
incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/junit/TestExpr.java
Modified:
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/ValueSpaceClassification.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueDuration.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java
incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/expr/TestExprLib.java
incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/expr/TestExpressions.java
incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeValue.java
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java?rev=1335022&r1=1335021&r2=1335022&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java Mon May 7 13:50:58 2012
@@ -280,6 +280,9 @@ public abstract class NodeValue extends
public static NodeValue makeDuration(Duration duration)
{ return new NodeValueDuration(duration); }
+ public static NodeValue makeNodeDuration(Duration duration, Node node)
+ { return new NodeValueDuration(duration, node); }
+
public static NodeValue makeBoolean(boolean b)
{ return b ? NodeValue.TRUE : NodeValue.FALSE ; }
@@ -411,7 +414,6 @@ public abstract class NodeValue extends
public static NodeValue makeNodeDate(Calendar date)
{
- //XSDDateTime dt = new XSDDateTime(date) ;
String lex = Utils.calendarToXSDDateString(date) ;
NodeValue nv = makeNode(lex, XSDdate) ;
return nv ;
@@ -869,6 +871,8 @@ public abstract class NodeValue extends
/** getNode - return the node form - may be null (use .asNode() to force to a node) */
public Node getNode() { return node ; }
+ public String getDatatypeURI() { return asNode().getLiteralDatatypeURI() ; }
+
public boolean hasNode() { return node != null ; }
// ----------------------------------------------------------------
@@ -992,6 +996,12 @@ public abstract class NodeValue extends
}
+ // Jena code does not have these types (yet)
+ private static final String dtXSDdateTimeStamp = XSD+"#dateTimeStamp" ;
+ private static final String dtXSDdayTimeDuration = XSD+"#dayTimeDuration" ;
+ private static final String dtXSDyearMonthDuration = XSD+"#yearMonthDuration" ;
+ private static final String dtXSDprecisionDecimal = XSD+"#precisionDecimal" ;
+
// Returns null for unrecognized literal.
private static NodeValue _setByValue(Node node)
{
@@ -1064,7 +1074,9 @@ public abstract class NodeValue extends
return new NodeValueDouble(d, node) ;
}
- if ( datatype.equals(XSDdateTime) && XSDdateTime.isValidLiteral(lit) )
+ // XXX Pending Jena update ...
+ if ( ( datatype.equals(XSDdateTime) || dtXSDdateTimeStamp.equals(datatypeURI) ) &&
+ XSDdateTime.isValid(lex) )
{
XSDDateTime dateTime = (XSDDateTime)lit.getValue() ;
return new NodeValueDT(lex, node) ;
@@ -1099,6 +1111,7 @@ public abstract class NodeValue extends
XSDDateTime time = (XSDDateTime)lit.getValue() ;
return new NodeValueDT(lex, node) ;
}
+
if ( datatype.equals(XSDgMonthDay) && XSDgMonthDay.isValidLiteral(lit) )
{
XSDDateTime time = (XSDDateTime)lit.getValue() ;
@@ -1110,11 +1123,20 @@ public abstract class NodeValue extends
return new NodeValueDT(lex, node) ;
}
- if ( datatype.equals(XSDduration) && XSDduration.isValidLiteral(lit) )
+ // XXX Pending Jena update ...
+ if ( ( datatype.equals(XSDduration) ||
+ dtXSDdayTimeDuration.equals(datatypeURI) ||
+ dtXSDyearMonthDuration.equals(datatypeURI) ) &&
+ XSDduration.isValid(lex) ) // use lex
{
- //XSDDuration duration = (XSDDuration)lit.getValue() ;
- Duration jduration = createDuration(lit.getLexicalForm()) ;
- return new NodeValueDuration(jduration, node) ;
+ Duration duration = datatypefactory.newDuration(lex) ;
+
+ if ( dtXSDdayTimeDuration.equals(datatypeURI) && ! XSDFuncOp.isDayTime(duration) )
+ return null ;
+ if ( dtXSDyearMonthDuration.equals(datatypeURI) && ! XSDFuncOp.isYearMonth(duration) )
+ return null ;
+
+ return new NodeValueDuration(duration, node) ;
}
if ( datatype.equals(XSDboolean) && XSDboolean.isValidLiteral(lit) )
@@ -1154,11 +1176,6 @@ public abstract class NodeValue extends
// ----------------------------------------------------------------
- private static Duration createDuration(String lex)
- {
- return datatypefactory.newDuration(lex) ;
- }
-
// Point to catch all exceptions.
public static void raise(ExprException ex)
{
@@ -1221,7 +1238,7 @@ public abstract class NodeValue extends
return false ;
NodeValue nv = (NodeValue)other ;
return asNode().equals(nv.asNode()) ;
- // Not NodeFunctions.sameTerm (which smooshes language tags by case
+ // Not NodeFunctions.sameTerm (which smooshes language tags by case)
}
public abstract void visit(NodeValueVisitor visitor) ;
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/ValueSpaceClassification.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/ValueSpaceClassification.java?rev=1335022&r1=1335021&r2=1335022&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/ValueSpaceClassification.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/ValueSpaceClassification.java Mon May 7 13:50:58 2012
@@ -26,6 +26,7 @@ public enum ValueSpaceClassification {
VSPACE_TIME,
VSPACE_DURATION,
+ // Collapse to VSPACE_DATETIME?
VSPACE_G_YEAR,
VSPACE_G_YEARMONTH,
VSPACE_G_MONTHDAY,
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueDuration.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueDuration.java?rev=1335022&r1=1335021&r2=1335022&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueDuration.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueDuration.java Mon May 7 13:50:58 2012
@@ -46,7 +46,7 @@ public class NodeValueDuration extends N
protected Node makeNode()
{
String lex = duration.toString() ;
- return Node.createLiteral(lex, null, XSDDatatype.XSDtime) ;
+ return Node.createLiteral(lex, null, XSDDatatype.XSDduration) ;
}
@Override
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java?rev=1335022&r1=1335021&r2=1335022&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java Mon May 7 13:50:58 2012
@@ -23,6 +23,12 @@ import static com.hp.hpl.jena.sparql.exp
import static com.hp.hpl.jena.sparql.expr.nodevalue.NumericType.OP_DOUBLE ;
import static com.hp.hpl.jena.sparql.expr.nodevalue.NumericType.OP_FLOAT ;
import static com.hp.hpl.jena.sparql.expr.nodevalue.NumericType.OP_INTEGER ;
+import static javax.xml.datatype.DatatypeConstants.DAYS ;
+import static javax.xml.datatype.DatatypeConstants.HOURS ;
+import static javax.xml.datatype.DatatypeConstants.MINUTES ;
+import static javax.xml.datatype.DatatypeConstants.MONTHS ;
+import static javax.xml.datatype.DatatypeConstants.SECONDS ;
+import static javax.xml.datatype.DatatypeConstants.YEARS ;
import java.math.BigDecimal ;
import java.math.BigInteger ;
@@ -1339,4 +1345,17 @@ public class XSDFuncOp
sb.append(indicator) ;
}
}
+
+ public static boolean isYearMonth(Duration dur)
+ {
+ // Not dur.getXMLSchemaType()
+ return ( dur.isSet(YEARS) || dur.isSet(MONTHS) ) &&
+ ! dur.isSet(DAYS) && ! dur.isSet(HOURS) && ! dur.isSet(MINUTES) && ! dur.isSet(SECONDS) ;
+ }
+
+ public static boolean isDayTime(Duration dur)
+ {
+ return !dur.isSet(YEARS) && ! dur.isSet(MONTHS) &&
+ ( dur.isSet(DAYS) || dur.isSet(HOURS) || dur.isSet(MINUTES) || dur.isSet(SECONDS) );
+ }
}
Modified: incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/expr/TestExprLib.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/expr/TestExprLib.java?rev=1335022&r1=1335021&r2=1335022&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/expr/TestExprLib.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/expr/TestExprLib.java Mon May 7 13:50:58 2012
@@ -24,6 +24,11 @@ import org.junit.Test ;
import com.hp.hpl.jena.sparql.util.ExprUtils ;
+/** Break expression testing suite into parts
+ * @see TestExpressions
+ * @see TestExprLib
+ * @see TestNodeValue
+ */
public class TestExprLib
{
@Test public void safeEqualityNot_01() { testSafeEquality("123", false) ;}
Modified: incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/expr/TestExpressions.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/expr/TestExpressions.java?rev=1335022&r1=1335021&r2=1335022&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/expr/TestExpressions.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/expr/TestExpressions.java Mon May 7 13:50:58 2012
@@ -43,6 +43,11 @@ import com.hp.hpl.jena.sparql.util.ExprU
import com.hp.hpl.jena.vocabulary.RDF ;
import com.hp.hpl.jena.vocabulary.XSD ;
+/** Break expression testing suite into parts
+* @see TestExpressions
+* @see TestExprLib
+* @see TestNodeValue
+*/
public class TestExpressions
{
public final static int NO_FAILURE = 100 ;
Modified: incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeValue.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeValue.java?rev=1335022&r1=1335021&r2=1335022&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeValue.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeValue.java Mon May 7 13:50:58 2012
@@ -31,6 +31,11 @@ import com.hp.hpl.jena.graph.Node ;
import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ;
import com.hp.hpl.jena.sparql.util.NodeFactory ;
+/** Break expression testing suite into parts
+ * @see TestExpressions
+ * @see TestExprLib
+ * @see TestNodeValue
+ */
public class TestNodeValue extends TestCase
{
static final double doubleAccuracy = 0.00000001d ;