Skip to content

Commit c0d73b1

Browse files
authored
Merge pull request #348 from sneakers-the-rat/example-fix-dumper-prefixes
Fix: rdflib dumper ignores explicitly defined prefixes
2 parents ad74966 + a09381f commit c0d73b1

File tree

3 files changed

+19
-20
lines changed

3 files changed

+19
-20
lines changed

linkml_runtime/dumpers/rdflib_dumper.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -47,26 +47,26 @@ def as_rdf_graph(
4747
# TODO replace with `prefix_map = prefix_map.bimap` after making minimum requirement on python 3.8
4848
prefix_map = {record.prefix: record.uri_prefix for record in prefix_map.records}
4949
logger.debug(f'PREFIXMAP={prefix_map}')
50+
namespaces = schemaview.namespaces()
5051
if prefix_map:
5152
for k, v in prefix_map.items():
5253
if k == "@base":
53-
schemaview.namespaces()._base = v
54+
namespaces._base = v
5455
else:
55-
schemaview.namespaces()[k] = v
56+
namespaces[k] = v
5657
g.namespace_manager.bind(k, URIRef(v))
57-
for prefix in schemaview.namespaces():
58-
g.bind(prefix, URIRef(schemaview.namespaces()[prefix]))
59-
else:
60-
for prefix in schemaview.namespaces():
61-
g.bind(prefix, URIRef(schemaview.namespaces()[prefix]))
58+
59+
for prefix in namespaces:
60+
g.bind(prefix, URIRef(namespaces[prefix]))
6261
# user can pass in base in prefixmap using '_base'. This gets set
6362
# in namespaces as a plain dict assignment - explicitly call the setter
6463
# to set the underlying "@base"
65-
if "_base" in schemaview.namespaces():
66-
schemaview.namespaces()._base = schemaview.namespaces()["_base"]
67-
g.base = schemaview.namespaces()._base
68-
if schemaview.namespaces()._base:
69-
g.base = schemaview.namespaces()._base
64+
if "_base" in namespaces:
65+
namespaces._base = namespaces["_base"]
66+
67+
if namespaces._base:
68+
g.base = namespaces._base
69+
7070
self.inject_triples(element, schemaview, g)
7171
return g
7272

linkml_runtime/utils/namespaces.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,11 @@ def __setitem__(self, key, value):
7878
super().__setitem__(value, target_bnode)
7979
elif is_ncname(key):
8080
v = Namespace(str(value))
81-
if key in self:
82-
if self[key] != v:
83-
logging.getLogger('Namespaces').\
84-
warning(f"{key} namespace is already mapped to {self[key]} - Mapping to {v} ignored")
85-
else:
86-
super().__setitem__(key, v)
81+
if key in self and self[key] != v:
82+
logger = logging.getLogger('linkml_runtime.Namespaces')
83+
logger.warning(f"{key} namespace is already mapped to {self[key]} - Overriding with mapping to {v}")
84+
85+
super().__setitem__(key, v)
8786
else:
8887
raise ValueError(f"Invalid NCName: {key}")
8988

linkml_runtime/utils/schemaview.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,10 +179,10 @@ def __hash__(self) -> int:
179179
def namespaces(self) -> Namespaces:
180180
namespaces = Namespaces()
181181
for s in self.schema_map.values():
182-
for prefix in s.prefixes.values():
183-
namespaces[prefix.prefix_prefix] = prefix.prefix_reference
184182
for cmap in self.schema.default_curi_maps:
185183
namespaces.add_prefixmap(cmap, include_defaults=False)
184+
for prefix in s.prefixes.values():
185+
namespaces[prefix.prefix_prefix] = prefix.prefix_reference
186186
return namespaces
187187

188188
def load_import(self, imp: str, from_schema: SchemaDefinition = None):

0 commit comments

Comments
 (0)