- GrapahQL Server Generation Process
- (i): Ontology-based GraphQL schema generation
- (ii): Generic resolver function implementation based on semantic mappings
- schema_generator/graphql_schema_gen.py takes an ontology as the input and then outputs a GraphQL schema.
- mapping_parser/mapping_parser.py takes a RML mappings file (in turtle format) as the input and then outputs mappings and logical sources into a json file.
- app.py is used to set up the GraphQL server using Ariadne.
- Following packages are needed and successfully installed messages are shown:
pip install ariadne
pip install Flask
pip install requests
pip install pandas
pip install sqlalchemy
pip install sympy
pip install PyMySQL
pip install rdflib
Successfully installed anyio-3.4.0 ariadne-0.14.0 graphql-core-3.1.6 idna-3.3 sniffio-1.2.0 starlette-0.17.1 typing-extensions-4.0.1
Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1
Successfully installed charset-normalizer-2.0.8 requests-2.26.0 urllib3-1.26.7
Successfully installed numpy-1.21.4 pandas-1.3.4 python-dateutil-2.8.2 pytz-2021.3 six-1.16.0
Successfully installed greenlet-1.1.2 sqlalchemy-1.4.27
Successfully installed mpmath-1.2.1 sympy-1.9
Successfully installed PyMySQL-1.0.2
Successfully installed isodate-0.6.0 pyparsing-3.0.6 rdflib-6.0.2
Pre-Step (i): Generate GraphQL schema from an ontology and output (*)-schema.graphql and (*)2graphql.json files in current folder.
python ./schema_generator/graphql_schema_gen.py ./schema_generator/mdo.ttl
Pre-Step (ii): Parse a RML mappings file and output the (*).json file in current folder, which will be an input of the generic resolver function.
python ./mapping_parser/mapping_parser.py ./mapping_parser/semantic_mappings/mdo-mappings-mysql-1K.ttl
Step 1: Set up the GraphQL server.
python app.py ./schema_generator/mdo-schema.graphql ./schema_generator/mdo2graphql.json ./mapping_parser/mdo-mappings-mysql-1K.json
* Serving Flask app "app" (lazy loading)
* Environment: development
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 540-041-748
Then the GraphQL server can be accessed via http://127.0.0.1:5000/graphql as shown below.
You don't have to re-run Pre-Step (i) and/or Pre-Step (ii) if you have not changed your ontology and/or RML mappings.
You can find more details regarding the evaluation of the framework in this folder.
Li H, Hartig O, Armiento R, Lambrix P. Ontology-based GraphQL server generation for data access and data integration. Semantic Web. 2024. DOI: 10.3233/SW-233550