From 2fda70efd56df43a9472491cb2a7d3984b47918b Mon Sep 17 00:00:00 2001 From: Andy Seaborne Date: Thu, 24 Oct 2019 14:47:10 +0100 Subject: [PATCH 1/2] JENA-1773: Remove any previous prefix setting. --- .../java/org/apache/jena/tdb2/store/StoragePrefixesTDB.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/StoragePrefixesTDB.java b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/StoragePrefixesTDB.java index 425c8c21500..e4317386062 100644 --- a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/StoragePrefixesTDB.java +++ b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/StoragePrefixesTDB.java @@ -91,6 +91,8 @@ public void add_ext(Node graphNode, String prefix, String iriStr) { graphNode = PrefixLib.canonicalGraphName(graphNode); Node p = NodeFactory.createLiteral(prefix); Node u = NodeFactory.createURI(iriStr); + // Delete any existing old mapping of prefix. + remove_ext(graphNode, p, Node.ANY); prefixTable.addRow(graphNode,p,u); } @@ -111,7 +113,7 @@ private void remove(Node g, Node p, Node u) { } /** Remove without checks - used by the bulkloader when it takes control of the transaction. */ - public void remove_ext(Node g, Node p, Node u) { + private void remove_ext(Node g, Node p, Node u) { // See add_ext g = PrefixLib.canonicalGraphName(g); Iterator> iter = prefixTable.find(g, p, u); From 1a4735267181cc3a6c576275b2a0427d96968423 Mon Sep 17 00:00:00 2001 From: Andy Seaborne Date: Thu, 24 Oct 2019 14:47:38 +0100 Subject: [PATCH 2/2] Prefix related cleanup --- .../jena/dboe/storage/prefixes/PrefixEntry.java | 5 +++++ .../jena/dboe/storage/prefixes/PrefixLib.java | 14 ++++++++++++++ .../jena/tdb2/store/GraphViewSwitchable.java | 2 +- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/jena-db/jena-dboe-storage/src/main/java/org/apache/jena/dboe/storage/prefixes/PrefixEntry.java b/jena-db/jena-dboe-storage/src/main/java/org/apache/jena/dboe/storage/prefixes/PrefixEntry.java index 0e6e9492a5c..7cecbd5c982 100644 --- a/jena-db/jena-dboe-storage/src/main/java/org/apache/jena/dboe/storage/prefixes/PrefixEntry.java +++ b/jena-db/jena-dboe-storage/src/main/java/org/apache/jena/dboe/storage/prefixes/PrefixEntry.java @@ -39,4 +39,9 @@ public String getPrefix() { public String getUri() { return uri; } + + @Override + public String toString() { + return "PrefixEntry["+prefix+": <"+uri+">]"; + } } \ No newline at end of file diff --git a/jena-db/jena-dboe-storage/src/main/java/org/apache/jena/dboe/storage/prefixes/PrefixLib.java b/jena-db/jena-dboe-storage/src/main/java/org/apache/jena/dboe/storage/prefixes/PrefixLib.java index 0281816286e..5c08157a1b6 100644 --- a/jena-db/jena-dboe-storage/src/main/java/org/apache/jena/dboe/storage/prefixes/PrefixLib.java +++ b/jena-db/jena-dboe-storage/src/main/java/org/apache/jena/dboe/storage/prefixes/PrefixLib.java @@ -17,6 +17,8 @@ package org.apache.jena.dboe.storage.prefixes; +import java.util.Objects; + import org.apache.jena.atlas.lib.Pair; import org.apache.jena.dboe.storage.StoragePrefixes; import org.apache.jena.graph.Node; @@ -40,11 +42,23 @@ public static String canonicalPrefix(String prefix) { /** Canonical name for graphs */ public static Node canonicalGraphName(Node graphName) { + if ( graphName == StoragePrefixes.nodeDefaultGraph) + return graphName; if ( graphName == null || Quad.isDefaultGraph(graphName) ) return StoragePrefixes.nodeDefaultGraph; return graphName; } + /** + * Is this the canonical, internal marker for the default graph for storage + * prefixes? ({@link StoragePrefixes#nodeDefaultGraph}) + * + * @param graphName + */ + public static boolean isNodeDefaultGraph(Node graphName) { + return Objects.equals(StoragePrefixes.nodeDefaultGraph, graphName); + } + /** abbreviate a uriStr, giving a string as a short form. If not possible return null. * This does not guarantee that the result is suitable for all RDF syntaxes. * Further checking for the rules of a particular syntax are necessary. diff --git a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/GraphViewSwitchable.java b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/GraphViewSwitchable.java index 0d499e0e345..ad5907b1c80 100644 --- a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/GraphViewSwitchable.java +++ b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/GraphViewSwitchable.java @@ -136,7 +136,7 @@ class PrefixMapTDB2 extends PrefixMapBase { @Override protected StoragePrefixMap spm() { StoragePrefixes prefixes = getDSG().getPrefixes(); - StoragePrefixMap view = Quad.isDefaultGraph(graphName) + StoragePrefixMap view = PrefixLib.isNodeDefaultGraph(graphName) ? StoragePrefixesView.viewDefaultGraph(prefixes) : StoragePrefixesView.viewGraph(prefixes, graphName); return view;