From dddaab7d0f3fe6baa7f051720fa96cf96a52116c Mon Sep 17 00:00:00 2001 From: cmungall Date: Tue, 19 Jul 2022 19:04:01 -0700 Subject: [PATCH] Adding domain_of to induced slot. Fixes https://github.com/linkml/linkml/issues/875 --- linkml_runtime/utils/schemaview.py | 3 +++ tests/test_utils/test_schemaview.py | 2 ++ 2 files changed, 5 insertions(+) diff --git a/linkml_runtime/utils/schemaview.py b/linkml_runtime/utils/schemaview.py index 75f24e9d..a86ff54b 100644 --- a/linkml_runtime/utils/schemaview.py +++ b/linkml_runtime/utils/schemaview.py @@ -1106,6 +1106,9 @@ def induced_slot(self, slot_name: SLOT_NAME, class_name: CLASS_NAME = None, impo islot.name = mangled_name if not islot.alias: islot.alias = underscore(slot_name) + for c in self.all_classes().values(): + if islot.name in c.slots or islot.name in c.attributes: + islot.domain_of.append(c.name) return deepcopy(islot) @lru_cache() diff --git a/tests/test_utils/test_schemaview.py b/tests/test_utils/test_schemaview.py index 8be276b3..8b78d556 100644 --- a/tests/test_utils/test_schemaview.py +++ b/tests/test_utils/test_schemaview.py @@ -173,6 +173,8 @@ def test_schemaview(self): assert view.induced_slot('related to', 'FamilialRelationship').range == 'Person' assert view.get_slot('related to').range == 'Thing' assert view.induced_slot('related to', 'Relationship').range == 'Thing' + # https://github.com/linkml/linkml/issues/875 + self.assertCountEqual(['Thing', 'Place'], view.induced_slot('name').domain_of) a = view.get_class('activity') self.assertCountEqual(a.exact_mappings, ['prov:Activity'])