diff --git a/rdflib/graph.py b/rdflib/graph.py index 55177b1a7..aed1b964d 100644 --- a/rdflib/graph.py +++ b/rdflib/graph.py @@ -2034,10 +2034,11 @@ def do_de_skolemize2(t: _TripleType) -> _TripleType: elif Genid._is_external_skolem(s): s = Genid(s).de_skolemize() - if RDFLibGenid._is_rdflib_skolem(o): - o = RDFLibGenid(o).de_skolemize() - elif Genid._is_external_skolem(o): - o = Genid(o).de_skolemize() + if isinstance(o, URIRef): + if RDFLibGenid._is_rdflib_skolem(o): + o = RDFLibGenid(o).de_skolemize() + elif Genid._is_external_skolem(o): + o = Genid(o).de_skolemize() return s, p, o diff --git a/test/test_issues/test_issue3126.py b/test/test_issues/test_issue3126.py new file mode 100644 index 000000000..321ff7d3e --- /dev/null +++ b/test/test_issues/test_issue3126.py @@ -0,0 +1,21 @@ +import pytest + +from rdflib import Graph + + +def test_skolem_de_skolem_roundtrip(): + """Test deskolemization should ignore literals. + + Issue: https://github.com/RDFLib/rdflib/issues/3126 + """ + + nt = ( + ' "http://example.com [some remark]" .' + ) + + graph = Graph().parse(data=nt, format="nt").de_skolemize() + + try: + graph.de_skolemize() + except BaseException as ex: + pytest.fail(f"Unexpected error: {ex}")