Added first implementation of concepts ambiguity resolution + Jenkins file test
This commit is contained in:
@@ -13,7 +13,7 @@ GROUP_PREFIX = 'All_'
|
||||
class SheerkaSetsManager(BaseService):
|
||||
NAME = "SetsManager"
|
||||
CONCEPTS_GROUPS_ENTRY = "SetsManager:Concepts_Groups"
|
||||
CONCEPTS_IN_GROUPS_ENTRY = "SetsManager:Concepts_In_Groups" # cache for get_set_elements()
|
||||
CONCEPTS_IN_GROUPS_ENTRY = "SetsManager:Concepts_In_Groups" # cache for get_set_elements()
|
||||
|
||||
def __init__(self, sheerka):
|
||||
super().__init__(sheerka)
|
||||
@@ -21,12 +21,12 @@ class SheerkaSetsManager(BaseService):
|
||||
self.concepts_in_set = Cache()
|
||||
|
||||
def initialize(self):
|
||||
self.sheerka.bind_service_method(self.set_isa)
|
||||
self.sheerka.bind_service_method(self.get_set_elements)
|
||||
self.sheerka.bind_service_method(self.add_concept_to_set)
|
||||
self.sheerka.bind_service_method(self.isinset)
|
||||
self.sheerka.bind_service_method(self.isa)
|
||||
self.sheerka.bind_service_method(self.isaset)
|
||||
self.sheerka.bind_service_method(self.set_isa, True)
|
||||
self.sheerka.bind_service_method(self.get_set_elements, True) # concepts are evaluated
|
||||
self.sheerka.bind_service_method(self.add_concept_to_set, True)
|
||||
self.sheerka.bind_service_method(self.isinset, False)
|
||||
self.sheerka.bind_service_method(self.isa, False)
|
||||
self.sheerka.bind_service_method(self.isaset, True) # concept is evaluated, need to change the code
|
||||
|
||||
self.sheerka.cache_manager.register_cache(self.CONCEPTS_GROUPS_ENTRY, self.sets)
|
||||
self.sheerka.cache_manager.register_cache(self.CONCEPTS_IN_GROUPS_ENTRY, self.concepts_in_set, persist=False)
|
||||
@@ -49,6 +49,8 @@ class SheerkaSetsManager(BaseService):
|
||||
False,
|
||||
self.sheerka.new(BuiltinConcepts.CONCEPT_ALREADY_IN_SET, body=concept, concept_set=concept_set))
|
||||
|
||||
# KSI 20200709 add the concept, not its 'id' or 'key'
|
||||
# It will allow conditions handling if concept set has its WHERE or PRE set to something
|
||||
concept.add_prop(BuiltinConcepts.ISA, concept_set)
|
||||
|
||||
res = self.sheerka.modify_concept(context, concept)
|
||||
@@ -141,7 +143,7 @@ class SheerkaSetsManager(BaseService):
|
||||
if sub_concept.metadata.where:
|
||||
new_condition = self._validate_where_clause(sub_concept)
|
||||
if not new_condition:
|
||||
return self.sheerka.new(BuiltinConcepts.WHERE_CLAUSE_FAILED, body=sub_concept)
|
||||
return self.sheerka.new(BuiltinConcepts.CONDITION_FAILED, body=sub_concept)
|
||||
|
||||
# This methods sucks, but I don't have enough tools (like proper AST manipulation functions)
|
||||
# to do it properly now. It will be enhanced later
|
||||
@@ -206,7 +208,7 @@ class SheerkaSetsManager(BaseService):
|
||||
if not (isinstance(concept, Concept) and concept.id):
|
||||
return False
|
||||
|
||||
# KSI 29062020
|
||||
# KSI 20200629
|
||||
# To resolve infinite recursion between group concepts and BNF concepts
|
||||
if concept.metadata.definition_type == DEFINITION_TYPE_BNF:
|
||||
return False
|
||||
|
||||
Reference in New Issue
Block a user