diff --git a/frontend/src/components/unification/Unification/SelectionalPreference.js b/frontend/src/components/unification/Unification/SelectionalPreference.js index 3adb76a20f1fcf48e89d0d580b24657ff227723b..b4bab139d9d44fc6a95d7b755e1dc1a1ba284d7c 100644 --- a/frontend/src/components/unification/Unification/SelectionalPreference.js +++ b/frontend/src/components/unification/Unification/SelectionalPreference.js @@ -319,21 +319,7 @@ export default class SelectionalPreference { if(succ) { show_info('Preferencja zosała zapisana'); } else { - const conflict_hyponym = response.conflict_hyponym; - const conflict_hyperonym = response.conflict_hyperonym; - let typeStr = 'hiponimii'; - if(conflict_hyperonym != null){ - typeStr = 'hieronimii'; - } - let errorStr = conflict_hyponym; - if(conflict_hyperonym != null){ - errorStr = conflict_hyperonym; - } - alert('Wybrana preferencja selekcyjna nie mogła zostać zapisana ponieważ wystąpił konflikt w relacji ' + - typeStr + - ' z istniejącą preferencją selekcyjną: ' + - errorStr) - show_info('Preferencja nie zosała zapisana. Wystąpił konflikt w hierarchii ontologicznej.'); + this.synset_hierarchy_conflict_alert(response); } }, (request, errorType, errorMessage) => { @@ -355,21 +341,7 @@ export default class SelectionalPreference { if(succ) { show_info('Preferencja zosała zapisana'); } else { - const conflict_hyponym = response.conflict_hyponym; - const conflict_hyperonym = response.conflict_hyperonym; - let typeStr = 'hiponimii'; - if (conflict_hyperonym != null) { - typeStr = 'hieronimii'; - } - let errorStr = conflict_hyponym; - if (conflict_hyperonym != null) { - errorStr = conflict_hyperonym; - } - alert('Wybrana preferencja selekcyjna nie mogła zostać zapisana ponieważ wystąpił konflikt w relacji ' + - typeStr + - ' z istniejącą preferencją selekcyjną: ' + - errorStr) - show_info('Preferencja nie zosała zapisana. Wystąpił konflikt w hierarchii ontologicznej.'); + this.synset_hierarchy_conflict_alert(response); } }, (request, errorType, errorMessage) => { @@ -377,6 +349,30 @@ export default class SelectionalPreference { }) } + synset_hierarchy_conflict_alert(response) { + const conflict_exists = response.conflict_exists; + if (conflict_exists != null) { + alert('Wybrana preferencja selekcyjna nie mogła zostać zapisana ponieważ widnieje już na liście preferencji selekcyjnych: ' + + conflict_exists) + } else { + const conflict_hyponym = response.conflict_hyponym; + const conflict_hyperonym = response.conflict_hyperonym; + let typeStr = 'hiponimii'; + if (conflict_hyperonym != null) { + typeStr = 'hieronimii'; + } + let errorStr = conflict_hyponym; + if (conflict_hyperonym != null) { + errorStr = conflict_hyperonym; + } + alert('Wybrana preferencja selekcyjna nie mogła zostać zapisana ponieważ wystąpił konflikt w relacji ' + + typeStr + + ' z istniejącą preferencją selekcyjną: ' + + errorStr) + show_info('Preferencja nie zosała zapisana. Wystąpił konflikt w hierarchii ontologicznej.'); + } + } + saveRelationalSelectionalPreference(frame_id, complement_id_from, complement_id_to, relation_id) { const data = { 'frame_id': frame_id, diff --git a/unifier/apps.py b/unifier/apps.py index e18d14146a3ed70db775c1590b0879947d9dfc88..5bbe9c03b9b9f43805a63fe1923467df9bfa3350 100644 --- a/unifier/apps.py +++ b/unifier/apps.py @@ -19,7 +19,7 @@ class UnifierConfig(AppConfig): name = 'unifier' def ready(self): - print("XXXXXXXXXXXXX") + print("Loading the slowosiec ontology hierarchy...") from meanings.models import Synset from django.db.models import Prefetch i = 0 @@ -31,7 +31,8 @@ class UnifierConfig(AppConfig): ) ) for synset in objs.all(): - print("i: "+str(i)) + if i % 10000 == 0: + print("i: "+str(i)) i = i + 1 curr = None if synset.id not in synset_hierarchy_dict: @@ -51,3 +52,5 @@ class UnifierConfig(AppConfig): curr.hyperonyms.append(curr_hypernym) curr_hypernym.hyponyms.append(curr) + print("Slowosiec ontology hierarchy loaded.") + diff --git a/unifier/views.py b/unifier/views.py index 959b0e26605613a02e4fedb450b8ec29129a0b8f..a74ab311f3654088f17f1b5a141a20d79c6c0ccf 100644 --- a/unifier/views.py +++ b/unifier/views.py @@ -78,25 +78,28 @@ def check_sysnet_hierarchy_constraints(synset_preference_ids, unified_frame_argu synset_ids_list.extend(predefined_synset_ids) for synset_preference_id in synset_preference_ids: - conflict_hyponym, conflict_hyperonym = synset_hierarchy_constraint_check(int(synset_preference_id), + conflict_hyponym, conflict_hyperonym, conflict_exists = synset_hierarchy_constraint_check(int(synset_preference_id), set(synset_ids_list)) - if conflict_hyponym is not None or conflict_hyperonym is not None: - conflict_hyponym_lu = LexicalUnit.objects.filter( - synset_id=conflict_hyponym) if conflict_hyponym is not None else None - conflict_hyperonym_lu = LexicalUnit.objects.filter( - synset_id=conflict_hyperonym) if conflict_hyperonym is not None else None + if conflict_hyponym is not None or conflict_hyperonym is not None or conflict_exists is not None: - conflict_hyponym_lu_str = ','.join( - map(lambda s: str(s), conflict_hyponym_lu.all())) if conflict_hyponym is not None else None - conflict_hyperonym_lu_str = ','.join( - map(lambda s: str(s), conflict_hyperonym_lu.all())) if conflict_hyperonym is not None else None + conflict_exists_lu_str = conflict_lu_to_str(conflict_exists) + conflict_hyponym_lu_str = conflict_lu_to_str(conflict_hyponym) + conflict_hyperonym_lu_str = conflict_lu_to_str(conflict_hyperonym) return {"succ": False, "conflict_hyponym": conflict_hyponym_lu_str, - "conflict_hyperonym": conflict_hyperonym_lu_str} + "conflict_hyperonym": conflict_hyperonym_lu_str, + "conflict_exists": conflict_exists_lu_str} return {"succ": True} +def conflict_lu_to_str(conflict_lu): + conflict_hyponym_lu = LexicalUnit.objects.filter( + synset_id=conflict_lu) if conflict_lu is not None else None + return ','.join( + map(lambda s: str(s), conflict_hyponym_lu.all())) if conflict_lu is not None else None + + @ajax_required @transaction.atomic def save_predefined_preference(request): @@ -945,6 +948,10 @@ def attach_lu_to_unified_frame(request): def synset_hierarchy_constraint_check(lu_id, pref_lu_ids): + conflict_exists = None + if lu_id in pref_lu_ids: + conflict_exists = lu_id + conflict_hyponym = None if lu_id in synset_hierarchy_dict: synset_hierarchy = synset_hierarchy_dict[lu_id] @@ -955,7 +962,7 @@ def synset_hierarchy_constraint_check(lu_id, pref_lu_ids): synset_hierarchy = synset_hierarchy_dict[lu_id] conflict_hyperonym = hierarchy_constraint_check_hyperonyms(synset_hierarchy, lu_id, pref_lu_ids) - return conflict_hyponym, conflict_hyperonym + return conflict_hyponym, conflict_hyperonym, conflict_exists def hierarchy_constraint_check_hyperonyms(synset_hierarchy: SynsetHierarchy, lu_id: int, pref_lu_ids: []):