Esempio n. 1
0
def get_entity_formatted(
        entity: Entity,
        parser: dict[str, Any]) -> Union[list[dict[str, Any]], dict[str, Any]]:
    if parser['format'] == 'geojson':
        return get_geojson([entity])
    return get_entity(entity, get_all_links(entity.id),
                      get_all_links_inverse(entity.id), parser)
Esempio n. 2
0
def get_subunits_from_id(entity: Entity,
                         parser: dict[str, Any]) -> list[dict[str, Any]]:
    root_id = entity.id
    entities = get_all_subunits_recursive(entity, [])
    ext_reference_links = get_type_links_inverse(entities)
    entities_dict: dict[int, Any] = {}
    for entity in entities:
        entities_dict[entity.id] = {
            'entity': entity,
            'links': [],
            'links_inverse': [],
            'ext_reference_links': ext_reference_links
        }
    for link_ in get_all_links(list(entities_dict.keys())):
        entities_dict[link_.domain.id]['links'].append(link_)
    for link_ in get_all_links_inverse(list(entities_dict.keys())):
        entities_dict[link_.range.id]['links_inverse'].append(link_)
    latest_modified = max(entity.modified for entity in entities
                          if entity.modified)
    result = []
    for item in entities_dict.values():
        result.append(
            get_subunit(item['entity'], item['links'], item['links_inverse'],
                        item['ext_reference_links'], root_id, latest_modified,
                        parser))
    return result
Esempio n. 3
0
def get_type_links_inverse(entities: list[Entity]) -> list[Link]:
    types = remove_duplicate_entities(
        [type_ for entity in entities for type_ in entity.types])
    links = get_all_links_inverse([type_.id for type_ in types], 'P67')
    return [
        link_ for link_ in links
        if link_.domain.class_.name == 'reference_system'
    ]
Esempio n. 4
0
def search_for_value(values: Tuple[int, float],
                     parameter: dict[str, Any]) -> list[int]:
    links = get_all_links_inverse(values[0])
    ids = []
    for link_ in links:
        if link_.description and search_entity(
                entity_values=[float(link_.description)]
                if parameter['operator'] in ['equal', 'notEqual'] else float(
                    link_.description),
                operator_=parameter['operator'],
                search_values=[values[1]],
                logical_operator=parameter['logicalOperator'],
                is_comparable=True):
            ids.append(link_.domain.id)
    return ids
Esempio n. 5
0
def get_csv_links(entity: Entity) -> dict[str, Any]:
    links: dict[str, Any] = defaultdict(list)
    for link in get_all_links(entity.id):
        key = f"{link.property.i18n['en'].replace(' ', '_')}_" \
              f"{link.range.class_.name}"
        links[key].append(link.range.name)
    for link in get_all_links_inverse(entity.id):
        key = f"{link.property.i18n['en'].replace(' ', '_')}_" \
              f"{link.range.class_.name}"
        if link.property.i18n_inverse['en']:
            key = link.property.i18n_inverse['en'].replace(' ', '_')
            key += '_' + link.domain.class_.name
        links[key].append(link.domain.name)
    links.pop('has_type_type', None)
    return links
Esempio n. 6
0
def get_entity_formatted(entity: Entity, parser: dict[str,
                                                      Any]) -> dict[str, Any]:
    if parser['format'] == 'geojson':
        return get_geojson([entity])
    return get_linked_places_entity(entity, get_all_links(entity.id),
                                    get_all_links_inverse(entity.id), parser)