-
-
Notifications
You must be signed in to change notification settings - Fork 0
projectStructure
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.