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 ;