This is an automated email from the ASF dual-hosted git repository. andy pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/jena.git
commit f50f51105a2234dd8186c54c0483dc032742ca6b Author: Andy Seaborne <[email protected]> AuthorDate: Wed Nov 5 16:33:51 2025 +0000 CDT initialization --- jena-arq/src/main/java/org/apache/jena/cdt/CDTFactory.java | 4 ++-- .../java/org/apache/jena/cdt/CDTLiteralParserBase.java | 4 ++-- .../java/org/apache/jena/cdt/CompositeDatatypeList.java | 14 +++++++++----- .../java/org/apache/jena/cdt/CompositeDatatypeMap.java | 14 +++++++++----- jena-arq/src/main/java/org/apache/jena/query/ARQ.java | 4 ++-- .../org/apache/jena/riot/system/CDTAwareParserProfile.java | 12 ++++++------ .../function/library/cdt/CDTLiteralFunctionUtils.java | 4 ++-- .../org/apache/jena/sparql/lang/arq/ARQParserBase.java | 8 ++++---- 8 files changed, 36 insertions(+), 28 deletions(-) diff --git a/jena-arq/src/main/java/org/apache/jena/cdt/CDTFactory.java b/jena-arq/src/main/java/org/apache/jena/cdt/CDTFactory.java index 9af154467a..89307e94bb 100644 --- a/jena-arq/src/main/java/org/apache/jena/cdt/CDTFactory.java +++ b/jena-arq/src/main/java/org/apache/jena/cdt/CDTFactory.java @@ -40,12 +40,12 @@ public class CDTFactory } public static CDTValue createValue( final List<CDTValue> l ) { - final Node n = NodeFactory.createLiteralByValue(l, CompositeDatatypeList.type); + final Node n = NodeFactory.createLiteralByValue(l, CompositeDatatypeList.datatype()); return createValue(n); } public static CDTValue createValue( final Map<CDTKey,CDTValue> m ) { - final Node n = NodeFactory.createLiteralByValue(m, CompositeDatatypeMap.type); + final Node n = NodeFactory.createLiteralByValue(m, CompositeDatatypeMap.datatype()); return createValue(n); } diff --git a/jena-arq/src/main/java/org/apache/jena/cdt/CDTLiteralParserBase.java b/jena-arq/src/main/java/org/apache/jena/cdt/CDTLiteralParserBase.java index 7e26446c20..816078e550 100644 --- a/jena-arq/src/main/java/org/apache/jena/cdt/CDTLiteralParserBase.java +++ b/jena-arq/src/main/java/org/apache/jena/cdt/CDTLiteralParserBase.java @@ -38,11 +38,11 @@ public class CDTLiteralParserBase extends LangParserBase @Override protected Node createLiteral( final String lex, final String langTag, final String datatypeURI, final int line, final int column ) { if ( CompositeDatatypeList.uri.equals(datatypeURI) ) { - return profile.createTypedLiteral(lex, CompositeDatatypeList.type, 0L, 0L); + return profile.createTypedLiteral(lex, CompositeDatatypeList.datatype(), 0L, 0L); } if ( CompositeDatatypeMap.uri.equals(datatypeURI) ) { - return profile.createTypedLiteral(lex, CompositeDatatypeMap.type, 0L, 0L); + return profile.createTypedLiteral(lex, CompositeDatatypeMap.datatype(), 0L, 0L); } return super.createLiteral(lex, langTag, datatypeURI, line, column); diff --git a/jena-arq/src/main/java/org/apache/jena/cdt/CompositeDatatypeList.java b/jena-arq/src/main/java/org/apache/jena/cdt/CompositeDatatypeList.java index c377b607d4..f143f5de2b 100644 --- a/jena-arq/src/main/java/org/apache/jena/cdt/CompositeDatatypeList.java +++ b/jena-arq/src/main/java/org/apache/jena/cdt/CompositeDatatypeList.java @@ -32,9 +32,14 @@ import org.apache.jena.sparql.expr.NodeValue; public class CompositeDatatypeList extends CompositeDatatypeBase<List<CDTValue>> { public final static String uri = "http://w3id.org/awslabs/neptune/SPARQL-CDTs/List"; - public final static CompositeDatatypeList type = new CompositeDatatypeList(); + public final static CompositeDatatypeList datatype() { return DT.type; } - protected CompositeDatatypeList() {} + // Thread-safe lazy initializer + private static class DT { + static CompositeDatatypeList type = new CompositeDatatypeList(); + } + + private CompositeDatatypeList() {} @Override public String getURI() { @@ -53,8 +58,7 @@ public class CompositeDatatypeList extends CompositeDatatypeBase<List<CDTValue>> return false; } } - - return true; + return true; } @Override @@ -90,7 +94,7 @@ public class CompositeDatatypeList extends CompositeDatatypeBase<List<CDTValue>> return ParserForCDTLiterals.parseListLiteral(lexicalForm); } catch ( final Exception ex ) { - throw new DatatypeFormatException(lexicalForm, type, ex); + throw new DatatypeFormatException(lexicalForm, datatype(), ex); } } diff --git a/jena-arq/src/main/java/org/apache/jena/cdt/CompositeDatatypeMap.java b/jena-arq/src/main/java/org/apache/jena/cdt/CompositeDatatypeMap.java index d3070127f9..492042e9b7 100644 --- a/jena-arq/src/main/java/org/apache/jena/cdt/CompositeDatatypeMap.java +++ b/jena-arq/src/main/java/org/apache/jena/cdt/CompositeDatatypeMap.java @@ -35,9 +35,14 @@ import org.apache.jena.sparql.expr.NodeValue; public class CompositeDatatypeMap extends CompositeDatatypeBase<Map<CDTKey,CDTValue>> { public final static String uri = "http://w3id.org/awslabs/neptune/SPARQL-CDTs/Map"; - public final static CompositeDatatypeMap type = new CompositeDatatypeMap(); + public final static CompositeDatatypeMap datatype() { return DT.type ; } - protected CompositeDatatypeMap() {} + // Thread-safe lazy initializer + private static class DT { + static CompositeDatatypeMap type = new CompositeDatatypeMap(); + } + + private CompositeDatatypeMap() {} @Override public String getURI() { @@ -59,8 +64,7 @@ public class CompositeDatatypeMap extends CompositeDatatypeBase<Map<CDTKey,CDTVa return false; } } - - return true; + return true; } @Override @@ -96,7 +100,7 @@ public class CompositeDatatypeMap extends CompositeDatatypeBase<Map<CDTKey,CDTVa return ParserForCDTLiterals.parseMapLiteral(lexicalForm); } catch ( final Exception ex ) { - throw new DatatypeFormatException(lexicalForm, type, ex); + throw new DatatypeFormatException(lexicalForm, datatype(), ex); } } diff --git a/jena-arq/src/main/java/org/apache/jena/query/ARQ.java b/jena-arq/src/main/java/org/apache/jena/query/ARQ.java index 7fa7ea804f..f8134ffa6e 100644 --- a/jena-arq/src/main/java/org/apache/jena/query/ARQ.java +++ b/jena-arq/src/main/java/org/apache/jena/query/ARQ.java @@ -689,8 +689,8 @@ public class ARQ SPARQLFuncOp.init(); // Register the datatypes for the CDT literals - TypeMapper.getInstance().registerDatatype(CompositeDatatypeList.type) ; - TypeMapper.getInstance().registerDatatype(CompositeDatatypeMap.type) ; + TypeMapper.getInstance().registerDatatype(CompositeDatatypeList.datatype()) ; + TypeMapper.getInstance().registerDatatype(CompositeDatatypeMap.datatype()) ; JenaSystem.logLifecycle("ARQ.init - finish"); } diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/CDTAwareParserProfile.java b/jena-arq/src/main/java/org/apache/jena/riot/system/CDTAwareParserProfile.java index 1deaa592d9..58b67ed58c 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/system/CDTAwareParserProfile.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/system/CDTAwareParserProfile.java @@ -65,11 +65,11 @@ public class CDTAwareParserProfile extends ParserProfileStd { // are all blank node identifers that occur directly in the file (i.e., // ourside of CDT literals). - if ( datatype.equals(CompositeDatatypeList.type) ) { + if ( datatype.equals(CompositeDatatypeList.datatype()) ) { return createListLiteral(lex); } - if ( datatype.equals(CompositeDatatypeMap.type) ) { + if ( datatype.equals(CompositeDatatypeMap.datatype()) ) { return createMapLiteral(lex); } @@ -88,7 +88,7 @@ public class CDTAwareParserProfile extends ParserProfileStd { value = ParserForCDTLiterals.parseListLiteral(this, lex); } catch ( final Exception ex ) { - throw new DatatypeFormatException(lex, CompositeDatatypeList.type, ex); + throw new DatatypeFormatException(lex, CompositeDatatypeList.datatype(), ex); } // At this point we have both the lexical form (which, after the @@ -104,7 +104,7 @@ public class CDTAwareParserProfile extends ParserProfileStd { // may not be identical to the lexical form with which we have created // the value here. The issue with that is that a SAMETERM comparison // would incorrectly return false. - final LiteralLabel ll = LiteralLabelFactory.createIncludingValue(lex, value, CompositeDatatypeList.type); + final LiteralLabel ll = LiteralLabelFactory.createIncludingValue(lex, value, CompositeDatatypeList.datatype()); @SuppressWarnings("deprecation") Node n = NodeFactory.createLiteral(ll); return n; @@ -122,12 +122,12 @@ public class CDTAwareParserProfile extends ParserProfileStd { value = ParserForCDTLiterals.parseMapLiteral(this, lex); } catch ( final Exception ex ) { - throw new DatatypeFormatException(lex, CompositeDatatypeMap.type, ex); + throw new DatatypeFormatException(lex, CompositeDatatypeMap.datatype(), ex); } // We create a LiteralLabel with both the lexical form and the value, // for the same reasons as described above in createListLiteral(). - final LiteralLabel ll = LiteralLabelFactory.createIncludingValue(lex, value, CompositeDatatypeMap.type); + final LiteralLabel ll = LiteralLabelFactory.createIncludingValue(lex, value, CompositeDatatypeMap.datatype()); @SuppressWarnings("deprecation") Node n = NodeFactory.createLiteral(ll); return n; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/function/library/cdt/CDTLiteralFunctionUtils.java b/jena-arq/src/main/java/org/apache/jena/sparql/function/library/cdt/CDTLiteralFunctionUtils.java index 534eb6d787..352c64f0f1 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/function/library/cdt/CDTLiteralFunctionUtils.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/function/library/cdt/CDTLiteralFunctionUtils.java @@ -123,7 +123,7 @@ public class CDTLiteralFunctionUtils * given list. */ public static final Node createNode( final List<CDTValue> list ) { - return NodeFactory.createLiteralByValue(list, CompositeDatatypeList.type); + return NodeFactory.createLiteralByValue(list, CompositeDatatypeList.datatype()); } /** @@ -131,7 +131,7 @@ public class CDTLiteralFunctionUtils * given map. */ public static final Node createNode( final Map<CDTKey,CDTValue> map ) { - return NodeFactory.createLiteralByValue(map, CompositeDatatypeMap.type); + return NodeFactory.createLiteralByValue(map, CompositeDatatypeMap.datatype()); } /** diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java index e3d0bcf29e..89a63304d0 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java @@ -82,9 +82,9 @@ public class ARQParserBase extends SPARQLParserBase protected void jsonValueNull(long currLine, long currCol) { handler.valueNull(currLine, currCol) ; } protected void jsonValueVar(String image, long currLine, long currCol) { throw new NotImplemented("yet") ; } - protected ElementGroup createQueryPattern(Template t){ + protected ElementGroup createQueryPattern(Template template){ ElementGroup elg = new ElementGroup(); - Map<Node, BasicPattern> graphs = t.getGraphPattern(); + Map<Node, BasicPattern> graphs = template.getGraphPattern(); for(Node n: graphs.keySet()){ Element el = new ElementPathBlock(graphs.get(n)); if(! Quad.defaultGraphNodeGenerated.equals(n) ){ @@ -109,9 +109,9 @@ public class ARQParserBase extends SPARQLParserBase // reusing the same ParserProfile for parsing all the CDT literals. final RDFDatatype cdtDatatype; if ( CompositeDatatypeList.uri.equals(datatypeURI) ) - cdtDatatype = CompositeDatatypeList.type; + cdtDatatype = CompositeDatatypeList.datatype(); else if ( CompositeDatatypeMap.uri.equals(datatypeURI) ) - cdtDatatype = CompositeDatatypeMap.type; + cdtDatatype = CompositeDatatypeMap.datatype(); else cdtDatatype = null;
