Source code for ontocode.template_input
# Copyright, 2018-2019, Deutsches Zentrum für Luft- und Raumfahrt e.V.
# Licensed under LGPLv3+, see LICENSE for details.
"""
Template inputs aggregate :ref:`queries<queries>` and
:ref:`result processors<result-processors>`. A template input object produces
input for a template :ref:`instantiation<instantiations>` by executing its
:class:`~ontocode.query.Query` and passing it through its chain of
:ref:`result processors<result-processors>`.
"""
import abc
__all__ = ['TemplateInput']
[docs]class TemplateInput(metaclass=abc.ABCMeta):
"""Constitutes a template input consisting of a
:class:`ontocode.query.Query` and corresponding
:ref:`result processors<result-processors>`.
:param ontocode.query.Query query: a query
:param list result_processors: a list of result processors
"""
def __init__(self, query, result_processors):
self._query = query
self._result_processors = result_processors
def generate(self, world):
"""Generate template input from passed ontologies.
:param world: an `owlready2.namespace.World` object
:return: list of dicts or dict of lists depending on type
"""
result = self._query.execute(world)
for result_processor in self._result_processors:
result = result_processor(result, world)
return result