fix: JSON-LD context construction from a dict (#2306) · RDFLib/rdflib@832e693 (original) (raw)

File tree

2 files changed

lines changed

2 files changed

lines changed

Original file line number Diff line number Diff line change
@@ -421,13 +421,13 @@ def _prep_sources(
421 421 ):
422 422 for source in inputs:
423 423 source_url = in_source_url
424 +new_base = base
424 425 if isinstance(source, str):
425 426 source_url = source
426 427 source_doc_base = base or self.doc_base
427 428 new_ctx = self._fetch_context(
428 429 source, source_doc_base, referenced_contexts
429 430 )
430 -new_base = base
431 431 if new_ctx is None:
432 432 continue
433 433 else:
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
3 3 """
4 4
5 5 from functools import wraps
6 +from pathlib import Path
6 7 from typing import Any, Dict
7 8
8 9 from rdflib.plugins.shared.jsonld import context, errors
@@ -213,3 +214,23 @@ def test_invalid_remote_context():
213 214 ctx_url = "http://example.org/recursive.jsonld"
214 215 SOURCES[ctx_url] = {"key": "value"}
215 216 ctx = Context(ctx_url)
217 +
218 +
219 +def test_file_source(tmp_path: Path) -> None:
220 +"""
221 + A file URI source to `Context` gets processed correctly.
222 + """
223 +file = tmp_path / "context.jsonld"
224 +file.write_text(r"""{ "@context": { "ex": "http://example.com/" } }""")
225 +ctx = Context(source=file.as_uri())
226 +assert "http://example.com/" == ctx.terms["ex"].id
227 +
228 +
229 +def test_dict_source(tmp_path: Path) -> None:
230 +"""
231 + A dictionary source to `Context` gets processed correctly.
232 + """
233 +file = tmp_path / "context.jsonld"
234 +file.write_text(r"""{ "@context": { "ex": "http://example.com/" } }""")
235 +ctx = Context(source=[{"@context": file.as_uri()}])
236 +assert "http://example.com/" == ctx.terms["ex"].id