This is an automated email from the ASF dual-hosted git repository.
andy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jena.git
The following commit(s) were added to refs/heads/master by this push:
new 2e68e69 Complete list of inlined types. (#521)
2e68e69 is described below
commit 2e68e69572a1bf37ea943190f63567799de9589b
Author: Andy Seaborne <[email protected]>
AuthorDate: Sat Jan 12 18:46:19 2019 +0000
Complete list of inlined types. (#521)
---
.../java/org/apache/jena/tdb/store/NodeId.java | 57 +++++++++++++---------
1 file changed, 35 insertions(+), 22 deletions(-)
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/store/NodeId.java
b/jena-tdb/src/main/java/org/apache/jena/tdb/store/NodeId.java
index 8fecb72..30baa2e 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/store/NodeId.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/store/NodeId.java
@@ -20,6 +20,8 @@ package org.apache.jena.tdb.store;
import java.math.BigDecimal ;
import java.nio.ByteBuffer ;
+import java.util.HashSet;
+import java.util.Set;
import org.apache.jena.atlas.lib.BitsLong ;
import org.apache.jena.atlas.lib.Bytes ;
@@ -166,35 +168,46 @@ public class NodeId
}
}
- /** Datatypes that are candidates for inlining */
- private static RDFDatatype[] datatypes = {
- XSDDatatype.XSDdecimal,
- XSDDatatype.XSDinteger,
-
- XSDDatatype.XSDlong,
- XSDDatatype.XSDint,
- XSDDatatype.XSDshort,
- XSDDatatype.XSDbyte,
-
- XSDDatatype.XSDunsignedLong,
- XSDDatatype.XSDunsignedInt,
- XSDDatatype.XSDunsignedShort,
- XSDDatatype.XSDunsignedByte,
-
- XSDDatatype.XSDdateTime,
- XSDDatatype.XSDdate,
- XSDDatatype.XSDboolean
+ /** Datatypes that are candidates for inlining */
+ private static Set<RDFDatatype> datatypes = new HashSet<>();
+ static {
+ datatypes.add(XSDDatatype.XSDdecimal);
+ datatypes.add(XSDDatatype.XSDinteger);
+ datatypes.add(XSDDatatype.XSDdate);
+ datatypes.add(XSDDatatype.XSDdateTime);
+ datatypes.add(XSDDatatype.XSDboolean);
+
+ // Derived types. TDB1 does not retain the exact datatype.
+
+ // Derived types of xsd:integer
+ datatypes.add(XSDDatatype.XSDlong);
+ datatypes.add(XSDDatatype.XSDint);
+ datatypes.add(XSDDatatype.XSDshort);
+ datatypes.add(XSDDatatype.XSDbyte);
+
+ datatypes.add(XSDDatatype.XSDunsignedLong);
+ datatypes.add(XSDDatatype.XSDunsignedInt);
+ datatypes.add(XSDDatatype.XSDunsignedShort);
+ datatypes.add(XSDDatatype.XSDunsignedByte);
+
+ datatypes.add(XSDDatatype.XSDpositiveInteger);
+ datatypes.add(XSDDatatype.XSDnegativeInteger);
+
+ datatypes.add(XSDDatatype.XSDnonPositiveInteger);
+ datatypes.add(XSDDatatype.XSDnonNegativeInteger);
+
+ // Derived types of xsd:dateTime
+ datatypes.add(XSDDatatype.XSDdateTimeStamp);
+
} ;
/** Return true if this node has a datatype that looks like it is
inlineable.
* The node may still be out of range (e.g. very large integer).
- * Only inline(Node)->NodeId can determine that.
+ * Only inline(Node)->NodeId can determine that.
*/
public static boolean hasInlineDatatype(Node node) {
RDFDatatype dtn = node.getLiteralDatatype() ;
- for ( RDFDatatype dt : datatypes )
- if ( dt.equals(dtn) ) return true ;
- return false ;
+ return datatypes.contains(dtn);
}
private static NodeId inline$(Node node) {