├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE.md ├── README.md ├── docs ├── motivations.md └── resources.md ├── index.html └── w3c.json /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | All documentation, code and communication under this repository are covered by the [W3C Code of Ethics and Professional Conduct](https://www.w3.org/Consortium/cepc/). 4 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Bridging GraphQL and RDF Community Group 2 | 3 | This repository is being used for work in the W3C Bridging GraphQL and RDF Community Group, governed by the [W3C Community License 4 | Agreement (CLA)](http://www.w3.org/community/about/agreements/cla/). To make substantive contributions, 5 | you must join the CG. 6 | 7 | If you are not the sole contributor to a contribution (pull request), please identify all 8 | contributors in the pull request comment. 9 | 10 | To add a contributor (other than yourself, that's automatic), mark them one per line as follows: 11 | 12 | ``` 13 | +@github_username 14 | ``` 15 | 16 | If you added a contributor by mistake, you can remove them in a comment with: 17 | 18 | ``` 19 | -@github_username 20 | ``` 21 | 22 | If you are making a pull request on behalf of someone else but you had no part in designing the 23 | feature, you can remove yourself with the above syntax. 24 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | All Reports in this Repository are licensed by Contributors 2 | under the 3 | [W3C Software and Document License](http://www.w3.org/Consortium/Legal/2015/copyright-software-and-document). 4 | 5 | Contributions to Specifications are made under the 6 | [W3C CLA](https://www.w3.org/community/about/agreements/cla/). 7 | 8 | Contributions to Test Suites are made under the 9 | [W3C 3-clause BSD License](https://www.w3.org/Consortium/Legal/2008/03-bsd-license.html) 10 | 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Bridging GraphQL and RDF Community Group 2 | 3 | Welcome to the [Bridging GraphQL and RDF Community Group](https://www.w3.org/community/graphql-rdf/) GitHub repository. 4 | 5 | [Mailing list archive](https://lists.w3.org/Archives/Public/public-graphql-rdf/). 6 | -------------------------------------------------------------------------------- /docs/motivations.md: -------------------------------------------------------------------------------- 1 | This document lists the group's motivations and goals. 2 | This data has been gathered based on the [call for introductions in the group's mailinglist](https://lists.w3.org/Archives/Public/public-graphql-rdf/2020Feb/0000.html). 3 | 4 | 5 | **Motivations:** 6 | 7 | * Developers don't want to learn the classic Semantic Web technology stack, or have difficulties with it. 8 | 9 | **Concrete goals:** 10 | 11 | * GraphQL-over-RDF 12 | * List, document and compare the various GraphQL-over-RDF approaches + understanding how different use cases have led to the design of these different approaches 13 | * Define relationship to JSON-LD, SHACL, ShEX, OWL, ... 14 | * Formal foundation of GraphQL-over-RDF 15 | * Defining best practices for using GraphQL-over-RDF (possibly even define one or more standard approaches?) 16 | * Mappings between GraphQL (schemas) and other schema languages (SHACL, ShEx): https://github.com/w3c/EasierRDF/issues/64 17 | * RDF validation using GraphQL schemas 18 | 19 | **Meta-goals:** 20 | 21 | * Making Semantic Web technology stack accessible to developers to know GraphQL 22 | * Lowering difficulties for writing queries by using GraphQL instead of SPARQL. 23 | * Figuring out if "GraphQL can bring Semantic Web to the Web" 24 | * GraphQL-over-RDF as a solution to federated data access 25 | * GraphQL-over-RDF as a replacement/extension to Ontology Based Data Access 26 | * Provide idiomatic ways to fix GraphQL shortcomings: 27 | 1. To make a subclass, you need to make two things: a type and an interface 28 | 2. No multiple types 29 | 3. Covariance of object types (data) but not input types (operations) 30 | 4. If a mandatory field is missing, the whole object is supposed to bomb out. Then recursively upward... 31 | 5. Prop characteristics can vary per object, which complicates jsonld output. 32 | 6. If a filter var is unset, that can easily break the query. 33 | 7. If object id's (IRIs) are missing in a query, one cannot output them, which is bad for jsonld. -------------------------------------------------------------------------------- /docs/resources.md: -------------------------------------------------------------------------------- 1 | This page contains links to relevant resources. 2 | 3 | Feel free submit links to other resources related to GraphQL-RDF by opening a Pull Request. 4 | 5 | # Software Documentation 6 | 7 | * GraphQL-LD: https://github.com/rubensworks/graphql-ld.js 8 | * GraphQL server performance benchmark: https://github.com/LiUGraphQL/LinGBM/wiki 9 | * HyperGraphQL: https://www.hypergraphql.org/ 10 | * Staple API: https://staple-api.org/ 11 | * GraphQL in Stardog: https://www.stardog.com/docs/#_graphql_queries 12 | * GraphQL in TopBraid: https://www.topquadrant.com/technology/graphql/ 13 | * Ontotext GraphQL: 14 | * Platform documentation: http://platform.ontotext.com/ 15 | * Semantic Object Modeling Language: http://platform.ontotext.com/soml/index.html 16 | * Blog1 (Dec 2019): https://www.ontotext.com/blog/the-rise-of-the-knowledge-graph/ 17 | * Blog2 (Apr 2020): https://www.ontotext.com/blog/return-of-the-jedi-rbac-mutation-federation-and-owl2graphql/ 18 | * DATAtourisme: https://datatourisme.frama.io/api/#/ 19 | * Morph-GraphQL: https://github.com/oeg-upm/morph-graphql 20 | * GraphQL in TerminusDB: https://terminusdb.com/docs/guides/reference-guides/graphql_query 21 | 22 | # Papers 23 | 24 | * GraphQL-LD: https://comunica.github.io/Article-ISWC2018-Demo-GraphQlLD/ 25 | * GraphQL RDF querying approaches: https://rubensworks.github.io/article-w3cdataws2019-graphql/ 26 | * Initial analysis of GraphQL language: http://olafhartig.de/files/HartigPerezAMW2017_GraphQL_Preprint.pdf 27 | * Formal analysis of GraphQL language: http://olafhartig.de/files/HartigPerez_WWW2018_Preprint.pdf 28 | * Schemas for Property Graphs using GraphQL schemas: http://olafhartig.de/files/HartigHidders_GRADES2019_Preprint.pdf 29 | * Empirical analysis of GraphQL API schemas: http://olafhartig.de/files/KimEtAl_AMW2019.pdf 30 | * Morph-GraphQL: https://dchaves.oeg-upm.net/resources/papers/morphgraphql-seke-2019.pdf 31 | * [Algebraic Property Graphs](https://arxiv.org/pdf/1909.04881.pdf) (Uber Technologies, Conexus AI) (some Category theory) 32 | * [Querying Heterogeneous Linked Building Data with Context-expanded GraphQL Queries](http://ceur-ws.org/Vol-2389/02paper.pdf) (Linked Data in Architecture and Construction Workshop, LDAC 2019) 33 | 34 | # Slides 35 | 36 | * GraphQL RDF querying approaches: https://www.rubensworks.net/raw/slides/2019/w3c-data-ws-graphql-rdf/ 37 | 38 | # Blog posts 39 | 40 | * Querying LD with GraphQL: https://medium.com/@sklarman/querying-linked-data-with-graphql-959e28aa8013 41 | * Hiding the complexity of RDF Data Cubes behind GraphQL & JSON-LD: https://medium.com/@sklarman/linked-open-statistical-data-served-simply-ead245bf715 42 | * What Semantic Web can do for GraphQL: https://medium.com/@sklarman/what-the-semantic-web-can-do-for-graphql-8cfb39971714 43 | * GraphQL for universal data access: https://www.forbes.com/sites/cognitiveworld/2019/10/28/graphql-and-the-rise-of-universal-data-access/ 44 | * How we implemented GraphQL in 14 days: https://terminusdb.com/blog/implement-graphql-in-fourteen-days/ 45 | * GraphQL RDF bridge using Star Wars dataset in TerminusDB: https://terminusdb.com/blog/graphql-rdf-bridge-using-star-wars-dataset/ 46 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |21 | This specification does neat stuff. 22 |
23 |26 | This is an unofficial proposal. 27 |
28 |33 | See ReSpec's user guide 34 | for how toget started! 35 |
36 |