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/08/21 17:24:28 UTC

svn commit: r1375608 - in /jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql: ./ expr/ expr/nodevalue/ function/ function/library/

Author: andy
Date: Tue Aug 21 15:24:27 2012
New Revision: 1375608

URL: http://svn.apache.org/viewvc?rev=1375608&view=rev
Log:
Add functions-by-uri for many of the F&O functions.

Added:
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_DayFromDateTime.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_DaysFromDuration.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_Floor.java
      - copied, changed from r1372890, jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_floor.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_HoursFromDateTime.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_HoursFromDuration.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_MinutesFromDateTime.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_MinutesFromDuration.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_MonthFromDateTime.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_MonthsFromDuration.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_SecondsFromDateTime.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_SecondsFromDuration.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_StrEncodeForURI.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_TimezoneFromDateTime.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_YearFromDateTime.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_YearsFromDuration.java
Removed:
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_floor.java
Modified:
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/ARQConstants.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/E_StrEncodeForURI.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/StandardFunctions.java

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/ARQConstants.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/ARQConstants.java?rev=1375608&r1=1375607&r2=1375608&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/ARQConstants.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/ARQConstants.java Tue Aug 21 15:24:27 2012
@@ -46,6 +46,9 @@ public class ARQConstants
     /** XSD namespace prefix */
     public static final String xsdPrefix = XSDDatatype.XSD+"#" ;
     
+    /** The prefix of SPARQL functions and operator */
+    public static final String fnSparql = "http://www.w3.org/ns/sparql#" ;
+    
     /** The namespace of the XML results format */ 
     public static final String srxPrefix = "http://www.w3.org/2005/sparql-results#" ;
     

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/E_StrEncodeForURI.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/E_StrEncodeForURI.java?rev=1375608&r1=1375607&r2=1375608&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/E_StrEncodeForURI.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/E_StrEncodeForURI.java Tue Aug 21 15:24:27 2012
@@ -18,10 +18,7 @@
 
 package com.hp.hpl.jena.sparql.expr;
 
-import org.openjena.atlas.lib.IRILib ;
-
-import com.hp.hpl.jena.datatypes.xsd.XSDDatatype ;
-import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ;
 import com.hp.hpl.jena.sparql.sse.Tags ;
 
 public class E_StrEncodeForURI extends ExprFunction1
@@ -36,23 +33,9 @@ public class E_StrEncodeForURI extends E
     @Override
     public NodeValue eval(NodeValue v)
     { 
-        Node n = v.asNode() ;
-        if ( ! n.isLiteral() )
-            throw new ExprEvalException("Not a literal") ;
-        if ( n.getLiteralDatatype() != null )
-        {
-            if ( ! n.getLiteralDatatype().equals(XSDDatatype.XSDstring) )
-                throw new ExprEvalException("Not a string literal") ;
-        }
-        
-        String str = n.getLiteralLexicalForm() ;
-        String encStr = IRILib.encodeUriComponent(str) ;
-        encStr = IRILib.encodeNonASCII(encStr) ;
-        
-        return NodeValue.makeString(encStr) ;
+        return XSDFuncOp.strEncodeForURI(v) ;
     }
-    
-
+        
     @Override
     public Expr copy(Expr expr) { return new E_StrEncodeForURI(expr) ; } 
 }

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=1375608&r1=1375607&r2=1375608&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 Tue Aug 21 15:24:27 2012
@@ -18,7 +18,8 @@
 
 package com.hp.hpl.jena.sparql.expr.nodevalue;
 
-import static com.hp.hpl.jena.sparql.expr.nodevalue.NodeFunctions.* ;
+import static com.hp.hpl.jena.sparql.expr.nodevalue.NodeFunctions.checkAndGetStringLiteral ;
+import static com.hp.hpl.jena.sparql.expr.nodevalue.NodeFunctions.checkTwoArgumentStringLiterals ;
 import static com.hp.hpl.jena.sparql.expr.nodevalue.NumericType.OP_DECIMAL ;
 import static com.hp.hpl.jena.sparql.expr.nodevalue.NumericType.OP_DOUBLE ;
 import static com.hp.hpl.jena.sparql.expr.nodevalue.NumericType.OP_FLOAT ;
@@ -39,9 +40,11 @@ import java.util.Set ;
 import java.util.regex.Pattern ;
 
 import javax.xml.datatype.DatatypeConstants ;
+import javax.xml.datatype.DatatypeConstants.Field ;
 import javax.xml.datatype.Duration ;
 import javax.xml.datatype.XMLGregorianCalendar ;
 
+import org.openjena.atlas.lib.IRILib ;
 import org.openjena.atlas.lib.StrUtils ;
 import org.openjena.atlas.logging.Log ;
 
@@ -603,7 +606,25 @@ public class XSDFuncOp
         return calcReturn(lex2, string.asNode()) ;
     }
     
-    // F&O fn;concat (implicit cast to strings).
+    public static NodeValue strEncodeForURI(NodeValue v)
+    {
+        Node n = v.asNode() ;
+        if ( ! n.isLiteral() )
+            throw new ExprEvalException("Not a literal") ;
+        if ( n.getLiteralDatatype() != null )
+        {
+            if ( ! n.getLiteralDatatype().equals(XSDDatatype.XSDstring) )
+                throw new ExprEvalException("Not a string literal") ;
+        }
+    
+        String str = n.getLiteralLexicalForm() ;
+        String encStr = IRILib.encodeUriComponent(str) ;
+        encStr = IRILib.encodeNonASCII(encStr) ;
+    
+        return NodeValue.makeString(encStr) ;
+    }
+
+    // F&O fn:concat (implicit cast to strings).
     public static NodeValue fnConcat(List<NodeValue> args)
     {
         StringBuilder sb = new StringBuilder() ;
@@ -926,40 +947,39 @@ public class XSDFuncOp
         
     }
     
-    // XXX Remove??
-    // This only differs by some "dateTime" => "date" 
-    private static int compareDateFO(NodeValue nv1, NodeValue nv2)
-    {
-        XMLGregorianCalendar dt1 = nv1.getDateTime() ;
-        XMLGregorianCalendar dt2 = nv2.getDateTime() ;
-
-        int x = compareXSDDateTime(dt1, dt2) ;    // Yes - compareDateTIme
-        if ( x == XSDDateTime.INDETERMINATE )
-        {
-            NodeValue nv3 = fixupDate(nv1) ;
-            if ( nv3 != null )
-            {
-                XMLGregorianCalendar dt3 = nv3.getDateTime() ; 
-                x =  compareXSDDateTime(dt3, dt2) ;
-                if ( x == XSDDateTime.INDETERMINATE )
-                    throw new ARQInternalErrorException("Still get indeterminate comparison") ;
-                return x ;
-            }
-            
-            nv3 = fixupDate(nv2) ;
-            if ( nv3 != null )
-            {
-                XMLGregorianCalendar dt3 = nv3.getDateTime() ; 
-                x = compareXSDDateTime(dt1, dt3) ;
-                if ( x == XSDDateTime.INDETERMINATE )
-                    throw new ARQInternalErrorException("Still get indeterminate comparison") ;
-                return x ;
-            }
-            
-            throw new ARQInternalErrorException("Failed to fixup dateTimes") ;
-        }
-        return x ;
-    }
+//    // This only differs by some "dateTime" => "date" 
+//    private static int compareDateFO(NodeValue nv1, NodeValue nv2)
+//    {
+//        XMLGregorianCalendar dt1 = nv1.getDateTime() ;
+//        XMLGregorianCalendar dt2 = nv2.getDateTime() ;
+//
+//        int x = compareXSDDateTime(dt1, dt2) ;    // Yes - compareDateTIme
+//        if ( x == XSDDateTime.INDETERMINATE )
+//        {
+//            NodeValue nv3 = fixupDate(nv1) ;
+//            if ( nv3 != null )
+//            {
+//                XMLGregorianCalendar dt3 = nv3.getDateTime() ; 
+//                x =  compareXSDDateTime(dt3, dt2) ;
+//                if ( x == XSDDateTime.INDETERMINATE )
+//                    throw new ARQInternalErrorException("Still get indeterminate comparison") ;
+//                return x ;
+//            }
+//            
+//            nv3 = fixupDate(nv2) ;
+//            if ( nv3 != null )
+//            {
+//                XMLGregorianCalendar dt3 = nv3.getDateTime() ; 
+//                x = compareXSDDateTime(dt1, dt3) ;
+//                if ( x == XSDDateTime.INDETERMINATE )
+//                    throw new ARQInternalErrorException("Still get indeterminate comparison") ;
+//                return x ;
+//            }
+//            
+//            throw new ARQInternalErrorException("Failed to fixup dateTimes") ;
+//        }
+//        return x ;
+//    }
     
     private static NodeValue fixupDateTime(NodeValue nv)
     {
@@ -1355,4 +1375,43 @@ public class XSDFuncOp
         return !dur.isSet(YEARS) && ! dur.isSet(MONTHS) &&
                ( dur.isSet(DAYS) || dur.isSet(HOURS) || dur.isSet(MINUTES) || dur.isSet(SECONDS) );
     }
+    
+    public static NodeValue durGetYears(NodeValue nv)
+    { return accessDuration(nv, DatatypeConstants.YEARS) ; }
+
+    public static NodeValue durGetMonths(NodeValue nv)
+    {return accessDuration(nv, DatatypeConstants.MONTHS) ; }
+    
+    public static NodeValue durGetDays(NodeValue nv)
+    { return accessDuration(nv, DatatypeConstants.DAYS) ; }
+    
+    public static NodeValue durGetHours(NodeValue nv)
+    { return accessDuration(nv, DatatypeConstants.HOURS) ; }
+    
+    public static NodeValue durGetMinutes(NodeValue nv)
+    { return accessDuration(nv, DatatypeConstants.MINUTES) ; }
+
+    public static NodeValue durGetSeconds(NodeValue nv)
+    { return accessDuration(nv, DatatypeConstants.SECONDS) ; }
+    
+    public static NodeValue durGetSign(NodeValue nv)
+    { 
+        int x = nv.getDuration().getSign() ;
+        return NodeValue.makeInteger(x) ;
+    }
+
+    private static NodeValue accessDuration(NodeValue nv, Field field)
+    {
+//        if ( ! nv.isDuration() )
+//            throw new ExprEvalException("Not a duration: "+nv) ;
+        
+        Number x = nv.getDuration().getField(field) ;
+        if ( x == null )
+            throw new ExprEvalException("Not a valid field of a duration: "+nv) ;
+        
+        if ( field.equals(DatatypeConstants.SECONDS) )
+            return NodeValue.makeDecimal((BigDecimal)x) ;
+        
+        return NodeValue.makeInteger((BigInteger)x) ;
+    }
 }

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/StandardFunctions.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/StandardFunctions.java?rev=1375608&r1=1375607&r2=1375608&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/StandardFunctions.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/StandardFunctions.java Tue Aug 21 15:24:27 2012
@@ -29,8 +29,7 @@ public class StandardFunctions
     public static void loadStdDefs(FunctionRegistry registry)
     {
         String xfn = ARQConstants.fnPrefix ;
-        
-        String sparqlfn = "http://www.w3.org/sparqfn/" ;    // Not fixed yet.
+        String sparqlfn = ARQConstants.fnSparql ;
         
         // See http://www.w3.org/TR/xpath-datamodel/#types-hierarchy
         // No durations here
@@ -91,68 +90,25 @@ public class StandardFunctions
         
         add(registry, xfn+"abs",            FN_Abs.class) ;
         add(registry, xfn+"ceiling",        FN_Ceiling.class) ;
-        add(registry, xfn+"floor",          FN_floor.class) ;
+        add(registry, xfn+"floor",          FN_Floor.class) ;
         add(registry, xfn+"round",          FN_Round.class) ;
         
-        // SPARQL functions.
-        // Check the exact URI.
+        add(registry, xfn+"encode-for-uri", FN_StrEncodeForURI.class) ;
 
-//        add(registry, sparqlfn+"boolean",        FN_BEV.class) ;
-//        add(registry, sparqlfn+"not",            FN_Not.class) ;
-//
-//        add(registry, sparqlfn+"matches",        FN_Matches.class) ;
-//        add(registry, sparqlfn+"string-length",  FN_StrLength.class) ;
-//        add(registry, sparqlfn+"concat",         FN_StrConcat.class) ;
-//        add(registry, sparqlfn+"substring",      FN_StrSubstring.class) ;
-//        add(registry, sparqlfn+"starts-with",    FN_StrStartsWith.class) ;
-//        
-//        add(registry, sparqlfn+"lower-case",     FN_StrLowerCase.class) ;
-//        add(registry, sparqlfn+"upper-case",     FN_StrUpperCase.class) ;
-//        
-//        add(registry, sparqlfn+"contains",       FN_StrContains.class) ;
-//        add(registry, sparqlfn+"ends-with",      FN_StrEndsWith.class) ;
-//        
-//        add(registry, sparqlfn+"abs",            FN_Abs.class) ;
-//        add(registry, sparqlfn+"ceiling",        FN_Ceiling.class) ;
-//        add(registry, sparqlfn+"floor",          FN_floor.class) ;
-//        add(registry, sparqlfn+"round",          FN_Round.class) ;
-
-//        add(registry, sparqlfn+"concat",         FN_Concat.class) ;
-//        add(registry, sparqlfn+"upper-case",     FN_UpperCase.class) ;
-//        add(registry, sparqlfn+"lower-case",     FN_LowerCase.class) ;
-//        add(registry, sparqlfn+"encode-for-uri", FN_EncodeForURI.class) ;
-//        add(registry, sparqlfn+"contains",       FN_Contains.class) ;
-//
-//        add(registry, sparqlfn+"starts-with",    FN_StartsWith.class) ;
-//        add(registry, sparqlfn+"ends-with",      FN_EndsWith.class) ;
-
-//        add(registry, xfn+"year-from-dateTime",     FN_YearFromDateTime.class) ;
-//        add(registry, xfn+"month-from-dateTime",    FN_MonthFromDateTime.class) ;
-//        add(registry, xfn+"day-from-dateTime",      FN_DayFromDateTime.class) ;
-//
-//        
-//        add(registry, xfn+"hours-from-dateTime",    FN_HoursFromDateTime.class) ;
-//        add(registry, xfn+"minutes-from-dateTime",  FN_MinutesFromDateTime.class) ;
-//        add(registry, xfn+"seconds-from-dateTime",  FN_SecondsFromDateTime.class) ;
-        
-//        add(registry, xfn+"timezone-from-dateTime",  FN_TimezoneFromDateTime.class) ;
-        
-        
-        // fn:compare/2 and /3 and provide collation argument
-        //    Locale locale = new Locale(String language, String country)
-        //      language is two letter lower case, county is uppercase.
-        //        http://www.loc.gov/standards/iso639-2/englangn.html
-        //      Check in Locale.getISOCountries()
-        //        http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html
-        //      Check in Locale.getISOLanguages
-        //    Collator.getInstance(Locale)
-        // fn:current-date() as xs:date = xs:date(fn:current-dateTime()).
-        // fn:current-dateTime as xs:dateTime
-        // fn:current-time() as xs:time
-        
-        // WRONG: fn:max/fn:min are aggregate functions that take a sequence
-        //add(registry, xfn+"max", max.class) ;
-        //add(registry, xfn+"min", min.class) ;
+        add(registry, xfn+"year-from-dateTime",     FN_YearFromDateTime.class) ;
+        add(registry, xfn+"month-from-dateTime",    FN_MonthFromDateTime.class) ;
+        add(registry, xfn+"day-from-dateTime",      FN_DayFromDateTime.class) ;
+        add(registry, xfn+"hours-from-dateTime",    FN_HoursFromDateTime.class) ;
+        add(registry, xfn+"minutes-from-dateTime",  FN_MinutesFromDateTime.class) ;
+        add(registry, xfn+"seconds-from-dateTime",  FN_SecondsFromDateTime.class) ;
+        add(registry, xfn+"timezone-from-dateTime", FN_TimezoneFromDateTime.class) ;
+
+        add(registry, xfn+"years-from-duration",    FN_YearsFromDuration.class) ;
+        add(registry, xfn+"months-from-duration",   FN_MonthsFromDuration.class) ;
+        add(registry, xfn+"days-from-duration",     FN_DaysFromDuration.class) ;
+        add(registry, xfn+"hours-from-duration",    FN_HoursFromDuration.class) ;
+        add(registry, xfn+"minutes-from-duration",  FN_MinutesFromDuration.class) ;
+        add(registry, xfn+"seconds-from-duration",  FN_SecondsFromDuration.class) ;
     }
     
     private static void addCast(FunctionRegistry registry, XSDDatatype dt)

Added: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_DayFromDateTime.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_DayFromDateTime.java?rev=1375608&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_DayFromDateTime.java (added)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_DayFromDateTime.java Tue Aug 21 15:24:27 2012
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.sparql.function.library;
+
+import com.hp.hpl.jena.sparql.expr.NodeValue ;
+import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ;
+import com.hp.hpl.jena.sparql.function.FunctionBase1 ;
+
+public class FN_DayFromDateTime extends FunctionBase1
+{
+    @Override
+    public NodeValue exec(NodeValue v)
+    {
+        return XSDFuncOp.dtGetDay(v) ;
+    }
+}
+

Added: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_DaysFromDuration.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_DaysFromDuration.java?rev=1375608&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_DaysFromDuration.java (added)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_DaysFromDuration.java Tue Aug 21 15:24:27 2012
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.sparql.function.library;
+
+import com.hp.hpl.jena.sparql.expr.NodeValue ;
+import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ;
+import com.hp.hpl.jena.sparql.function.FunctionBase1 ;
+
+public class FN_DaysFromDuration extends FunctionBase1
+{
+    @Override
+    public NodeValue exec(NodeValue v)
+    {
+        return XSDFuncOp.durGetDays(v) ;
+    }
+}
+

Copied: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_Floor.java (from r1372890, jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_floor.java)
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_Floor.java?p2=jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_Floor.java&p1=jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_floor.java&r1=1372890&r2=1375608&rev=1375608&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_floor.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_Floor.java Tue Aug 21 15:24:27 2012
@@ -24,9 +24,9 @@ import com.hp.hpl.jena.sparql.function.F
 
 /** floor(expression) */ 
 
-public class FN_floor extends FunctionBase1
+public class FN_Floor extends FunctionBase1
 {
-    public FN_floor() { super() ; }
+    public FN_Floor() { super() ; }
     
     @Override
     public NodeValue exec(NodeValue v)

Added: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_HoursFromDateTime.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_HoursFromDateTime.java?rev=1375608&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_HoursFromDateTime.java (added)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_HoursFromDateTime.java Tue Aug 21 15:24:27 2012
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.sparql.function.library;
+
+import com.hp.hpl.jena.sparql.expr.NodeValue ;
+import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ;
+import com.hp.hpl.jena.sparql.function.FunctionBase1 ;
+
+public class FN_HoursFromDateTime extends FunctionBase1
+{
+    @Override
+    public NodeValue exec(NodeValue v)
+    {
+        return XSDFuncOp.dtGetHours(v) ;
+    }
+}
+

Added: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_HoursFromDuration.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_HoursFromDuration.java?rev=1375608&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_HoursFromDuration.java (added)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_HoursFromDuration.java Tue Aug 21 15:24:27 2012
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.sparql.function.library;
+
+import com.hp.hpl.jena.sparql.expr.NodeValue ;
+import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ;
+import com.hp.hpl.jena.sparql.function.FunctionBase1 ;
+
+public class FN_HoursFromDuration extends FunctionBase1
+{
+    @Override
+    public NodeValue exec(NodeValue v)
+    {
+        return XSDFuncOp.durGetHours(v) ;
+    }
+}
+

Added: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_MinutesFromDateTime.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_MinutesFromDateTime.java?rev=1375608&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_MinutesFromDateTime.java (added)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_MinutesFromDateTime.java Tue Aug 21 15:24:27 2012
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.sparql.function.library;
+
+import com.hp.hpl.jena.sparql.expr.NodeValue ;
+import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ;
+import com.hp.hpl.jena.sparql.function.FunctionBase1 ;
+
+public class FN_MinutesFromDateTime extends FunctionBase1
+{
+    @Override
+    public NodeValue exec(NodeValue v)
+    {
+        return XSDFuncOp.dtGetMinutes(v) ;
+    }
+}
+

Added: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_MinutesFromDuration.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_MinutesFromDuration.java?rev=1375608&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_MinutesFromDuration.java (added)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_MinutesFromDuration.java Tue Aug 21 15:24:27 2012
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.sparql.function.library;
+
+import com.hp.hpl.jena.sparql.expr.NodeValue ;
+import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ;
+import com.hp.hpl.jena.sparql.function.FunctionBase1 ;
+
+public class FN_MinutesFromDuration extends FunctionBase1
+{
+    @Override
+    public NodeValue exec(NodeValue v)
+    {
+        return XSDFuncOp.durGetMinutes(v) ;
+    }
+}
+

Added: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_MonthFromDateTime.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_MonthFromDateTime.java?rev=1375608&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_MonthFromDateTime.java (added)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_MonthFromDateTime.java Tue Aug 21 15:24:27 2012
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.sparql.function.library;
+
+import com.hp.hpl.jena.sparql.expr.NodeValue ;
+import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ;
+import com.hp.hpl.jena.sparql.function.FunctionBase1 ;
+
+public class FN_MonthFromDateTime extends FunctionBase1
+{
+    @Override
+    public NodeValue exec(NodeValue v)
+    {
+        return XSDFuncOp.dtGetMonth(v) ;
+    }
+}
+

Added: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_MonthsFromDuration.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_MonthsFromDuration.java?rev=1375608&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_MonthsFromDuration.java (added)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_MonthsFromDuration.java Tue Aug 21 15:24:27 2012
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.sparql.function.library;
+
+import com.hp.hpl.jena.sparql.expr.NodeValue ;
+import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ;
+import com.hp.hpl.jena.sparql.function.FunctionBase1 ;
+
+public class FN_MonthsFromDuration extends FunctionBase1
+{
+    @Override
+    public NodeValue exec(NodeValue v)
+    {
+        return XSDFuncOp.durGetMonths(v) ;
+    }
+}
+

Added: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_SecondsFromDateTime.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_SecondsFromDateTime.java?rev=1375608&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_SecondsFromDateTime.java (added)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_SecondsFromDateTime.java Tue Aug 21 15:24:27 2012
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.sparql.function.library;
+
+import com.hp.hpl.jena.sparql.expr.NodeValue ;
+import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ;
+import com.hp.hpl.jena.sparql.function.FunctionBase1 ;
+
+public class FN_SecondsFromDateTime extends FunctionBase1
+{
+    @Override
+    public NodeValue exec(NodeValue v)
+    {
+        return XSDFuncOp.dtGetSeconds(v) ;
+    }
+}
+

Added: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_SecondsFromDuration.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_SecondsFromDuration.java?rev=1375608&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_SecondsFromDuration.java (added)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_SecondsFromDuration.java Tue Aug 21 15:24:27 2012
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.sparql.function.library;
+
+import com.hp.hpl.jena.sparql.expr.NodeValue ;
+import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ;
+import com.hp.hpl.jena.sparql.function.FunctionBase1 ;
+
+public class FN_SecondsFromDuration extends FunctionBase1
+{
+    @Override
+    public NodeValue exec(NodeValue v)
+    {
+        return XSDFuncOp.durGetSeconds(v) ;
+    }
+}
+

Added: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_StrEncodeForURI.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_StrEncodeForURI.java?rev=1375608&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_StrEncodeForURI.java (added)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_StrEncodeForURI.java Tue Aug 21 15:24:27 2012
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.sparql.function.library;
+
+import com.hp.hpl.jena.sparql.expr.NodeValue ;
+import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ;
+import com.hp.hpl.jena.sparql.function.FunctionBase1 ;
+
+public class FN_StrEncodeForURI extends FunctionBase1
+{
+    @Override
+    public NodeValue exec(NodeValue v)
+    {
+        return XSDFuncOp.strEncodeForURI(v) ;
+    }
+}
+

Added: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_TimezoneFromDateTime.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_TimezoneFromDateTime.java?rev=1375608&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_TimezoneFromDateTime.java (added)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_TimezoneFromDateTime.java Tue Aug 21 15:24:27 2012
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.sparql.function.library;
+
+import com.hp.hpl.jena.sparql.expr.NodeValue ;
+import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ;
+import com.hp.hpl.jena.sparql.function.FunctionBase1 ;
+
+public class FN_TimezoneFromDateTime extends FunctionBase1
+{
+    @Override
+    public NodeValue exec(NodeValue v)
+    {
+        return XSDFuncOp.dtGetTimezone(v) ; 
+    }
+}
+

Added: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_YearFromDateTime.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_YearFromDateTime.java?rev=1375608&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_YearFromDateTime.java (added)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_YearFromDateTime.java Tue Aug 21 15:24:27 2012
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.sparql.function.library;
+
+import com.hp.hpl.jena.sparql.expr.NodeValue ;
+import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ;
+import com.hp.hpl.jena.sparql.function.FunctionBase1 ;
+
+public class FN_YearFromDateTime extends FunctionBase1
+{
+    @Override
+    public NodeValue exec(NodeValue v)
+    {
+        return XSDFuncOp.dtGetYear(v) ;
+    }
+}
+

Added: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_YearsFromDuration.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_YearsFromDuration.java?rev=1375608&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_YearsFromDuration.java (added)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/function/library/FN_YearsFromDuration.java Tue Aug 21 15:24:27 2012
@@ -0,0 +1,34 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.sparql.function.library;
+
+import com.hp.hpl.jena.sparql.expr.NodeValue ;
+import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ;
+import com.hp.hpl.jena.sparql.function.FunctionBase1 ;
+
+public class FN_YearsFromDuration extends FunctionBase1
+{
+    @Override
+    public NodeValue exec(NodeValue v)
+    {
+        return XSDFuncOp.durGetYears(v) ;
+    }
+
+}
+