Based on the work done in the WDQS classification, the top functionality that should be moved out is as follows -
- Bulk GET (getting data of multiple items in a single request)
- Inverse look up, i.e. finding items (subjects) by statement property (predicate) and statement value (object) (for the sake of this ticket, take faceted search as a whole)
- Labels of linked entities
In order to make a decision on whether to build these in a GraphQL endpoint vs as additional endpoints in the Wikibase REST API, please draft a document listing the advantages and disadvantages of each.
Some questions that we should look into:
- For the user, would using one GraphQL endpoint with the different functionalities be better developer experience or multiple REST API endpoints?
- How feasible and maintainable is one over another? Would one be more performant? How would fit within the exisiting infrastructure?
- How much work would it be to bring in a new technology (GraphQL) [Ideally we'll check if this was also historically tried and why it didn't pan out]
- How much development time would one take over another?
- Would we have an internal preference?
- Are there mitigations for the trade offs of one over another?