 Let's start my session. Who am I? My name, my name is Koji Anoda. I'm Japanese. I love Neo4j Graph Database and I got a GraphCommunity MVP 2020 and I am a Neo4j speaker and ninja. I'm the developer and I love LibreOffice. I am a Japanese LibreOffice team and I'm so interested in the GraphQL language. It is used in GrandStack. GrandStack is a framework and GraphQL and React and Apple Server and Neo4j Database. It's cool. Okay. This is a gender. I will talk six topics. What is GraphQL? Or what is language used for? And which components? Writer, Calc, Impress, and third environment. Do we need a server for how to implement? Which language do I use for a basic or Python Java or something like that? And five, a GraphQL query to Calc. This is main topic. Select item and limit row. Last one is what to do next. I have main problem and try to next. Okay, six topics. I start my first topic. What is GraphQL? What is GraphQL? Are you familiar with GraphQL? GraphQL is query language for APIs, like rest. Facebook create the language. Why Facebook built GraphQL about 10 years ago, Facebook had some problem with API. Mismatch between front-end and back-end API interface or end poor performance and frequently crashed. So they want to fix the problem. So Facebook created the new query language, GraphQL. Query language for APIs. What kind of query language API? I saw last GraphQL or something like that. And GraphQL is runtime for finding those queries. Okay, let's go to next. Query language for APIs. These are the three best known query languages. If you are older, you probably know SOP. I used SOP many, many years ago. Okay, three languages for API and many best known. One is SOP, SOP 1.2. Latest one is 27 maybe, I think. So old one. So second is rest, most popular for APIs. And open API is most widely accepted format. And newest one is GraphQL. Start at 2018, June. Now, really new. And okay, let's talk a little about the foundation. Our ULA is here, GraphQL.org foundation history. GraphQL was created in 2012, open sourced by Facebook in 2015. In 2019, Facebook and others created a GraphQL foundation hosted by the Linux foundation. This is a summer members, Apollo, AWS, Gatsby, I like Gatsby. IBM, I love Neo4j and PayPal, Twitter. Next, I'll start. Okay, which component? Why I choose a level of this? I use Cal Care Day. Last year, I used it correct data for COVID-19 in Japan. This year, I'm using for the data conversion during software development. And I love Unicode with that bomb by doing the map. You know, what component do I want to use it with GraphQL? I thought it would be good to use GraphQL for COVID-19 data exchange. So I choose a card. LiberalFish include several apps, six apps, writer, card, key press, draw, math, base. Cog is based for GraphQL. And base is good, I think. This time, I choose Cog as my target. Next time, maybe base or update some Cog. Some Cog, environment, the topic. This is easy, environment is here. My environment, LiberalFish 7.2.1 and GraphQL command. And the server, I use Opera Server, version three. Opera Server includes a client and the server function. But this time, I use just a server. I didn't use the client. And for the query to Cog, I simply put the command into Opera Server. This is the environment. I use as data, okay. First topic, how to implement? This is most important topic. I thought it would be easy, but it was really difficult. First, I explain the rest versus GraphQL function. Rest, you know the rest uses post and get and patch and delete. There are many end points. End point mean you are there. When get the movie data, the URL will be a slash movie slash ID or something like this. When you get the person data, the URL will be a slash person slash ID. Okay, you understand, okay. Next, GraphQL, GraphQL is it's only post. Just post, not get. Just single end point slash GraphQL. Really easy. So I'm looking for HTTP post function for GraphQL. Where is the post function? In Calc, our web service function is not post function. It's just get function. About Excel, Windows has post function with Microsoft XML 6.0. But Mac doesn't know. I love Mac. No, so I don't fund the post function. Next, what is a level of extension? A three kind of extension. One is level of extension. It works with many languages, not just basic. Basic, Python, JavaScript, Java and Beanshell. And for Uno, C++ and Python and Java languages, great. And second, special calc extensions. It's mean add in that add the spreadsheet function to calc. Good. And third, pack extensions, templates, gallery and old text. So, level of extension. First one is good for, good for develop, GraphQL. Okay, let's start. I'm not quite sure how to connect. I don't know. Do I need to know? I don't know. Which language to choose? I don't know. Basic, Python, Java. Okay, anyway. I created Hello World. I'm a new view of extension. This Hello World uses a basic language. This site is here. Development, create a Hello World level of extension. It's good example. Okay. I need two queries. One is client for client. A client create to a GraphQL server from calc to some other database. And server create from GraphQL server. Okay. And now I need, I don't know, connector and driver. I don't know that time. Anyway, I choose Python language. It's easy to write and understand and many library. Python has many library. Oh, great. I chose Python. Okay. First time I tried to calc as GraphQL client. Calc agrees Neo4j using GraphQL. I try to calc some, ask some library and the Apple server and to Neo4j. Okay. I found a good Python library. In this time, I use GQL Python library. GQL, GQL architecture is inspired with React, Relay and Apollo client. This is a GitHub for your legacy is here. GraphQL dash Python slash GQL. This library uses a GraphQL Python, GraphQL core. I think it's good implement a library. This is a GQL document. GQL 3, version 3 is pre-release version. Document is here. Good document. And install GQL library is really easy. PIP command, PIP install, pre... Version 3 is pre-release version, pre-GQL, just yet. I will show you a part of code. It's really, it's easy to write. This is a query from calc to Neo4j database. Calc, the query is A2, two rows and just query users. I can... Property is user ID and name and number of reviews, query response is here, data users, user ID, name, number of reviews. It's good, it's work. A second, a calc database. This is really important. Apple server or some level of this API to calc. I think GraphQL queries calc using Apple server. I use a level of API. In this time, I use UNO component. UNO is here. First time I download this SDK and I watch the developers guide. I don't know what I want to developers version, current version, website. This is all about this week. Okay, GraphQL query to calc, to calc, calc to GraphQL. Now, okay, I create the movie ODS, calc file, some movie data, Neo4j movie sample to maybe CSV to calc. I try to three queries. One is old movies with old properties. Second is old movies with just title and released. A third, just three rows movies, three simple queries. This is a movie ODS, first column is title, second, released, third, tab line. File name is movie ODS, sheet name is movie, column name is title, released, tab line. Loads are just 39, 38 data with header, one header. I try access old movies with old color. You will see, well, and okay, left is query, right is answer. Okay, movies, just three columns. I wrote three columns, all three columns. So calc return the three columns and to create data or movies or column, okay? Second, old movies with title and release. Oh, this is easy. A query data is just titles and released. GraphQL understand two column, you need two columns, just two columns. The answer is two column, each two column and movie data. One is G matrix, released 1999. Second is the matrix, reloaded, 2003. Okay, so query is so easy to write. Third, three rows movies. Query is just like that. Movies, options, limits three and title, released. So return from calc, just three rows. Oh, I did it. What to do next, last topic? I have many problems. One is calc, HTTP post was not in the function. I want to disperse function into next level of this. I want. And second, level of API, really hard to understand who know and SDK, I want to disperse function into next level of API. And I don't know well about what the language to choose, what the language is best. I don't know. Chava C++. Third, GraphQL is not much use case at Liverpool or something. I have a lot of problem. Next try, what to do next? This time is first just simple query, just one seed query. Okay. And I want to add the next, these functions. One is join, get from multiple seeds. And I want to add one seed query. I want to add one seed query. I want to add one seed query. Get from multiple seeds. Like that, write GraphQL coding. This is two seed, movies seed and person seed. Join and back to the answer. And mutate, mutate mean update and delete. I want to add additional, these additional features. And I open my GitHub to the public and to the developer extension.