Skip to content

Commit 8d5c49e

Browse files
committed
feat(schemaview): use inlining processor
Use created module to process object inlining. Signed-off-by: Silvano Cirujano Cuesta <[email protected]>
1 parent 33ea472 commit 8d5c49e

File tree

1 file changed

+4
-21
lines changed

1 file changed

+4
-21
lines changed

linkml_runtime/utils/schemaview.py

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
TypeDefinition,
4141
TypeDefinitionName,
4242
)
43+
from linkml_runtime.processing import inlining
4344
from linkml_runtime.utils.context_utils import map_import, parse_import_map
4445
from linkml_runtime.utils.formatutils import camelcase, is_empty, sfx, underscore
4546
from linkml_runtime.utils.namespaces import Namespaces
@@ -1566,8 +1567,7 @@ def induced_slot(
15661567
v = self.schema.default_range
15671568
if v is not None:
15681569
setattr(induced_slot, metaslot_name, v)
1569-
if slot.inlined_as_list:
1570-
slot.inlined = True
1570+
slot.inlined, slot.inlined_as_list = inlining.process(induced_slot, self.schema_map, logger)
15711571
if slot.identifier or slot.key:
15721572
slot.required = True
15731573
if mangle_name:
@@ -1693,18 +1693,7 @@ def is_inlined(self, slot: SlotDefinition, imports: bool = True) -> bool:
16931693
:param imports:
16941694
:return:
16951695
"""
1696-
range = slot.range
1697-
if range in self.all_classes():
1698-
if slot.inlined or slot.inlined_as_list:
1699-
return True
1700-
1701-
id_slot = self.get_identifier_slot(range, imports=imports)
1702-
if id_slot is None:
1703-
# must be inlined as has no identifier
1704-
return True
1705-
# not explicitly declared inline and has an identifier: assume is ref, not inlined
1706-
return False
1707-
return False
1696+
return inlining.is_inlined(slot, self.schema_map, logger)
17081697

17091698
def slot_applicable_range_elements(self, slot: SlotDefinition) -> list[ClassDefinitionName]:
17101699
"""Retrieve all applicable metamodel elements for a slot range.
@@ -2060,13 +2049,7 @@ def materialize_derived_schema(self) -> SchemaDefinition:
20602049
if metaslot_val is not None:
20612050
setattr(slot, metaslot, metaslot_val)
20622051
slot_range_pk_slot_name = None
2063-
if isinstance(slot_range_element, ClassDefinition):
2064-
slot_range_pk_slot_name = self.get_identifier_slot(slot_range_element.name, use_key=True)
2065-
if not slot_range_pk_slot_name:
2066-
slot.inlined = True
2067-
slot.inlined_as_list = True
2068-
if slot.inlined_as_list:
2069-
slot.inlined = True
2052+
slot.inlined, slot.inlined_as_list = inlining.process(slot, self.schema_map, logger)
20702053
if slot.identifier or slot.key:
20712054
slot.required = True
20722055
cls.attributes[slot.name] = slot

0 commit comments

Comments
 (0)