Tweak matcher (compute connected components in advance). Simple pattern matching with RAMification (incl. Python expressions) seems to work.
This commit is contained in:
parent
bed3529676
commit
4160a8953e
13 changed files with 388 additions and 70 deletions
|
|
@ -81,6 +81,9 @@ class Bottom:
|
|||
result = self.state.read_edge(edge)
|
||||
return result[1] if result != None else result
|
||||
|
||||
def is_edge(self, elem: UUID) -> bool:
|
||||
return self.state.is_edge(elem)
|
||||
|
||||
def read_incoming_edges(self, target: UUID, label=None) -> List[UUID]:
|
||||
"""
|
||||
Reads incoming edges of an element. Optionally, filter them based on their label
|
||||
|
|
|
|||
|
|
@ -59,16 +59,26 @@ class OD:
|
|||
# An attribute-link is indistinguishable from an ordinary link:
|
||||
return self.create_link(attr_link_name, object_name, target_name)
|
||||
|
||||
def create_integer_value(self, value: int):
|
||||
def create_integer_value(self, name: str, value: int):
|
||||
from services.primitives.integer_type import Integer
|
||||
int_node = self.bottom.create_node()
|
||||
integer_t = Integer(int_node, self.bottom.state)
|
||||
integer_t.create(value)
|
||||
name = 'int'+str(value) # name of the ref to the created integer
|
||||
# name = 'int'+str(value) # name of the ref to the created integer
|
||||
# By convention, the type model must have a ModelRef named "Integer"
|
||||
self.create_model_ref(name, "Integer", int_node)
|
||||
return name
|
||||
|
||||
def create_string_value(self, name: str, value: str):
|
||||
from services.primitives.string_type import String
|
||||
string_node = self.bottom.create_node()
|
||||
string_t = String(string_node, self.bottom.state)
|
||||
string_t.create(value)
|
||||
# name = 'str-'+value # name of the ref to the created integer
|
||||
# By convention, the type model must have a ModelRef named "Integer"
|
||||
self.create_model_ref(name, "String", string_node)
|
||||
return name
|
||||
|
||||
# Identical to the same SCD method:
|
||||
def create_model_ref(self, name: str, type_name: str, model: UUID):
|
||||
# create element + morphism links
|
||||
|
|
@ -79,6 +89,7 @@ class OD:
|
|||
|
||||
|
||||
def create_link(self, assoc_name: str, src_obj_name: str, tgt_obj_name: str):
|
||||
print(tgt_obj_name)
|
||||
src_obj_node, = self.bottom.read_outgoing_elements(self.model, src_obj_name)
|
||||
tgt_obj_node, = self.bottom.read_outgoing_elements(self.model, tgt_obj_name)
|
||||
|
||||
|
|
|
|||
|
|
@ -72,6 +72,8 @@ class SCD:
|
|||
if max_c != None:
|
||||
set_cardinality("upper", max_c)
|
||||
|
||||
return class_node
|
||||
|
||||
def create_association(self, name: str, source: str, target: str,
|
||||
src_min_c: int = None, src_max_c: int = None,
|
||||
tgt_min_c: int = None, tgt_max_c: int = None):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue