|
|
|
@ -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
|
|
|
|
|