I have to apologize. I wasn't fully on to your theme. I think I get it now, but to clarify...
Were you suggesting GraphQL in MV for accessing external,
non-MV resources? This is why I mentioned products rather than built-in
solutions.
Or are you suggesting that MV would do well to adopt GraphQL for its own purposes, so that anyone who knows the QL can thus interact with MV using a familiar tool?
The first option is much easier than the second:
With PREMEUS for example, I'm accepting a SQL query at TCL, or building one based on simplified syntax, and passing it to the RDBMS, returning the results, parsing for data and errors, and then rendering or saving the results. Included in there is the concept that one can reference a local ORDERS file to query a remote Orders table, the RDBMS database info is stored "in state" so that a SQL query to the remote environment has the appearance of an AQL query in a local account, and there are a number of other conveniences. But the fundamental premise there is that we're not using SQL to access the local MV, but facilitating CRUD on a remote environment. Another example there would be a command like UPDATE ORDERS '123' which takes schema-defined fields from the local ORDERS file, and sends them to the RDBMS, first with an Update query, but if the record doesn't exist it ends an Insert query. It then also sends ORDER_DETAIL records, for example, to the corresponding OrdersDetail table, and breaks up MV data in the local ORDERS header file into associated tables like OrdersShipToInfo or OrdersComments. All transactions are bracketed in case something goes wrong.
Please forgive what's a blatent AD there but my intent is sincerely to clarify deeper integration between environments than merely sending a verbatim SQL command to a remote server and returning the verbatim results. I created PREMEUS because I think we need it.
Now, can we do the same for GraphQL? Yes and no. I would not write a GraphQL engine in BASIC any more than I would write a SQL engine. It would be a waste of time because it's already done outside the MV box. Such an effort would never be Done because it would always be in a catch-up mode with core GraphQL syntax. However, I/we can write a wrapper that accepts GraphQL queries, from the command line or constructed in BASIC, pass them to a remote interpreter which executes them against a remote NoSQLDB, and return and parse the JSON results. I wouldn't even parse the JSON in MV for the same reason - other great tools exist outside the box for the purpose, which can return a flat representation of data which is much more easily processed in BASIC where we are limited to AM/VM/SM trees.
[ Pick NoSQL Exchanges Made Easy Using GraphQL = PNSEMEUGQL = really bad product name :) ]
If we try to get a MVDBMS provider to do that work, they will come up with their own paradigms, every vendor who does this will do it differently, and we in this industry will once again be stuck with application code that's different across platforms. Competition and differentiation are good. But as we see with iOS vs Android, IE vs Firefox vs Chrome, and so many other examples over the last 30 years, when companies brand what should be standard paradigms, a lot of resentment results, there is a huge expense at the developer tier, and we eventually see cross-platform options arise to lower costs and expand the audience for offerings. My preference is to start with third-party, cross-platform solutions, and get DBMS companies to focus on their DBMS, rather than asking them to do what can be done outside the box.
That leads to GraphQL used against MV:
At the most fundamental level, GraphQL essentially uses a JSON string of arguments as a query to return a JSON string of results. The datastore on which it operates is largely irrelevant. We could use a couple approaches to access MV data with GraphQL. One would be to process a query outside of the box, pass tokens into MV with a more digestable syntax, and return JSON. Another approach would be to parse and process the entire JSON query in MV itself. Either of those approaches can be tackled in BASIC where we're already intimate with string manipulation. We don't need the MVDBMS providers to do this, and as above I would argue that we don't want them to do it either. As with SQL, I would suggest that we would not want to write a full GraphQL engine inside MV, simply because that already exists outside the box.
A problem with this is that GraphQL is much more than just a query language, which is why it's gaining popularity. It's more related to Stored Procedures than simple queries, more like a full programming language. This is why I suggest tokenizing data requests rather than trying to process full queries. I see MV in this respect, and most, as a database, for input, storage, and output of data. If we just do that then we don't need to worry about the full capabilities of new languages and tools, we just need to hook into the request and response components of those language. In other words, where GraphQL requires data, let's give it data, but for all other things that it does, let an existing GraphQL engine process it.
If we follow these practices of getting MV to be an excellent OLTP platform, readily accepting atomic requests and returning raw data, then we will be able to handle every new challenge, whether for webservices, query languages, OS integration, or anything else that comes up. If we try to build everything into MV, we're always going to be chasing the curve, getting it wrong, getting frustrated, incurring overhead costs of time and money.
Or in summary, I think the future of NF2 with MV is the exact same as the future of any interface with MV. What's on the outside will always be irrelevant if we focus on making this one component as versatile as possible.
Um, so is any of that relevant to your OP? LOL
T