diff --git a/src/main.py b/src/main.py index 5132f36..a2f7b01 100644 --- a/src/main.py +++ b/src/main.py @@ -3,14 +3,11 @@ import sys import cv2 as cv import numpy as np -import requests import imageWorking import neuralNetwork import ontologyWorking -url = 'http://kb.athene.tech/api/1.0/ontology/' - def analyze_base(ontology_uid: str, image: np.ndarray, queries: list[str]) -> tuple[2]: ''' @@ -18,8 +15,6 @@ def analyze_base(ontology_uid: str, image: np.ndarray, queries: list[str]) -> tu @param ontology_uid: УИД онтологии. @param image: Изображение. ''' - if not ontologyWorking.is_ontology_exists(ontology_uid, url): - raise Exception(f'Онтология с uid {ontology_uid} не существует') if image is None: raise Exception(f'Изображение не указано') model = neuralNetwork.load_model() @@ -38,19 +33,10 @@ def analyze_base(ontology_uid: str, image: np.ndarray, queries: list[str]) -> tu object_properties += request[0] data_properties += request[1] - # Формирование данных для запроса к сервису работы с онтологиями. - data = { - 'data': - { - 'objectPropertyAssertions': object_properties, - 'dataPropertyAssertions': data_properties - } - } - params = '&'.join([f'names={query}' for query in queries]) - - # Выполнение запроса. - response = requests.post(url + f'{ontology_uid}/query/multi?{params}', json=data).json() - + + # Выполнение запроса к сервису работы с онтологиями + response = ontologyWorking.analyze(ontology_uid, object_properties, data_properties, queries) + return results, response diff --git a/src/ontologyWorking.py b/src/ontologyWorking.py index 11e7f94..196c455 100644 --- a/src/ontologyWorking.py +++ b/src/ontologyWorking.py @@ -2,15 +2,18 @@ import numpy as np import requests -def is_ontology_exists(uid: str, url: str) -> bool: +url = 'http://kb.athene.tech/api/1.0/ontology/' + + +def is_ontology_exists(ontology_uid: str, url: str) -> bool: ''' Проверяет, существует ли онтология в сервисе. - @param uid: УИД онтологии. + @param ontology_uid: УИД онтологии. @param url: Базовый URL сервиса. ''' list_ontologies = requests.get(url).json()['response']['items'] for onto in list_ontologies: - if onto['uid'] == uid: + if onto['uid'] == ontology_uid: return True return False @@ -61,3 +64,30 @@ def get_request_data(entities: dict, objects: np.ndarray, confs: np.ndarray, box data_properties.append({'domain': entity, 'property': 'hasConfidence', 'value': float(conf)}) return object_properties, data_properties + + +def analyze(ontology_uid: str, object_properties: list, data_properties: list, queries: list[str]) -> tuple[2]: + ''' + Базовая функция анализа. + @param ontology_uid: УИД онтологии. + @param object_properties: Объектные свойства. + @param data_properties: Свойства данных. + @param queries: Список запросов для запуска. + ''' + if not is_ontology_exists(ontology_uid, url): + raise Exception(f'Онтология с uid {ontology_uid} не существует') + + # Формирование данных для запроса к сервису работы с онтологиями. + data = { + 'data': + { + 'objectPropertyAssertions': object_properties, + 'dataPropertyAssertions': data_properties + } + } + params = '&'.join([f'names={query}' for query in queries]) + + # Выполнение запроса. + response = requests.post(url + f'{ontology_uid}/query/multi?{params}', json=data).json() + + return response diff --git a/src/webApp.py b/src/webApp.py index 45e47cc..8b62c26 100644 --- a/src/webApp.py +++ b/src/webApp.py @@ -31,7 +31,7 @@ def analyze(): image_source = get_image_buf_as_array(image_source) # Подготовка прочих данных и выполнение запроса. - queries = [ 'QueryGetNotEmpty', 'QueryGetCheck', 'QueryGetEmpty' ] + queries = request.form['queries'].split(',') if request.form['queries'] is not None else [ ] results, response = analyze_base('5cc5570b-6ed9-3b33-9db4-bdb8ecb9f890', image_source, queries) # Подготовка изображения с ответом. diff --git a/static/index.html b/static/index.html index b2f9ab0..ca50dc9 100644 --- a/static/index.html +++ b/static/index.html @@ -5,6 +5,8 @@
@@ -20,12 +22,22 @@ +