Skip to content
Eike T. Spielberg edited this page Apr 15, 2021 · 4 revisions

The query executor is designed as a purely RESTful web service. It does not provide any html rendered pages, but rather exposes a number of endpoints delivering and accepting data. The FLASK framework (https://flask.palletsprojects.com/en/1.1.x/) is used to create the endpoints.

The query executor makes use of the application factory pattern (https://flask.palletsprojects.com/en/1.1.x/patterns/appfactories/) with the creation of an flask instance triggered by the create_app() function in the app/ini.py.

the overall collection of endpoints is grouped into several blueprints, each responsible for a certain functional area. The most important ones are:

  • projects (creating and manipulating projects)
  • query (handling of the queries in the internal XML format, transforming into Scopus queries)
  • EIDs (collecting eids for queries, downloads of complete and random lists)
  • collector (collecting the full records for the list of eids)
  • status (endpoints to monitor the status of individual collections/queries)
  • scival (upload of scival data)
  • relevance_measures (calculation of relevance measures with externally provided data)
  • facettes (uploading facettes in order to generate survey data)
  • query_viewer (applying Stylesheet to display queries from XML syntax)
  • survey_analyzer (downloading and analyzing data from SurveyGizmo v4 to v5 update)

In addition several blueprints exist, which are created to achieve thought-of functionalaties and future developments:

  • wheel (started creation of donuts for SDG assignment display)
  • keywords (extraction of keywords from indexed data, not maintained)
  • analysis (automated overlap analysis, very slow, not yet reasonably implemented)
  • identifier (planned abstraction from EIDs)
  • crossref (using crossref fuzzy search tzo obtain EIDs)
  • main (abandoned start of implementing html pages)

each of the blueprints resides in its own module within the app folder. Each contains a XXX_routes.py, defining the individual endpoints.

Clone this wiki locally