diff --git a/linkml_runtime/dumpers/rdflib_dumper.py b/linkml_runtime/dumpers/rdflib_dumper.py index 1f0ce932..758edaff 100644 --- a/linkml_runtime/dumpers/rdflib_dumper.py +++ b/linkml_runtime/dumpers/rdflib_dumper.py @@ -2,6 +2,7 @@ import urllib from typing import Any, Optional, Union +import rdflib from curies import Converter from pydantic import BaseModel from rdflib import XSD, Graph, URIRef diff --git a/linkml_runtime/utils/schemaview.py b/linkml_runtime/utils/schemaview.py index f3ee0036..f1fd6f0f 100644 --- a/linkml_runtime/utils/schemaview.py +++ b/linkml_runtime/utils/schemaview.py @@ -246,9 +246,6 @@ class SchemaView: This class utilizes caching for efficient lookup operations. - TODO: decide how to use this in conjunction with the existing schemaloader, which injects - into the schema rather than providing dynamic methods. - See: - https://github.com/linkml/linkml/issues/59 - https://github.com/linkml/linkml/discussions/144 diff --git a/tests/test_issues/input/linkml_issue_1041.yaml b/tests/test_issues/input/linkml_issue_1041.yaml new file mode 100644 index 00000000..316fcfdb --- /dev/null +++ b/tests/test_issues/input/linkml_issue_1041.yaml @@ -0,0 +1,16 @@ +id: https://w3id.org/linkml/examples/personinfo +name: personinfo +prefixes: + linkml: https://w3id.org/linkml/ +imports: + - linkml:types +default_range: string + +classes: + Person: + attributes: + id: ## note: default range is string, NOT an identifier + full_name: + aliases: + phone: + age: \ No newline at end of file diff --git a/tests/test_issues/test_linkml_issue_1041.py b/tests/test_issues/test_linkml_issue_1041.py new file mode 100644 index 00000000..dafc9298 --- /dev/null +++ b/tests/test_issues/test_linkml_issue_1041.py @@ -0,0 +1,31 @@ +from unittest import TestCase + +from rdflib import RDF, URIRef + +from linkml_runtime.dumpers import rdflib_dumper +from linkml_runtime.utils.schemaview import SchemaView + +from tests.test_issues.environment import env +from tests.test_issues.models.linkml_issue_1041 import Person + + +class Issue1041TestCase(TestCase): + """ + https://github.com/linkml/linkml/issues/1041 + """ + + env = env + + def test_issue_default_prefix(self): + view = SchemaView(env.input_path("linkml_issue_1041.yaml")) + uri = view.get_uri(view.get_class("Person"), expand=True) + person_uri = "https://w3id.org/linkml/examples/personinfo/Person" + self.assertEqual(uri, person_uri) + p = Person(id="ORCID:1234", full_name="Clark Kent", age="32", phone="555-555-5555") + g = rdflib_dumper.as_rdf_graph(p, view) + bnodes = g.subjects(RDF.type, URIRef(person_uri)) + self.assertEqual(1, len(list(bnodes))) + + +if __name__ == "__main__": + unittest.main()