fix: JSON-LD context construction from a dict
(#2306) · RDFLib/rdflib@832e693 (original) (raw)
File tree
2 files changed
lines changed
- rdflib/plugins/shared/jsonld
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 |