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/12/23 12:09:04 UTC

[1/3] jena git commit: JENA-828, JENA-816 : Tidy up String literals handling.

Repository: jena
Updated Branches:
  refs/heads/master 95b1c7c20 -> 452a59bfb


JENA-828, JENA-816  : Tidy up String literals handling.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/45fbca7b
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/45fbca7b
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/45fbca7b

Branch: refs/heads/master
Commit: 45fbca7b71fb06cd83069bd1ff8dc5259d88c637
Parents: 95b1c7c
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Dec 23 11:04:50 2014 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Dec 23 11:04:50 2014 +0000

----------------------------------------------------------------------
 .../com/hp/hpl/jena/sparql/util/NodeUtils.java  | 42 ++++++++++----------
 1 file changed, 21 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/45fbca7b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/NodeUtils.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/NodeUtils.java b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/NodeUtils.java
index b3e01e8..2374654 100644
--- a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/NodeUtils.java
+++ b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/NodeUtils.java
@@ -48,31 +48,17 @@ public class NodeUtils
         boolean equal(Node n1, Node n2) ;
     }
 
+    /** IRI to Node */ 
     public static Node asNode(IRI iri) {
         return NodeFactory.createURI(iri.toString()) ;
     }
 
+    /** IRI string to Node */ 
     public static Node asNode(String iri) {
         return NodeFactory.createURI(iri) ;
     }
 
-    public static boolean isStringLiteral(Node literal) {
-        if ( !literal.isLiteral() )
-            return false ;
-        RDFDatatype dType = literal.getLiteralDatatype() ;
-        String langTag = literal.getLiteralLanguage() ;
-
-        // Language?
-        if ( langTag == null || !langTag.equals("") )
-            return false ;
-
-        // Datatype
-        if ( dType != null && !dType.equals(XSDDatatype.XSDstring) )
-            return false ;
-
-        return true ;
-    }
-
+    /** Return true if the node is a literal and has a language tag */ 
     public static boolean hasLang(Node node) {
         if ( !node.isLiteral() )
             return false ;
@@ -84,14 +70,27 @@ public class NodeUtils
         return true ;
     }
 
-    // Get the string value of plain literal or XSD string.
-
+    /** Get lexical for of anythign that looks like a string literal.
+     * Returns the string value of plain literal (simple literal
+     * or lang string) or XSD string.
+     */
     public static String stringLiteral(Node literal) {
-        if ( !isStringLiteral(literal) )
+        if ( !literal.isLiteral() )
             return null ;
-        return literal.getLiteralLexicalForm() ;
+        RDFDatatype dType = literal.getLiteralDatatype() ;
+        String langTag = literal.getLiteralLanguage() ;
+
+        // Language?
+        if ( langTag != null && !langTag.equals("") )
+            return literal.getLiteralLexicalForm() ;
+
+        if ( dType == null || dType.equals(XSDDatatype.XSDstring) )
+            return literal.getLiteralLexicalForm() ;
+
+        return null ;
     }
 
+    /** Convert IRI Nodes to strings.  Skip other kinds of Node */  
     public static Iterator<String> nodesToURIs(Iterator<Node> iter) {
         MapFilter<Node, String> mapper = new MapFilter<Node, String>() {
             @Override
@@ -105,6 +104,7 @@ public class NodeUtils
         return conv ;
     }
 
+    /** Convert IRI String to Node */  
     public static Set<Node> convertToNodes(Collection<String> uris) {
         Set<Node> nodes = new HashSet<>() ;
         for ( String x : uris )


[3/3] jena git commit: JENA-835 : Code to make SDB work for both RDF 1.0 and RDF 1.1.

Posted by an...@apache.org.
JENA-835 : Code to make SDB work for both RDF 1.0 and RDF 1.1.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/452a59bf
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/452a59bf
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/452a59bf

Branch: refs/heads/master
Commit: 452a59bfb494c13a84ca90b808fb3695c530b2d5
Parents: e801bd1
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Dec 23 11:08:45 2014 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Dec 23 11:08:45 2014 +0000

----------------------------------------------------------------------
 .../src/main/java/com/hp/hpl/jena/sdb/layout2/NodeLayout2.java | 6 +++++-
 .../main/java/com/hp/hpl/jena/sdb/layout2/TupleLoaderBase.java | 3 ++-
 .../java/com/hp/hpl/jena/sdb/layout2/hash/StoreBaseHash.java   | 4 ++--
 .../com/hp/hpl/jena/sdb/layout2/hash/TupleLoaderOneHash.java   | 4 ++--
 .../java/com/hp/hpl/jena/sdb/layout2/index/StoreBaseIndex.java | 4 ++--
 5 files changed, 13 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/452a59bf/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/NodeLayout2.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/NodeLayout2.java b/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/NodeLayout2.java
index d77a381..2a2ba2f 100644
--- a/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/NodeLayout2.java
+++ b/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/NodeLayout2.java
@@ -27,6 +27,7 @@ import org.slf4j.LoggerFactory;
 
 import com.hp.hpl.jena.graph.Node;
 import com.hp.hpl.jena.sdb.SDBException;
+import com.hp.hpl.jena.sparql.util.NodeUtils ;
 
 /** Operations associated with nodes and layout 2 (the Triples+Nodes layout)
  */
@@ -93,8 +94,11 @@ public class NodeLayout2
         else throw new SDBException("Attempt to hash a variable") ;
                          
         String datatypeStr = "" ;
-        if ( n.isLiteral() )
+        if ( n.isLiteral() ) {
             datatypeStr = n.getLiteralDatatypeURI() ;
+            if ( NodeUtils.isSimpleString(n) || NodeUtils.isLangString(n) )
+                datatypeStr = null ;
+        }
         String langStr = "" ;
         if ( n.isLiteral() )
             langStr = n.getLiteralLanguage() ;

http://git-wip-us.apache.org/repos/asf/jena/blob/452a59bf/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/TupleLoaderBase.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/TupleLoaderBase.java b/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/TupleLoaderBase.java
index 6adef76..bc02d9e 100644
--- a/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/TupleLoaderBase.java
+++ b/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/TupleLoaderBase.java
@@ -28,6 +28,7 @@ import com.hp.hpl.jena.sdb.SDBException;
 import com.hp.hpl.jena.sdb.sql.SDBConnection;
 import com.hp.hpl.jena.sdb.sql.TableUtils;
 import com.hp.hpl.jena.sdb.store.TableDesc;
+import com.hp.hpl.jena.sparql.util.NodeUtils ;
 
 public abstract class TupleLoaderBase extends com.hp.hpl.jena.sdb.store.TupleLoaderBase implements TupleLoaderBasics {
 	
@@ -433,7 +434,7 @@ public abstract class TupleLoaderBase extends com.hp.hpl.jena.sdb.store.TupleLoa
             {
                 lang = node.getLiteralLanguage();
                 datatype = node.getLiteralDatatypeURI();
-                if (datatype == null)
+                if ( NodeUtils.isSimpleString(node) || NodeUtils.isLangString(node) )
                     datatype = "";
             }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/452a59bf/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/hash/StoreBaseHash.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/hash/StoreBaseHash.java b/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/hash/StoreBaseHash.java
index f3bc264..d7bdc0c 100644
--- a/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/hash/StoreBaseHash.java
+++ b/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/hash/StoreBaseHash.java
@@ -21,7 +21,6 @@ import java.sql.ResultSet;
 import java.sql.SQLException;
 
 import com.hp.hpl.jena.graph.Node;
-
 import com.hp.hpl.jena.sdb.StoreDesc;
 import com.hp.hpl.jena.sdb.compiler.QueryCompilerFactory;
 import com.hp.hpl.jena.sdb.layout2.NodeLayout2;
@@ -36,6 +35,7 @@ import com.hp.hpl.jena.sdb.store.SQLBridgeFactory;
 import com.hp.hpl.jena.sdb.store.SQLGenerator;
 import com.hp.hpl.jena.sdb.store.StoreFormatter;
 import com.hp.hpl.jena.sdb.store.StoreLoader;
+import com.hp.hpl.jena.sparql.util.NodeUtils ;
 
 public class StoreBaseHash extends StoreBase
 {
@@ -66,7 +66,7 @@ public class StoreBaseHash extends StoreBase
         {
             lang = node.getLiteralLanguage();
             datatype = node.getLiteralDatatypeURI();
-            if (datatype == null)
+            if ( NodeUtils.isSimpleString(node) || NodeUtils.isLangString(node) )
                 datatype = "";
         }
         

http://git-wip-us.apache.org/repos/asf/jena/blob/452a59bf/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/hash/TupleLoaderOneHash.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/hash/TupleLoaderOneHash.java b/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/hash/TupleLoaderOneHash.java
index 4ece749..1cc9805 100644
--- a/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/hash/TupleLoaderOneHash.java
+++ b/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/hash/TupleLoaderOneHash.java
@@ -24,7 +24,6 @@ import java.sql.ResultSet;
 import java.sql.SQLException;
 
 import com.hp.hpl.jena.graph.Node;
-
 import com.hp.hpl.jena.sdb.Store;
 import com.hp.hpl.jena.sdb.core.sqlexpr.SqlConstant;
 import com.hp.hpl.jena.sdb.layout2.NodeLayout2;
@@ -35,6 +34,7 @@ import com.hp.hpl.jena.sdb.sql.SDBConnection;
 import com.hp.hpl.jena.sdb.sql.SQLUtils;
 import com.hp.hpl.jena.sdb.store.TableDesc;
 import com.hp.hpl.jena.sdb.store.TupleLoaderOne;
+import com.hp.hpl.jena.sparql.util.NodeUtils ;
 
 public class TupleLoaderOneHash extends TupleLoaderOne
 {
@@ -68,7 +68,7 @@ public class TupleLoaderOneHash extends TupleLoaderOne
         {
             lang = node.getLiteralLanguage() ;
             datatype = node.getLiteralDatatypeURI() ;
-            if ( datatype == null )
+            if ( NodeUtils.isSimpleString(node) || NodeUtils.isLangString(node) )
                 datatype = "" ;
         }
         

http://git-wip-us.apache.org/repos/asf/jena/blob/452a59bf/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/index/StoreBaseIndex.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/index/StoreBaseIndex.java b/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/index/StoreBaseIndex.java
index 463cd73..ef310e1 100644
--- a/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/index/StoreBaseIndex.java
+++ b/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/layout2/index/StoreBaseIndex.java
@@ -22,7 +22,6 @@ import java.sql.ResultSet;
 import java.sql.SQLException;
 
 import com.hp.hpl.jena.graph.Node;
-
 import com.hp.hpl.jena.sdb.StoreDesc;
 import com.hp.hpl.jena.sdb.compiler.QueryCompilerFactory;
 import com.hp.hpl.jena.sdb.layout2.NodeLayout2;
@@ -37,6 +36,7 @@ import com.hp.hpl.jena.sdb.store.SQLBridgeFactory;
 import com.hp.hpl.jena.sdb.store.SQLGenerator;
 import com.hp.hpl.jena.sdb.store.StoreFormatter;
 import com.hp.hpl.jena.sdb.store.StoreLoader;
+import com.hp.hpl.jena.sparql.util.NodeUtils ;
 
 public class StoreBaseIndex extends StoreBase
 {
@@ -68,7 +68,7 @@ public class StoreBaseIndex extends StoreBase
         {
             lang = node.getLiteralLanguage();
             datatype = node.getLiteralDatatypeURI();
-            if (datatype == null)
+            if ( NodeUtils.isSimpleString(node) || NodeUtils.isLangString(node) )
                 datatype = "";
         }
 


[2/3] jena git commit: JENA-834 : Code to make TDB work for both RDF 1.0 and RDF 1.1.

Posted by an...@apache.org.
JENA-834 : Code to make TDB work for both RDF 1.0 and RDF 1.1.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/e801bd1b
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/e801bd1b
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/e801bd1b

Branch: refs/heads/master
Commit: e801bd1bb9f7305b6c87aa1e872e79a59a39cce0
Parents: 45fbca7
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Dec 23 11:08:23 2014 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Dec 23 11:08:23 2014 +0000

----------------------------------------------------------------------
 .../main/java/com/hp/hpl/jena/tdb/lib/NodeLib.java | 13 +++++++++----
 .../main/java/com/hp/hpl/jena/tdb/store/Hash.java  |  2 +-
 .../java/com/hp/hpl/jena/tdb/store/NodeId.java     | 11 ++++++++---
 .../java/com/hp/hpl/jena/tdb/store/NodeType.java   |  1 +
 .../hp/hpl/jena/tdb/store/nodetable/NodecSSE.java  | 17 +++++++++--------
 5 files changed, 28 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/e801bd1b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/lib/NodeLib.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/lib/NodeLib.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/lib/NodeLib.java
index 291d10c..d63396e 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/lib/NodeLib.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/lib/NodeLib.java
@@ -36,6 +36,7 @@ import org.apache.jena.atlas.logging.Log ;
 import org.apache.jena.riot.out.NodeFmtLib ;
 
 import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.sparql.util.NodeUtils ;
 import com.hp.hpl.jena.tdb.TDBException ;
 import com.hp.hpl.jena.tdb.base.block.Block ;
 import com.hp.hpl.jena.tdb.base.objectfile.ObjectFile ;
@@ -126,10 +127,14 @@ public class NodeLib
                 hash(h, n.getBlankNodeLabel(), null, null, nt) ;
                 return ;
             case LITERAL:
-                hash(h,
-                     n.getLiteralLexicalForm(),
-                     n.getLiteralLanguage(),
-                     n.getLiteralDatatypeURI(), nt) ;
+                String dt = n.getLiteralDatatypeURI() ;
+                if ( NodeUtils.isSimpleString(n) || NodeUtils.isLangString(n) ) {
+                    // RDF 1.1 : No datatype for:
+                    //   xsd:String as simple literals
+                    //   rdf:langString and @ 
+                    dt = null ;
+                }
+                hash(h, n.getLiteralLexicalForm(), n.getLiteralLanguage(), dt, nt) ;
                 return  ;
             case OTHER:
                 throw new TDBException("Attempt to hash something strange: "+n) ; 

http://git-wip-us.apache.org/repos/asf/jena/blob/e801bd1b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/Hash.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/Hash.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/Hash.java
index 8696694..0ddbc93 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/Hash.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/Hash.java
@@ -26,7 +26,7 @@ import org.apache.jena.atlas.lib.Bytes ;
 /** Hash values. */ 
 public class Hash
 {
-    byte [] bytes ;
+    private byte [] bytes ;
     public Hash(int len) { bytes = new byte[len] ; }
     public int getLen() { return bytes.length ; }
     public byte [] getBytes() { return bytes ; }

http://git-wip-us.apache.org/repos/asf/jena/blob/e801bd1b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/NodeId.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/NodeId.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/NodeId.java
index cc82642..0cc9cf3 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/NodeId.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/NodeId.java
@@ -31,6 +31,7 @@ import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.graph.NodeFactory ;
 import com.hp.hpl.jena.graph.impl.LiteralLabel ;
 import com.hp.hpl.jena.sparql.graph.NodeConst ;
+import com.hp.hpl.jena.sparql.util.NodeUtils ;
 import com.hp.hpl.jena.tdb.TDBException ;
 import com.hp.hpl.jena.tdb.sys.SystemTDB ;
 
@@ -162,10 +163,14 @@ public class NodeId
             return null ;
         }
         
-        if ( ! node.isLiteral() ) return null ;
-        if ( node.getLiteralDatatype() == null ) return null ;
+        if ( ! enableInlineLiterals )
+            return null ;
+
+        if ( ! node.isLiteral() )  
+            return null ;
         
-        if ( ! enableInlineLiterals ) return null ;
+        if ( NodeUtils.isSimpleString(node) || NodeUtils.isLangString(node) )
+            return null ;
         
         try { return inline$(node) ; }
         catch (Throwable th) {

http://git-wip-us.apache.org/repos/asf/jena/blob/e801bd1b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/NodeType.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/NodeType.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/NodeType.java
index 4720bcf..c34bc4b 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/NodeType.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/NodeType.java
@@ -24,6 +24,7 @@ import com.hp.hpl.jena.sparql.util.Named;
 
 import com.hp.hpl.jena.tdb.TDBException;
 
+// Currently unused.
 public enum NodeType implements Named
 {
     // Do not allocate id 0

http://git-wip-us.apache.org/repos/asf/jena/blob/e801bd1b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodecSSE.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodecSSE.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodecSSE.java
index 4d9c1f7..6390eff 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodecSSE.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/nodetable/NodecSSE.java
@@ -35,6 +35,7 @@ import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.graph.NodeFactory ;
 import com.hp.hpl.jena.rdf.model.AnonId ;
 import com.hp.hpl.jena.shared.PrefixMapping ;
+import com.hp.hpl.jena.sparql.util.NodeUtils ;
 import com.hp.hpl.jena.tdb.TDBException ;
 import com.hp.hpl.jena.tdb.lib.StringAbbrev ;
 
@@ -70,7 +71,7 @@ public class NodecSSE implements Nodec
                 node = NodeFactory.createURI(x) ; 
         }
         
-        if ( node.isLiteral() && node.getLiteralLanguage() != null )
+        if ( node.isLiteral() && NodeUtils.isLangString(node) )
         {
             // Check syntactically valid.
             String lang = node.getLiteralLanguage() ;
@@ -150,14 +151,14 @@ public class NodecSSE implements Nodec
             return 2+maxLength(node.getURI()) ;
         if ( node.isLiteral() )
         {
-            if ( node.getLiteralDatatypeURI() != null )
+            int len = 2+maxLength(node.getLiteralLexicalForm()) ;
+            if ( NodeUtils.isLangString(node) )
+                // Space for @ (language tag is ASCII)
+                len = len + 3 + node.getLiteralLanguage().length() ;
+            else if ( ! NodeUtils.isSimpleString(node) )
                 // The quotes and also space for ^^<>
-                return 6+maxLength(node.getLiteralLexicalForm())+maxLength(node.getLiteralDatatypeURI()) ;
-            else if ( node.getLiteralLanguage() != null )
-                // The quotes and also space for @ (language tag is ASCII)
-                return 3+maxLength(node.getLiteralLexicalForm())+node.getLiteralLanguage().length() ;
-            else
-                return 2+maxLength(node.getLiteralLexicalForm()) ;
+                len = len + 4 + maxLength(node.getLiteralDatatypeURI()) ;
+            return len ;
         }
         if ( node.isVariable() )
             // "?"