Giter Site home page Giter Site logo

neo4j-graphql / neo4j-graphql Goto Github PK

View Code? Open in Web Editor NEW
450.0 44.0 74.0 3.51 MB

GraphQL bindings for Neo4j, generates and runs Cypher

Home Page: https://grandstack.io/docs/neo4j-graphql-plugin.html

License: Apache License 2.0

Java 16.19% Kotlin 83.81%
graphql graphql-server neo4j graph-database neo4j-plugin neo4j-procedures automatic-api

neo4j-graphql's Introduction

Neo4j-GraphQL Extension

neo4j graphql logo
Note
The plugin is considered end-of-life. It will not be updated for Neo4j 4.0, we recommend to move a middleware based solution using neo4j-graphql-js or neo4j-graphql-java. After a lot of feedback we think separating the GraphQL API from the core database is the better architectural setup.

This is a GraphQL-Endpoint extension for Neo4j. It is part of the GRANDstack

This readme assumes you are somewhat familiar with GraphQL and minimally with Cypher.

Based on your GraphQL schema, it translates GraphQL Queries and Mutations into Cypher statements and executes them on Neo4j.

It offers both an HTTP API, as well as, Neo4j Cypher Procedures to execute and manage your GraphQL API.

Installation

Download and install Neo4j Desktop

Neo4j Desktop provides a quick install button for neo4j-graphql.

After creating your database you can find it under "Manage" in the "Plugins" tab for a single click install.

desktop graphql

Use with neo4j-graphql-cli

This extension is utilized, when you use neo4j-graphql-cli

This tool

  1. launches a Neo4j Sandbox with your GraphQL schema

  2. provides the /graphql/ endpoint,

  3. a Neo4j server,

  4. an hosted GraphiQL for it.

npm install -g neo4j-graphql-cli
neo4j-graphql movies-schema.graphql

Quickstart

To generate some graph data in Neo4j just run :play movie graph in your Neo4j Browser.

GraphiQL

The best tool to use is GraphiQL the GraphQL UI. Get and install it.

Enter your GraphQL URL, like http://localhost:7474/graphql/ (note the trailing slash).

If your Neo4j Server runs with authentication enabled, add the appropriate Basic-Auth (base64 encoded) username:password header in the "Edit HTTP Headers" screen.

Command to generate the Authorization header value.
echo "Basic $(echo -n "neo4j:<password>" | base64)"

Uploading a GraphQL Schema

Here is a small example schema for the movie data. Just a Movie with actors, and a Person with movies.

Simple properties are mapped directly while the relationships are mapped to fields movies and actors

Movies Schema
type Movie  {
  title: String!
  released: Int
  actors: [Person] @relation(name:"ACTED_IN",direction:IN)
}
type Person {
  name: String!
  born: Int
  movies: [Movie] @relation(name:"ACTED_IN")
}

You can POST a GraphQL schema to the /graphql/idl/ endpoint or run the CALL graphql.idl('schema-text') procedure.

The payload is parsed and stored in Neo4j and used subsequently as the backing GraphQL schema for validating and executing queries.

CALL graphql.idl('
type Movie  {
  title: String!
  released: Int
  tagline: String
  actors: [Person] @relation(name:"ACTED_IN",direction:IN)
}
type Person {
  name: String!
  born: Int
  movies: [Movie] @relation(name:"ACTED_IN")
}
')

You should then be able to see your schema in the Docs section of GraphiQL.

This also gives you auto-completion, validation and hints when writing queries.

With graphql.reset() you can trigger the reset of you schema. But it also updates automatically if changed on other cluster members. Latest after 10 seconds.

To visualize your GraphQL schema in Neo4j Browser use: call graphql.schema().

graphql.schema

Using

RETURN graphql.getIdl()

you’ll get back a string representation of the currently used schema.

Auto-Generated Query Types

From that schema, the plugin automatically generate Query Types for each of the declared types.

e.g. Movie(title,released,first,offset,_id,orderBy, filter): [User]

  • Each field of the entity is available as query argument, with an equality check (plural for list-contains)

  • We also provide a filter argument for more complex filtering with nested predicates, also for relation-fields (see graphcool docs)

  • For ordered results there is a orderBy argument

  • And first, offset allow for pagination

Now you can for instance run this query:

Simple query example
{ Person(name:"Kevin Bacon") {
    name
    born
    movies {
      title
      released
      tagline
    }
  }
}
graphiql query1
Advanced query example
query Nineties($released: Int, $letter: String)
{ Movie(released: $released,
        filter: {title_starts_with: $letter,
                 actors_some: { name_contains: $letter}}) {
    title
    released
    actors(first: 3) {
      name
      born
      movies(first: 1, orderBy: title_desc) {
        title
        released
      }
    }
  }
}

# query variables
{ "released":1995, "letter":"A"}

This query declares query name and parameters (first line), which are passed separately ("Query Parameters box") as JSON.

And get this result:

graphiql query2

Auto-Generated Mutations

Additionally Mutations for each type are created, which return update statistics.

e.g. for the Movie type:

  • createMovie(title: ID!, released: Int) : String

  • mergeMovie(title: ID!, released: Int) : String

  • updateMovie(title: ID!, released: Int) : String

  • deleteMovie(title: ID!) : String

and for it’s relationships:

  • addMovieActors(title: ID!, actors:[ID]!) : String

  • deleteMovieActors(title: ID!, actors:[ID]!) : String

Those mutations then allow you to create and update your data with GraphQL.

Single Mutation
mutation {
    createPerson(name:"Chadwick Boseman", born: 1977)
}
Mutation Result
{ "data": {
    "createPerson": "Nodes created: 1\nProperties set: 2\nLabels added: 1\n"
  }
}
Several Mutations at once
mutation {
    pp: createMovie(title:"Black Panther", released: 2018)
    lw: createPerson(name:"Letitia Wright", born: 1993)
    cast: addMovieActors(title: "Black Panther",
          actors:["Chadwick Boseman","Letitia Wright"])
}

If multiple mutations are sent as part of the same request, they will be executed in the same transaction (meaning if one of them fails they will all fail). If the same mutation is called multiple times, you need to use alias prefixes to avoid clashes in the returned data, which is keyed on mutation names.

graphiql mutation

You can use those mutations also to load data from CSV or JSON.

Directives

Directives like @directiveName(param:value) can be used to augment the schema with additional meta-information that we use for processing.

You have already seen the @relation(name:"ACTED_IN", direction:"IN") directive to map entity references to graph relationships.

The @cypher directive is a powerful way of declaring computed fields, query types and mutations with a Cypher statement.

For instance, directors
type Movie {
  ...
  directors: [Person] @cypher(statement:"MATCH (this)<-[:DIRECTED]-(d) RETURN d")
}
Register Top-Level Schema Types
schema {
   query: QueryType
   mutation: MutationType
}
A custom query
type QueryType {
  ...
  coActors(name:ID!): [Person] @cypher(statement:"MATCH (p:Person {name:$name})-[:ACTED_IN]->()<-[:ACTED_IN]-(co) RETURN distinct co")
}
A custom mutation
type MutationType {
  ...
  rateMovie(user:ID!, movie:ID!, rating:Int!): Int
  @cypher(statement:"MATCH (p:Person {name:$user}),(m:Movie {title:$movie}) MERGE (p)-[r:RATED]->(m) SET r.rating=$rating RETURN r.rating")
}
Full enhanced Schema
type Movie  {
  title: String!
  released: Int
  actors: [Person] @relation(name:"ACTED_IN",direction:IN)
  directors: [Person] @cypher(statement:"MATCH (this)<-[:DIRECTED]-(d) RETURN d")
}
type Person {
  name: String!
  born: Int
  movies: [Movie] @relation(name:"ACTED_IN")
}
schema {
   query: QueryType
   mutation: MutationType
}
type QueryType {
  coActors(name:ID!): [Person] @cypher(statement:"MATCH (p:Person {name:$name})-[:ACTED_IN]->()<-[:ACTED_IN]-(co) RETURN distinct co")
}
type MutationType {
  rateMovie(user:ID!, movie:ID!, rating:Int!): Int
  @cypher(statement:"MATCH (p:Person {name:$user}),(m:Movie {title:$movie}) MERGE (p)-[r:RATED]->(m) SET r.rating=$rating RETURN r.rating")
}

New Neo4j-GraphQL-Java Integration

Currently we’re working on a independent transpiler (neo4j-graphql-java) of GraphQL to Cypher which can also be used for your own GraphQL servers or middleware on the JVM.

This takes a given GraphQL schema, augments it and then uses that schema to generate Cypher queries from incoming GraphQL queries.

There are small examples of writing GraphQL servers in the repository, but we also wanted to make the new implementation available for testing.

That’s why we integrated the new transpiler at the URL: http://localhost:7474/graphql/experimental/ in this plugin, so that you can test it out. It uses the schema of the main implementation.

Currently supported features are:

  • parse SDL schema

  • resolve query fields via result types

  • handle arguments as equality comparisons for top level and nested fields

  • handle relationships via @relation directive on schema fields

  • @relation directive on types for rich relationships (from, to fields for start & end node)

  • filter for top-level query-fields

  • handle first, offset arguments

  • argument types: string, int, float, array

  • request parameter support

  • parametrization for cypher query

  • aliases

  • inline and named fragments

  • auto-generate query fields for all objects

  • @cypher directive for fields to compute field values, support arguments

  • auto-generate mutation fields for all objects to create, update, delete

  • @cypher directive for top level queries and mutations, supports arguments

For more details see the readme of the transpiler repository.

Here is a query example against the movie graph:

{
  person(born:1950) {
    name, born
    movies(first: 4) {
      title
      actors {
        name
      }
    }
  }
}

width:800

Procedures

This library also comes with Cypher Procedures to execute GraphQL from within Neo4j.

Simple Procedure Query
CALL graphql.query('{ Person(born: 1961) { name, born } }')
Advanced Procedure Query with parameters and post-processing
WITH 'query ($year:Long,$limit:Int) { Movie(released: $year, first:$limit) { title, actors {name} } }' as query

CALL graphql.query(query,{year:1995,limit:5}) YIELD result

UNWIND result.Movie as movie
RETURN movie.title, [a IN movie.actors | a.name] as actors
graphql.execute
Update with Mutation
CALL graphql.execute('mutation { createMovie(title:"The Shape of Water", released:2018)}')

Other Information

Please leave Feedback and Issues

You can get quick answers on Neo4j-Users Slack in the #neo4j-graphql channel

License: Apache License v2.

This branch for Neo4j 3.5.x

Build Status

Features

name information example

entities

each node label represented as entity

{ Person {name,born} }

multi entities

multiple entities per query turned into UNION

{ Person {name,born} Movie {title,released} }

property fields

via sampling property names and types are determined

{ Movie {title, released} }

field parameters

all properties can be used as filtering (exact/list) input parameters, will be turned into Cypher parameters

{ Movie(title:"The Matrix") {released,tagline} }

query parameters

passed through as Cypher parameters

query MovieByParameter ($title: String!) { Person(name:$name) {name,born} }

filter arguments

nested input types for arbitrary filtering on query types and fields

{ Company(filter: { AND: { name_contains: "Ne", country_in ["SE"]}}) { name } }

filter arguments for relations

filtering on relation fields, suffixes ("",not,some, none, single, every)

{ Company(filter: { employees_none { name_contains: "Jan"}, employees_some: { gender_in : [female]}, company_not: null }) { name } }

relationships

via a @relationship annotated field, optional direction

type Person { name: String, movies : Movie @relation(name:"ACTED_IN", direction:OUT) }

ordering

via an extra orderBy parameter

query PersonSortQuery { Person(orderBy:[name_desc,born_desc]) {name,born}}

pagination

via first and offset parameters

query PagedPeople { Person(first:10, offset:20) {name,born}}

schema first IDL support

define schema via IDL

:POST /graphql/idl "type Person {name: String!, born: Int}"

Mutations

create/delete mutations inferred from the schema

createMovie(title:ID!, released:Int) updateMovie(title:ID!, released:Int) deleteMovie(title:ID!)

createMoviePersons(title:ID!,persons:[ID!])
deleteMoviePersons(title:ID!,persons:[ID!])

Cypher queries

@cypher directive on fields and types, parameter support

actors : Int @cypher(statement:"RETURN size( (this)< -[:ACTED_IN]-() )")

Cypher updates

Custom mutations by executing @cypher directives

createPerson(name: String) : Person @cypher(statement:"CREATE (p:Person {name:{name}}) RETURN p")

extensions

extra information returned

fields are: columns, query, warnings, plan, type READ_ONLY/READ_WRITE,

Note
@cypher directives can have a passThrough:true argument, that gives sole responsibility for the nested query result for this field to your Cypher query. You will have to provide all data/structure required by client queries. Otherwise, we assume if you return object-types that you will return the appropriate nodes from your statement.

Advanced Usage

The extension works with Neo4j 3.x, the code on this branch is for 3.5.

Please consult the Neo4j documentation for file locations for the other editions on the different operating systems.

Manual Installation

  1. Download the appropriate neo4j-graphql release for your version.

  2. Copy the jar-file into Neo4j’s plugins directory

  3. Edit the Neo4j settings ($NEO4J_HOME/conf/neo4j.conf) to add:
    dbms.unmanaged_extension_classes=org.neo4j.graphql=/graphql

  4. You might need to add ,graphql.* if your config contains this line:
    dbms.security.procedures.whitelist=

  5. (Re)start your Neo4j server

Note
Neo4j Desktop: the configuration is available under Manage → Settings, the plugins folder via Open Folder.
Note

If you run Neo4j via Docker:

  • put the jar-file into a /plugins directory and make it available to the container via -v /path/to/plugins:/plugins

  • also add to your environment: -e NEO4J_dbms_unmanaged__extension__classes=org.neo4j.graphql=/graphql.

Building manually

git clone https://github.com/neo4j-graphql/neo4j-graphql
cd neo4j-graphql
git checkout {branch}
mvn clean package
cp target/neo4j-graphql-*.jar $NEO4J_HOME/plugins
echo 'dbms.unmanaged_extension_classes=org.neo4j.graphql=/graphql' >> $NEO4J_HOME/conf/neo4j.conf
$NEO4J_HOME/bin/neo4j restart
Note
You might need to add ,graphql.* if your config contains this line: dbms.security.procedures.whitelist=

Schema from Graph

If you didn’t provide a GraphQL schema, we try to derive one from the existing graph data. From sampling the data we add a type for each Node-Label with all the properties and their types found as fields.

Each relationship-type adds a reference field to the node type, named aType for A_TYPE.

Procedures

You can even visualize remote graphql schemas, e.g. here from the GitHub GraphQL API. Make sure to generate the Personal Access Token to use in your account settings.

call graphql.introspect("https://api.github.com/graphql",{Authorization:"bearer d8xxxxxxxxxxxxxxxxxxxxxxx"})

graphql.introspect github

Resources

Neo4j-GraphQL

Libraries & Tools

Neo4j Admin API

The project also contains an experimental endpoint to expose procedures deployed into Neo4j (built-in and external) as a GraphQL admin API endpoint.

If you access /graphql/admin in GraphiQL or GraphQL Playground, you should see those separated into queries and mutations in the schema.

You have to explicitely allow procedures to be exposed, via the config setting graphql.admin.procedures.(read/write) with either Neo4j procedure syntax or admin-endpoint field names. By setting it to:

graphql.admin.procedures.read=db.*,dbms.components,dbms.queryJ*
graphql.admin.procedures.write=db.create*,dbIndexExplicitFor*

For documentation on each please check the provided description or the documentation of the original procedure in the Neo4j or other manuals.

neo4j graphql admin simple

You will have to provide the appropriate user credentials as HTTP Basic-Auth headers, the procedures are executed under the priviledges of that user.

You can read more about it in this article.

neo4j-graphql's People

Contributors

dependabot[bot] avatar drew-moore avatar herejia avatar jessitron avatar jexp avatar mneedham avatar sarmbruster avatar sgratzl avatar tomasonjo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

neo4j-graphql's Issues

apollo-server, neo4j-graphql, and schema extraction

posting this as an issue per @jexp request in slack

It would be great if neo4j-graphql and apollo-server would place nice with each other.

Writing schema in neo4j-graphql is a breeze! But apollo-server requires a local version of the schema as well as resolvers. So, one winds up with an impedance mismatch because you can just directly send graphql queries to neo4j via the plugin, which obviates apollo-server's resolvers.

With that in mind...

Does anyone know if you can get the generated cypher queries from the plugin?

Related question, does the plugin generate all the queries and then stores them, or does the plugin just generate the queries on the fly? If the latter, then I expect it wouldn’t be possible to get the queries.

The reason I ask is that I’m working with a backend that is using the apollo-server. It would be nice if the plugin could spit out the queries, which I could then use in the apollo-server resolvers.

Thanks!

Wrong schema

Hi,

I haven't created any schema for GraphQL letting the extension determine it (it is very simple)
image

but faced the following error:

Error: _PersonOrdering values must be an object with value names as keys.
    at n (file:///C:/Program%20Files/GraphiQL/resources/app.asar/dist/bundle.js:27:31105)
    at S (file:///C:/Program%20Files/GraphiQL/resources/app.asar/dist/bundle.js:28:22183)
    at new e (file:///C:/Program%20Files/GraphiQL/resources/app.asar/dist/bundle.js:28:26587)
    at w (file:///C:/Program%20Files/GraphiQL/resources/app.asar/dist/bundle.js:31:24801)
    at c (file:///C:/Program%20Files/GraphiQL/resources/app.asar/dist/bundle.js:31:23974)
    at n (file:///C:/Program%20Files/GraphiQL/resources/app.asar/dist/bundle.js:31:23222)
    at file:///C:/Program%20Files/GraphiQL/resources/app.asar/dist/bundle.js:31:26420
    at Array.map (native)
    at i (file:///C:/Program%20Files/GraphiQL/resources/app.asar/dist/bundle.js:31:26397)
    at file:///C:/Program%20Files/GraphiQL/resources/app.asar/dist/bundle.js:26:29453

Any idea?
Thanks in advance

Accessing relation data

Is it possible to access relationship data?

E.g. I have a User "me" and a User "friend". The date since both are friends is stored in the relationship "FRIEND_OF".
In graphql I then call

{
User(name: "me") {
    name
    friends {
      name
    }
 }
}

How do I get the date since the users are friends?
If I understood it correctly, this it not implemented yet. So here is an option what I think how it might be an option:

I guess something like this should work ?:

interface User {
  name
...
  friends: [User] @cypher(statement:"MATCH (this)-[relation:FRIEND_OF]-(friend:User) RETURN friend{.*, friend_since: relation.since} ")
}

But better would be maybe a schema for relations?
Something like:

Interface @FRIEND_OF { 
  friend_since
}
Interface User {
  name 
  friends: [User] @relation(Name: "FRIEND_OF")
}

(using the @ or something else in front of "FRIEND_OF" could determine that it is the edge and not the node)

So the @relation pulls in the FRIEND_OF Schema and the call could look like

{ User {
  name 
  friends {
    name
    friendOf {
      friend_since
    }
  }
}
}

Or is there already an option?

Add extensions result value

Add extensions result value for query statistics or query plan, depending on directives given, e.g. contain the generated cypher query as well

NeoServletContainer,-1,false

Hi there,

I followed the instructions in your readme to the letter, but on restarting my neo4j server I found this error

Starting Neo4j failed: org.neo4j.server.web.NeoServletContainer-673720ea@f0284693==org.neo4j.server.web.NeoServletContainer,-1,false

I'm not sure where the error is

neo4j version 3.1.3
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T20:39:06+01:00)
Maven home: /usr/local/Cellar/maven/3.5.0/libexec
Java version: 1.8.0_121, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre
Default locale: en_GB, platform encoding: UTF-8
OS name: "mac os x", version: "10.12.1", arch: "x86_64", family: "mac"

handle nested parameters

there is an issue with parameters for fields,

the graphql-java library filters and augments on each level! the parameters that are available for a field

  • passed in parameters are filtered by allowed params on the field
  • default values are set for params that have them
  • no nested fields are considered!!

The last bit is a big problem for us, as we generate the whole query in one go, and so also need the nested paramter information, at least for passed in variables.

As a workaround I now combine the external variables with the ones for the top-level field.
This is still missing the variables for the nested fields that e.g. have default values.

I tried to replicate the code from the library but include nesting, but it was too tricky to work out for now, esp, how to get the correct fieldDefinition on the right level from the schema.

So this works now at least:

graphiql

Basic installation instructions not working

I've tried using this on the latest community version (3.2.3) and 3.1.6 but both are failing for different reasons.

Using this with 3.2.3 returns bad JSON after successfully authenticating. Graphiql states SyntaxError: Unexpected end of JSON input.

When using 3.1.6, the /graphql doesn't do anything but return a HTTP 500 status code. This is the case with and without authentication headers.

Any suggestions?


Edit: The suggestion at #13 of providing {} as query variables resolves this issue on 3.2.3, that being said, the issue with 3.1.6 still stands so I'll keep this open for now.

404 Not Found error after Install

I have followed the instructions to install neo4j-graphql. The build of the code has worked and all the tests passed successfully.

I copied the specified file and edited the config file.

After restarting neo4j and creating the Movies database I was able to run this query and got some data returned.

CALL graphql.schema()

What seems to be failing for me is using the URL to access graphql. I'm using http://localhost:7474/graphql/ and have added the required Authorization header.

All I seem to get is a 404 Not Found error.

Is there anything I'm missing here? I'm pretty new to neo4j.

Parameter specified as non-null is null

After installing neo4j-graphql with neo4j-community-3.1.1 and using it before, I'm now having some issues executing queries.

  • I'm getting a 500 server error using the electron graphql desktop app. It is able to access the movies schema though

  • I'm also not able to access graphiql with the same endpoint of http://localhost:7474/graphql

  • GraphQL returns SyntaxError: Unexpected end of JSON input when entering this query:
    query AllPeopleQuery { Person(name:"Kevin Bacon") { name } }

  • There were a few warning logs when launching Neo4j (in the link below) as well as:
    ERROR The RuntimeException could not be mapped to a response, re-throwing to the HTTP container Parameter specified as non-null is null: method org.neo4j.graphql.GraphQLResource.get, parameter query java.lang.IllegalArgumentException: Parameter specified as non-null is null: method org.neo4j.graphql.GraphQLResource.get, parameter query
    https://www.pastebucket.com/563386

Does anyone have insight on solving the issue?

consider loading graphs by a sequential scan of the relationship store

especially when,

  1. the store is not fully memory mapped
  2. we're reading more than X% of all relationships (where X might be as low as 50) (get via count-store)

Reason: Reading by node and then relationship-chain is a random access into any page which might not be mapped and has to be loaded while another is evicted, which causes constant I/O pressure and reduces load performance to the speed of disk.

If we change this to loading the nodes and their degrees first in parallel (usually we have much fewer nodes, and more per page) to build up our structure / information.

Then we scan the relationshipstore exactly once, and check for the source or target-id to be in our id-map and put the other id in the appropriate slot in the adjacency list.

Nodes whose degrees have been reached can be sorted / compacted in the background (or save space via chunks of compressed vlongs).

SyntaxError: Unexpected end of JSON input

I am getting back a no content to map due to end of input when going through the instructions in the readme.

Neo4j Version: 3.0.6
Operating System: Ubuntu 16.04

Steps to reproduce

  1. Build and deploy latest plugin to 3.0.6
  2. Play movies graph :play movies
  3. Run AllPeopleQuery query from readme
  4. Observe in GraphiQL error "SyntaxError: Unexpected end of JSON input"

Expected behavior

A valid JSON response.

Actual behavior

"SyntaxError: Unexpected end of JSON input"

Exception stack on the server

(01-21) 01:40:09 pm: :09.572+0000 ERROR The exception contained within MappableContainerException could not be mapped to a response, re-throwing to the HTTP container No content to map to Object due to end of input java.io.EOFException: No content to map to Object due to end of input at org.codehaus.jackson.map.ObjectMapper._initForReading(ObjectMapper.java:2775) at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2718) at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1863) at org.neo4j.graphql.GraphQLResource.parseMap(GraphQLResource.kt:78) at org.neo4j.graphql.GraphQLResource.getVariables(GraphQLResource.kt:69) at org.neo4j.graphql.GraphQLResource.executeQuery(GraphQLResource.kt:53) at org.neo4j.graphql.GraphQLResource.get(GraphQLResource.kt:40) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205) at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) at org.neo4j.server.rest.transactional.TransactionalRequestDispatcher.dispatch(TransactionalRequestDispatcher.java:144) at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409) at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) at org.neo4j.server.rest.dbms.AuthorizationFilter.doFilter(AuthorizationFilter.java:121) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at org.neo4j.server.rest.web.CollectUserAgentFilter.doFilter(CollectUserAgentFilter.java:69) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:95) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) at org.eclipse.jetty.server.Server.handle(Server.java:497) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) at java.lang.Thread.run(Thread.java:745)
(01-21) 01:40:09 pm: :09.575+0000 WARN java.io.EOFException: No content to map to Object due to end of input javax.servlet.ServletException: java.io.EOFException: No content to map to Object due to end of input at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:420) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) at org.neo4j.server.rest.dbms.AuthorizationFilter.doFilter(AuthorizationFilter.java:121) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at org.neo4j.server.rest.web.CollectUserAgentFilter.doFilter(CollectUserAgentFilter.java:69) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:95) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) at org.eclipse.jetty.server.Server.handle(Server.java:497) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) at java.lang.Thread.run(Thread.java:745) Caused by: java.io.EOFException: No content to map to Object due to end of input at org.codehaus.jackson.map.ObjectMapper._initForReading(ObjectMapper.java:2775) at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2718) at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1863) at org.neo4j.graphql.GraphQLResource.parseMap(GraphQLResource.kt:78) at org.neo4j.graphql.GraphQLResource.getVariables(GraphQLResource.kt:69) at org.neo4j.graphql.GraphQLResource.executeQuery(GraphQLResource.kt:53) at org.neo4j.graphql.GraphQLResource.get(GraphQLResource.kt:40) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205) at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) at org.neo4j.server.rest.transactional.TransactionalRequestDispatcher.dispatch(TransactionalRequestDispatcher.java:144) at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409) at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409) ... 27 more

Relay and schema.graphql

Hello,
I've noticed that if I keep an IDL schema and push it to the neo4j server, it cannot contain all the standard queries and mutations (i.e. Person). At the same time, since it doesn't show them relay won't read them when creating it's generated queries.
Therefore it's necessary to use 2 different schemas, one to push to the neo4j/graphql server, the other so that relay can read it when generating the queries. Is it possible to allow the overriding/excplitcit declaration of standard queries?

How to use the graphiql for neo4j in windows?

Hi, I was following the read me file to run graphql with neo4j.
However, after completing all the steps when I try to use the graphiql to execute a query i get the following error:
graphiql

Another thing, what would be the Header name and header value incase the password for my neo4j server is : rivan123
I have given in the following way:
http_header

The instruction given to include the basic-auth header is quite confusing.

And about using the graphql procedure from the neo4j server I am getting the following error:
procedure

@jexp could you please give me any clue. I just want to get the thing running. Thanks in advance!!

Adding the plugin to an existing db with multi-labeled nodes

I have tried to add the plugin to an existing database with multi labeled nodes. When using electron to investigate schema i get a 500 Internal Error back. I used neo4j CE 3.1.5. To reproduce the error you must first import the data and create a multi-labeled node with the two queries:

:play movies

MATCH (p:Person)-[:DIRECTED]-()
SET p:Director

Now that I have imported the data, I add the graphql plugin to Neo4j and restart. Made a test call with electron that returns internal 500 error:
screen shot 2017-07-06 at 00 03 08

console log:

2017-07-06 10:25:56.733+0000 INFO ======== Neo4j 3.1.5 ========
2017-07-06 10:25:57.196+0000 INFO Starting...
2017-07-06 10:25:59.073+0000 INFO Bolt enabled on 0.0.0.0:7687.
2017-07-06 10:26:09.091+0000 INFO Started.
2017-07-06 10:26:09.387+0000 INFO Mounted unmanaged extension [org.neo4j.graphql] at [/graphql]
2017-07-06 10:26:10.320+0000 WARN The following warnings have been detected with resource and/or provider classes:
WARNING: A sub-resource method, public final javax.ws.rs.core.Response org.neo4j.graphql.GraphQLResource.options(javax.ws.rs.core.HttpHeaders), with URI template, "/", is treated as a resource method
WARNING: A sub-resource method, public final javax.ws.rs.core.Response org.neo4j.graphql.GraphQLResource.executeOperation(java.lang.String), with URI template, "/", is treated as a resource method
WARNING: A sub-resource method, public final javax.ws.rs.core.Response org.neo4j.graphql.GraphQLResource.get(java.lang.String,java.lang.String), with URI template, "/", is treated as a resource method
2017-07-06 10:26:11.127+0000 INFO Remote interface available at http://localhost:7474/
{
__schema {
types {
name
kind
description
}
}
}
{}
2017-07-06 10:26:43.452+0000 ERROR The RuntimeException could not be mapped to a response, re-throwing to the HTTP container interfaceType can't be null
graphql.AssertException: interfaceType can't be null
at graphql.Assert.assertNotNull(Assert.java:10)
at graphql.schema.GraphQLObjectType$Builder.withInterface(GraphQLObjectType.java:153)
at org.neo4j.graphql.GraphQLSchemaBuilder.toGraphQLObjectType(GraphQLSchemaBuilder.kt:111)
at org.neo4j.graphql.GraphQLSchemaBuilder.graphQlTypes(GraphQLSchemaBuilder.kt:559)
at org.neo4j.graphql.GraphQLSchemaBuilder$Companion.buildSchema(GraphQLSchemaBuilder.kt:284)
at org.neo4j.graphql.GraphSchema.getGraphQL(GraphSchema.kt:19)
at org.neo4j.graphql.GraphQLResource.executeQuery(GraphQLResource.kt:67)
at org.neo4j.graphql.GraphQLResource.executeOperation(GraphQLResource.kt:43)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)
at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
at org.neo4j.server.rest.transactional.TransactionalRequestDispatcher.dispatch(TransactionalRequestDispatcher.java:147)
at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
at org.neo4j.server.rest.dbms.AuthorizationEnabledFilter.doFilter(AuthorizationEnabledFilter.java:122)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.neo4j.server.rest.web.CollectUserAgentFilter.doFilter(CollectUserAgentFilter.java:69)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:497)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
at java.lang.Thread.run(Thread.java:745)
2017-07-06 10:26:43.454+0000 WARN /graphql/ interfaceType can't be null
graphql.AssertException: interfaceType can't be null
at graphql.Assert.assertNotNull(Assert.java:10)
at graphql.schema.GraphQLObjectType$Builder.withInterface(GraphQLObjectType.java:153)
at org.neo4j.graphql.GraphQLSchemaBuilder.toGraphQLObjectType(GraphQLSchemaBuilder.kt:111)
at org.neo4j.graphql.GraphQLSchemaBuilder.graphQlTypes(GraphQLSchemaBuilder.kt:559)
at org.neo4j.graphql.GraphQLSchemaBuilder$Companion.buildSchema(GraphQLSchemaBuilder.kt:284)
at org.neo4j.graphql.GraphSchema.getGraphQL(GraphSchema.kt:19)
at org.neo4j.graphql.GraphQLResource.executeQuery(GraphQLResource.kt:67)
at org.neo4j.graphql.GraphQLResource.executeOperation(GraphQLResource.kt:43)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)
at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
at org.neo4j.server.rest.transactional.TransactionalRequestDispatcher.dispatch(TransactionalRequestDispatcher.java:147)
at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
at org.neo4j.server.rest.dbms.AuthorizationEnabledFilter.doFilter(AuthorizationEnabledFilter.java:122)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.neo4j.server.rest.web.CollectUserAgentFilter.doFilter(CollectUserAgentFilter.java:69)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:497)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
at java.lang.Thread.run(Thread.java:745)

If we remove label director it starts to work:

match (d:Director) remove d:Director

We can even add the multi label back and it will still work:

MATCH (p:Person)-[:DIRECTED]-()
SET p:Director

I guess it has to do with the way it loads up for the first time

make it run with GraphQL-Voyager visualization

https://apis.guru/graphql-voyager/

Current Errors:

  • Directives, doesn't like our "version" field names: Error: Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "3.0" does not.
  • MutationType: Error: MutationType fields must be an object with field names as keys or a function which returns such an object.

Made it work (see at the end) by changing introspection query to not include mutationType and directives:

graphql-voyager-1

Inspection Query:

  query IntrospectionQuery {
    __schema {
      queryType { name }
      mutationType { name }
      subscriptionType { name }
      types {
        ...FullType
      }
      directives {
        name
        description
        locations
        args {
          ...InputValue
        }
      }
    }
  }

  fragment FullType on __Type {
    kind
    name
    description
    fields(includeDeprecated: true) {
      name
      description
      args {
        ...InputValue
      }
      type {
        ...TypeRef
      }
      isDeprecated
      deprecationReason
    }
    inputFields {
      ...InputValue
    }
    interfaces {
      ...TypeRef
    }
    enumValues(includeDeprecated: true) {
      name
      description
      isDeprecated
      deprecationReason
    }
    possibleTypes {
      ...TypeRef
    }
  }

  fragment InputValue on __InputValue {
    name
    description
    type { ...TypeRef }
    defaultValue
  }

  fragment TypeRef on __Type {
    kind
    name
    ofType {
      kind
      name
      ofType {
        kind
        name
        ofType {
          kind
          name
          ofType {
            kind
            name
            ofType {
              kind
              name
              ofType {
                kind
                name
                ofType {
                  kind
                  name
                }
              }
            }
          }
        }
      }
    }
  }

our response

{
  "data": {
    "__schema": {
      "queryType": {
        "name": "QueryType"
      },
      "mutationType": {
        "name": "MutationType"
      },
      "subscriptionType": null,
      "types": [
        {
          "kind": "OBJECT",
          "name": "QueryType",
          "description": null,
          "fields": [
            {
              "name": "Movie",
              "description": null,
              "args": [
                {
                  "name": "tagline",
                  "description": "tagline of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "title",
                  "description": "title of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "released",
                  "description": "released of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "taglines",
                  "description": "taglines is list variant of tagline of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "titles",
                  "description": "titles is list variant of title of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "releaseds",
                  "description": "releaseds is list variant of released of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_MovieOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Movie",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "Person",
              "description": null,
              "args": [
                {
                  "name": "born",
                  "description": "born of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "name",
                  "description": "name of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "borns",
                  "description": "borns is list variant of born of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "names",
                  "description": "names is list variant of name of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_PersonOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Person",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "Movie",
          "description": "Movie-Node",
          "fields": [
            {
              "name": "_id",
              "description": "internal node id",
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "ID",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "tagline",
              "description": "tagline of  Movie",
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "title",
              "description": "title of  Movie",
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "released",
              "description": "released of  Movie",
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "Long",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "Person_ACTED_IN",
              "description": "Movie Person_ACTED_IN Person",
              "args": [
                {
                  "name": "born",
                  "description": "born of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "name",
                  "description": "name of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "borns",
                  "description": "borns is list variant of born of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "names",
                  "description": "names is list variant of name of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_PersonOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Person",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "Person_PRODUCED",
              "description": "Movie Person_PRODUCED Person",
              "args": [
                {
                  "name": "born",
                  "description": "born of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "name",
                  "description": "name of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "borns",
                  "description": "borns is list variant of born of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "names",
                  "description": "names is list variant of name of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_PersonOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "OBJECT",
                "name": "Person",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "Person_DIRECTED",
              "description": "Movie Person_DIRECTED Person",
              "args": [
                {
                  "name": "born",
                  "description": "born of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "name",
                  "description": "name of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "borns",
                  "description": "borns is list variant of born of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "names",
                  "description": "names is list variant of name of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_PersonOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Person",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "Person_WROTE",
              "description": "Movie Person_WROTE Person",
              "args": [
                {
                  "name": "born",
                  "description": "born of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "name",
                  "description": "name of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "borns",
                  "description": "borns is list variant of born of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "names",
                  "description": "names is list variant of name of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_PersonOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "OBJECT",
                "name": "Person",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "SCALAR",
          "name": "ID",
          "description": "Built-in ID",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "SCALAR",
          "name": "String",
          "description": "Built-in String",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "SCALAR",
          "name": "Long",
          "description": "Long type",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "Person",
          "description": "Person-Node",
          "fields": [
            {
              "name": "_id",
              "description": "internal node id",
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "ID",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "born",
              "description": "born of  Person",
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "Long",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "name",
              "description": "name of  Person",
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "ACTED_IN_Movie",
              "description": "Person ACTED_IN_Movie Movie",
              "args": [
                {
                  "name": "tagline",
                  "description": "tagline of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "title",
                  "description": "title of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "released",
                  "description": "released of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "taglines",
                  "description": "taglines is list variant of tagline of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "titles",
                  "description": "titles is list variant of title of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "releaseds",
                  "description": "releaseds is list variant of released of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_MovieOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Movie",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "PRODUCED_Movie",
              "description": "Person PRODUCED_Movie Movie",
              "args": [
                {
                  "name": "tagline",
                  "description": "tagline of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "title",
                  "description": "title of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "released",
                  "description": "released of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "taglines",
                  "description": "taglines is list variant of tagline of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "titles",
                  "description": "titles is list variant of title of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "releaseds",
                  "description": "releaseds is list variant of released of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_MovieOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Movie",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "DIRECTED_Movie",
              "description": "Person DIRECTED_Movie Movie",
              "args": [
                {
                  "name": "tagline",
                  "description": "tagline of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "title",
                  "description": "title of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "released",
                  "description": "released of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "taglines",
                  "description": "taglines is list variant of tagline of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "titles",
                  "description": "titles is list variant of title of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "releaseds",
                  "description": "releaseds is list variant of released of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_MovieOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Movie",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "WROTE_Movie",
              "description": "Person WROTE_Movie Movie",
              "args": [
                {
                  "name": "tagline",
                  "description": "tagline of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "title",
                  "description": "title of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "released",
                  "description": "released of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "taglines",
                  "description": "taglines is list variant of tagline of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "titles",
                  "description": "titles is list variant of title of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "releaseds",
                  "description": "releaseds is list variant of released of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_MovieOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Movie",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "ENUM",
          "name": "_MovieOrdering",
          "description": "Ordering Enum for Movie",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": [
            {
              "name": "tagline_asc",
              "description": "Ascending sort for tagline",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "tagline_desc",
              "description": "Descending sort for tagline",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "title_asc",
              "description": "Ascending sort for title",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "title_desc",
              "description": "Descending sort for title",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "released_asc",
              "description": "Ascending sort for released",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "released_desc",
              "description": "Descending sort for released",
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "possibleTypes": null
        },
        {
          "kind": "ENUM",
          "name": "_PersonOrdering",
          "description": "Ordering Enum for Person",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": [
            {
              "name": "born_asc",
              "description": "Ascending sort for born",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "born_desc",
              "description": "Descending sort for born",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "name_asc",
              "description": "Ascending sort for name",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "name_desc",
              "description": "Descending sort for name",
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "MutationType",
          "description": null,
          "fields": [],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "__Schema",
          "description": "A GraphQL Introspection defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, the entry points for query, mutation, and subscription operations.",
          "fields": [
            {
              "name": "types",
              "description": "A list of all types supported by this server.",
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "LIST",
                  "name": null,
                  "ofType": {
                    "kind": "NON_NULL",
                    "name": null,
                    "ofType": {
                      "kind": "OBJECT",
                      "name": "__Type",
                      "ofType": null
                    }
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "queryType",
              "description": "The type that query operations will be rooted at.",
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "__Type",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "mutationType",
              "description": "If this server supports mutation, the type that mutation operations will be rooted at.",
              "args": [],
              "type": {
                "kind": "OBJECT",
                "name": "__Type",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "directives",
              "description": "'A list of all directives supported by this server.",
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "LIST",
                  "name": null,
                  "ofType": {
                    "kind": "NON_NULL",
                    "name": null,
                    "ofType": {
                      "kind": "OBJECT",
                      "name": "__Directive",
                      "ofType": null
                    }
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "subscriptionType",
              "description": "'If this server support subscription, the type that subscription operations will be rooted at.",
              "args": [],
              "type": {
                "kind": "OBJECT",
                "name": "__Type",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "__Type",
          "description": null,
          "fields": [
            {
              "name": "kind",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "ENUM",
                  "name": "__TypeKind",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "name",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "description",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "fields",
              "description": null,
              "args": [
                {
                  "name": "includeDeprecated",
                  "description": null,
                  "type": {
                    "kind": "SCALAR",
                    "name": "Boolean",
                    "ofType": null
                  },
                  "defaultValue": "false"
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "NON_NULL",
                  "name": null,
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "__Field",
                    "ofType": null
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "interfaces",
              "description": null,
              "args": [],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "NON_NULL",
                  "name": null,
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "__Type",
                    "ofType": null
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "possibleTypes",
              "description": null,
              "args": [],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "NON_NULL",
                  "name": null,
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "__Type",
                    "ofType": null
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "enumValues",
              "description": null,
              "args": [
                {
                  "name": "includeDeprecated",
                  "description": null,
                  "type": {
                    "kind": "SCALAR",
                    "name": "Boolean",
                    "ofType": null
                  },
                  "defaultValue": "false"
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "NON_NULL",
                  "name": null,
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "__EnumValue",
                    "ofType": null
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "inputFields",
              "description": null,
              "args": [],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "NON_NULL",
                  "name": null,
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "__InputValue",
                    "ofType": null
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "ofType",
              "description": null,
              "args": [],
              "type": {
                "kind": "OBJECT",
                "name": "__Type",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "ENUM",
          "name": "__TypeKind",
          "description": "An enum describing what kind of type a given __Type is",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": [
            {
              "name": "SCALAR",
              "description": "Indicates this type is a scalar.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "OBJECT",
              "description": "Indicates this type is an object. `fields` and `interfaces` are valid fields.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "INTERFACE",
              "description": "Indicates this type is an interface. `fields` and `possibleTypes` are valid fields.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "UNION",
              "description": "Indicates this type is a union. `possibleTypes` is a valid field.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "ENUM",
              "description": "Indicates this type is an enum. `enumValues` is a valid field.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "INPUT_OBJECT",
              "description": "Indicates this type is an input object. `inputFields` is a valid field.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "LIST",
              "description": "Indicates this type is a list. `ofType` is a valid field.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "NON_NULL",
              "description": "Indicates this type is a non-null. `ofType` is a valid field.",
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "__Field",
          "description": null,
          "fields": [
            {
              "name": "name",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "SCALAR",
                  "name": "String",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "description",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "args",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "LIST",
                  "name": null,
                  "ofType": {
                    "kind": "NON_NULL",
                    "name": null,
                    "ofType": {
                      "kind": "OBJECT",
                      "name": "__InputValue",
                      "ofType": null
                    }
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "type",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "__Type",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "isDeprecated",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "SCALAR",
                  "name": "Boolean",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "deprecationReason",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "__InputValue",
          "description": null,
          "fields": [
            {
              "name": "name",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "SCALAR",
                  "name": "String",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "description",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "type",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "__Type",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "defaultValue",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "SCALAR",
          "name": "Boolean",
          "description": "Built-in Boolean",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "__EnumValue",
          "description": null,
          "fields": [
            {
              "name": "name",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "SCALAR",
                  "name": "String",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "description",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "isDeprecated",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "SCALAR",
                  "name": "Boolean",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "deprecationReason",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "__Directive",
          "description": null,
          "fields": [
            {
              "name": "name",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "description",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "locations",
              "description": null,
              "args": [],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "NON_NULL",
                  "name": null,
                  "ofType": {
                    "kind": "ENUM",
                    "name": "__DirectiveLocation",
                    "ofType": null
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "args",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "LIST",
                  "name": null,
                  "ofType": {
                    "kind": "NON_NULL",
                    "name": null,
                    "ofType": {
                      "kind": "OBJECT",
                      "name": "__InputValue",
                      "ofType": null
                    }
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "onOperation",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "Boolean",
                "ofType": null
              },
              "isDeprecated": true,
              "deprecationReason": "Use `locations`."
            },
            {
              "name": "onFragment",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "Boolean",
                "ofType": null
              },
              "isDeprecated": true,
              "deprecationReason": "Use `locations`."
            },
            {
              "name": "onField",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "Boolean",
                "ofType": null
              },
              "isDeprecated": true,
              "deprecationReason": "Use `locations`."
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "ENUM",
          "name": "__DirectiveLocation",
          "description": "An enum describing valid locations where a directive can be placed",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": [
            {
              "name": "QUERY",
              "description": "Indicates the directive is valid on queries.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "MUTATION",
              "description": "Indicates the directive is valid on mutations.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "FIELD",
              "description": "Indicates the directive is valid on fields.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "FRAGMENT_DEFINITION",
              "description": "Indicates the directive is valid on fragment definitions.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "FRAGMENT_SPREAD",
              "description": "Indicates the directive is valid on fragment spreads.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "INLINE_FRAGMENT",
              "description": "Indicates the directive is valid on inline fragments.",
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "possibleTypes": null
        }
      ],
      "directives": [
        {
          "name": "profile",
          "description": "Enable query profiling",
          "locations": null,
          "args": []
        },
        {
          "name": "explain",
          "description": "Enable query explanation",
          "locations": null,
          "args": []
        },
        {
          "name": "compile",
          "description": "Enable query compilation",
          "locations": null,
          "args": []
        },
        {
          "name": "version",
          "description": "Specify Cypher version",
          "locations": null,
          "args": [
            {
              "name": "3.0",
              "description": null,
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "defaultValue": null
            },
            {
              "name": "3.1",
              "description": null,
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "defaultValue": null
            },
            {
              "name": "3.2",
              "description": null,
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "defaultValue": null
            }
          ]
        },
        {
          "name": "include",
          "description": "Directs the executor to include this field or fragment only when the `if` argument is true",
          "locations": null,
          "args": [
            {
              "name": "if",
              "description": "Included when true.",
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "SCALAR",
                  "name": "Boolean",
                  "ofType": null
                }
              },
              "defaultValue": null
            }
          ]
        },
        {
          "name": "skip",
          "description": "Directs the executor to skip this field or fragment when the `if`'argument is true.",
          "locations": null,
          "args": [
            {
              "name": "if",
              "description": "Skipped when true.",
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "SCALAR",
                  "name": "Boolean",
                  "ofType": null
                }
              },
              "defaultValue": null
            }
          ]
        }
      ]
    }
  }
}

This response works (fixed inspection query to - no mutationtype, no directives):

  query IntrospectionQuery {
    __schema {
      queryType { name }
      subscriptionType { name }
      types {
        ...FullType
      }
    }
  }

  fragment FullType on __Type {
    kind
    name
    description
    fields(includeDeprecated: true) {
      name
      description
      args {
        ...InputValue
      }
      type {
        ...TypeRef
      }
      isDeprecated
      deprecationReason
    }
    inputFields {
      ...InputValue
    }
    interfaces {
      ...TypeRef
    }
    enumValues(includeDeprecated: true) {
      name
      description
      isDeprecated
      deprecationReason
    }
    possibleTypes {
      ...TypeRef
    }
  }

  fragment InputValue on __InputValue {
    name
    description
    type { ...TypeRef }
    defaultValue
  }

  fragment TypeRef on __Type {
    kind
    name
    ofType {
      kind
      name
      ofType {
        kind
        name
        ofType {
          kind
          name
          ofType {
            kind
            name
            ofType {
              kind
              name
              ofType {
                kind
                name
                ofType {
                  kind
                  name
                }
              }
            }
          }
        }
      }
    }
  }

our response

{
  "data": {
    "__schema": {
      "queryType": {
        "name": "QueryType"
      },
      "subscriptionType": null,
      "types": [
        {
          "kind": "OBJECT",
          "name": "QueryType",
          "description": null,
          "fields": [
            {
              "name": "Movie",
              "description": null,
              "args": [
                {
                  "name": "tagline",
                  "description": "tagline of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "title",
                  "description": "title of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "released",
                  "description": "released of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "taglines",
                  "description": "taglines is list variant of tagline of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "titles",
                  "description": "titles is list variant of title of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "releaseds",
                  "description": "releaseds is list variant of released of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_MovieOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Movie",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "Person",
              "description": null,
              "args": [
                {
                  "name": "born",
                  "description": "born of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "name",
                  "description": "name of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "borns",
                  "description": "borns is list variant of born of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "names",
                  "description": "names is list variant of name of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_PersonOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Person",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "Movie",
          "description": "Movie-Node",
          "fields": [
            {
              "name": "_id",
              "description": "internal node id",
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "ID",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "tagline",
              "description": "tagline of  Movie",
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "title",
              "description": "title of  Movie",
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "released",
              "description": "released of  Movie",
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "Long",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "Person_ACTED_IN",
              "description": "Movie Person_ACTED_IN Person",
              "args": [
                {
                  "name": "born",
                  "description": "born of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "name",
                  "description": "name of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "borns",
                  "description": "borns is list variant of born of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "names",
                  "description": "names is list variant of name of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_PersonOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Person",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "Person_PRODUCED",
              "description": "Movie Person_PRODUCED Person",
              "args": [
                {
                  "name": "born",
                  "description": "born of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "name",
                  "description": "name of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "borns",
                  "description": "borns is list variant of born of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "names",
                  "description": "names is list variant of name of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_PersonOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "OBJECT",
                "name": "Person",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "Person_DIRECTED",
              "description": "Movie Person_DIRECTED Person",
              "args": [
                {
                  "name": "born",
                  "description": "born of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "name",
                  "description": "name of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "borns",
                  "description": "borns is list variant of born of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "names",
                  "description": "names is list variant of name of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_PersonOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Person",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "Person_WROTE",
              "description": "Movie Person_WROTE Person",
              "args": [
                {
                  "name": "born",
                  "description": "born of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "name",
                  "description": "name of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "borns",
                  "description": "borns is list variant of born of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "names",
                  "description": "names is list variant of name of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_PersonOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "OBJECT",
                "name": "Person",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "SCALAR",
          "name": "ID",
          "description": "Built-in ID",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "SCALAR",
          "name": "String",
          "description": "Built-in String",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "SCALAR",
          "name": "Long",
          "description": "Long type",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "Person",
          "description": "Person-Node",
          "fields": [
            {
              "name": "_id",
              "description": "internal node id",
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "ID",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "born",
              "description": "born of  Person",
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "Long",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "name",
              "description": "name of  Person",
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "ACTED_IN_Movie",
              "description": "Person ACTED_IN_Movie Movie",
              "args": [
                {
                  "name": "tagline",
                  "description": "tagline of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "title",
                  "description": "title of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "released",
                  "description": "released of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "taglines",
                  "description": "taglines is list variant of tagline of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "titles",
                  "description": "titles is list variant of title of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "releaseds",
                  "description": "releaseds is list variant of released of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_MovieOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Movie",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "PRODUCED_Movie",
              "description": "Person PRODUCED_Movie Movie",
              "args": [
                {
                  "name": "tagline",
                  "description": "tagline of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "title",
                  "description": "title of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "released",
                  "description": "released of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "taglines",
                  "description": "taglines is list variant of tagline of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "titles",
                  "description": "titles is list variant of title of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "releaseds",
                  "description": "releaseds is list variant of released of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_MovieOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Movie",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "DIRECTED_Movie",
              "description": "Person DIRECTED_Movie Movie",
              "args": [
                {
                  "name": "tagline",
                  "description": "tagline of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "title",
                  "description": "title of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "released",
                  "description": "released of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "taglines",
                  "description": "taglines is list variant of tagline of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "titles",
                  "description": "titles is list variant of title of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "releaseds",
                  "description": "releaseds is list variant of released of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_MovieOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Movie",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "WROTE_Movie",
              "description": "Person WROTE_Movie Movie",
              "args": [
                {
                  "name": "tagline",
                  "description": "tagline of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "title",
                  "description": "title of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "released",
                  "description": "released of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "taglines",
                  "description": "taglines is list variant of tagline of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "titles",
                  "description": "titles is list variant of title of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "releaseds",
                  "description": "releaseds is list variant of released of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_MovieOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Movie",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "ENUM",
          "name": "_MovieOrdering",
          "description": "Ordering Enum for Movie",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": [
            {
              "name": "tagline_asc",
              "description": "Ascending sort for tagline",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "tagline_desc",
              "description": "Descending sort for tagline",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "title_asc",
              "description": "Ascending sort for title",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "title_desc",
              "description": "Descending sort for title",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "released_asc",
              "description": "Ascending sort for released",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "released_desc",
              "description": "Descending sort for released",
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "possibleTypes": null
        },
        {
          "kind": "ENUM",
          "name": "_PersonOrdering",
          "description": "Ordering Enum for Person",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": [
            {
              "name": "born_asc",
              "description": "Ascending sort for born",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "born_desc",
              "description": "Descending sort for born",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "name_asc",
              "description": "Ascending sort for name",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "name_desc",
              "description": "Descending sort for name",
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "MutationType",
          "description": null,
          "fields": [],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "__Schema",
          "description": "A GraphQL Introspection defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, the entry points for query, mutation, and subscription operations.",
          "fields": [
            {
              "name": "types",
              "description": "A list of all types supported by this server.",
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "LIST",
                  "name": null,
                  "ofType": {
                    "kind": "NON_NULL",
                    "name": null,
                    "ofType": {
                      "kind": "OBJECT",
                      "name": "__Type",
                      "ofType": null
                    }
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "queryType",
              "description": "The type that query operations will be rooted at.",
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "__Type",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "mutationType",
              "description": "If this server supports mutation, the type that mutation operations will be rooted at.",
              "args": [],
              "type": {
                "kind": "OBJECT",
                "name": "__Type",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "directives",
              "description": "'A list of all directives supported by this server.",
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "LIST",
                  "name": null,
                  "ofType": {
                    "kind": "NON_NULL",
                    "name": null,
                    "ofType": {
                      "kind": "OBJECT",
                      "name": "__Directive",
                      "ofType": null
                    }
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "subscriptionType",
              "description": "'If this server support subscription, the type that subscription operations will be rooted at.",
              "args": [],
              "type": {
                "kind": "OBJECT",
                "name": "__Type",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "__Type",
          "description": null,
          "fields": [
            {
              "name": "kind",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "ENUM",
                  "name": "__TypeKind",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "name",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "description",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "fields",
              "description": null,
              "args": [
                {
                  "name": "includeDeprecated",
                  "description": null,
                  "type": {
                    "kind": "SCALAR",
                    "name": "Boolean",
                    "ofType": null
                  },
                  "defaultValue": "false"
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "NON_NULL",
                  "name": null,
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "__Field",
                    "ofType": null
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "interfaces",
              "description": null,
              "args": [],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "NON_NULL",
                  "name": null,
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "__Type",
                    "ofType": null
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "possibleTypes",
              "description": null,
              "args": [],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "NON_NULL",
                  "name": null,
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "__Type",
                    "ofType": null
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "enumValues",
              "description": null,
              "args": [
                {
                  "name": "includeDeprecated",
                  "description": null,
                  "type": {
                    "kind": "SCALAR",
                    "name": "Boolean",
                    "ofType": null
                  },
                  "defaultValue": "false"
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "NON_NULL",
                  "name": null,
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "__EnumValue",
                    "ofType": null
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "inputFields",
              "description": null,
              "args": [],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "NON_NULL",
                  "name": null,
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "__InputValue",
                    "ofType": null
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "ofType",
              "description": null,
              "args": [],
              "type": {
                "kind": "OBJECT",
                "name": "__Type",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "ENUM",
          "name": "__TypeKind",
          "description": "An enum describing what kind of type a given __Type is",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": [
            {
              "name": "SCALAR",
              "description": "Indicates this type is a scalar.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "OBJECT",
              "description": "Indicates this type is an object. `fields` and `interfaces` are valid fields.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "INTERFACE",
              "description": "Indicates this type is an interface. `fields` and `possibleTypes` are valid fields.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "UNION",
              "description": "Indicates this type is a union. `possibleTypes` is a valid field.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "ENUM",
              "description": "Indicates this type is an enum. `enumValues` is a valid field.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "INPUT_OBJECT",
              "description": "Indicates this type is an input object. `inputFields` is a valid field.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "LIST",
              "description": "Indicates this type is a list. `ofType` is a valid field.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "NON_NULL",
              "description": "Indicates this type is a non-null. `ofType` is a valid field.",
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "__Field",
          "description": null,
          "fields": [
            {
              "name": "name",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "SCALAR",
                  "name": "String",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "description",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "args",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "LIST",
                  "name": null,
                  "ofType": {
                    "kind": "NON_NULL",
                    "name": null,
                    "ofType": {
                      "kind": "OBJECT",
                      "name": "__InputValue",
                      "ofType": null
                    }
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "type",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "__Type",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "isDeprecated",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "SCALAR",
                  "name": "Boolean",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "deprecationReason",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "__InputValue",
          "description": null,
          "fields": [
            {
              "name": "name",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "SCALAR",
                  "name": "String",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "description",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "type",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "__Type",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "defaultValue",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "SCALAR",
          "name": "Boolean",
          "description": "Built-in Boolean",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "__EnumValue",
          "description": null,
          "fields": [
            {
              "name": "name",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "SCALAR",
                  "name": "String",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "description",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "isDeprecated",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "SCALAR",
                  "name": "Boolean",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "deprecationReason",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "__Directive",
          "description": null,
          "fields": [
            {
              "name": "name",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "description",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "locations",
              "description": null,
              "args": [],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "NON_NULL",
                  "name": null,
                  "ofType": {
                    "kind": "ENUM",
                    "name": "__DirectiveLocation",
                    "ofType": null
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "args",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "LIST",
                  "name": null,
                  "ofType": {
                    "kind": "NON_NULL",
                    "name": null,
                    "ofType": {
                      "kind": "OBJECT",
                      "name": "__InputValue",
                      "ofType": null
                    }
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "onOperation",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "Boolean",
                "ofType": null
              },
              "isDeprecated": true,
              "deprecationReason": "Use `locations`."
            },
            {
              "name": "onFragment",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "Boolean",
                "ofType": null
              },
              "isDeprecated": true,
              "deprecationReason": "Use `locations`."
            },
            {
              "name": "onField",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "Boolean",
                "ofType": null
              },
              "isDeprecated": true,
              "deprecationReason": "Use `locations`."
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "ENUM",
          "name": "__DirectiveLocation",
          "description": "An enum describing valid locations where a directive can be placed",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": [
            {
              "name": "QUERY",
              "description": "Indicates the directive is valid on queries.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "MUTATION",
              "description": "Indicates the directive is valid on mutations.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "FIELD",
              "description": "Indicates the directive is valid on fields.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "FRAGMENT_DEFINITION",
              "description": "Indicates the directive is valid on fragment definitions.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "FRAGMENT_SPREAD",
              "description": "Indicates the directive is valid on fragment spreads.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "INLINE_FRAGMENT",
              "description": "Indicates the directive is valid on inline fragments.",
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "possibleTypes": null
        }
      ]
    }
  }
}
```

Had to remove mutation type for it to work:

```
{
  "data": {
    "__schema": {
      "queryType": {
        "name": "QueryType"
      },
      "subscriptionType": null,
      "types": [
        {
          "kind": "OBJECT",
          "name": "QueryType",
          "description": null,
          "fields": [
            {
              "name": "Movie",
              "description": null,
              "args": [
                {
                  "name": "tagline",
                  "description": "tagline of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "title",
                  "description": "title of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "released",
                  "description": "released of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "taglines",
                  "description": "taglines is list variant of tagline of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "titles",
                  "description": "titles is list variant of title of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "releaseds",
                  "description": "releaseds is list variant of released of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_MovieOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Movie",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "Person",
              "description": null,
              "args": [
                {
                  "name": "born",
                  "description": "born of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "name",
                  "description": "name of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "borns",
                  "description": "borns is list variant of born of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "names",
                  "description": "names is list variant of name of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_PersonOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Person",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "Movie",
          "description": "Movie-Node",
          "fields": [
            {
              "name": "_id",
              "description": "internal node id",
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "ID",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "tagline",
              "description": "tagline of  Movie",
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "title",
              "description": "title of  Movie",
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "released",
              "description": "released of  Movie",
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "Long",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "Person_ACTED_IN",
              "description": "Movie Person_ACTED_IN Person",
              "args": [
                {
                  "name": "born",
                  "description": "born of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "name",
                  "description": "name of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "borns",
                  "description": "borns is list variant of born of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "names",
                  "description": "names is list variant of name of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_PersonOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Person",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "Person_PRODUCED",
              "description": "Movie Person_PRODUCED Person",
              "args": [
                {
                  "name": "born",
                  "description": "born of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "name",
                  "description": "name of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "borns",
                  "description": "borns is list variant of born of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "names",
                  "description": "names is list variant of name of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_PersonOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "OBJECT",
                "name": "Person",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "Person_DIRECTED",
              "description": "Movie Person_DIRECTED Person",
              "args": [
                {
                  "name": "born",
                  "description": "born of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "name",
                  "description": "name of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "borns",
                  "description": "borns is list variant of born of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "names",
                  "description": "names is list variant of name of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_PersonOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Person",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "Person_WROTE",
              "description": "Movie Person_WROTE Person",
              "args": [
                {
                  "name": "born",
                  "description": "born of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "name",
                  "description": "name of Person",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "borns",
                  "description": "borns is list variant of born of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "names",
                  "description": "names is list variant of name of Person",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_PersonOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "OBJECT",
                "name": "Person",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "SCALAR",
          "name": "ID",
          "description": "Built-in ID",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "SCALAR",
          "name": "String",
          "description": "Built-in String",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "SCALAR",
          "name": "Long",
          "description": "Long type",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "Person",
          "description": "Person-Node",
          "fields": [
            {
              "name": "_id",
              "description": "internal node id",
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "ID",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "born",
              "description": "born of  Person",
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "Long",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "name",
              "description": "name of  Person",
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "ACTED_IN_Movie",
              "description": "Person ACTED_IN_Movie Movie",
              "args": [
                {
                  "name": "tagline",
                  "description": "tagline of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "title",
                  "description": "title of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "released",
                  "description": "released of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "taglines",
                  "description": "taglines is list variant of tagline of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "titles",
                  "description": "titles is list variant of title of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "releaseds",
                  "description": "releaseds is list variant of released of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_MovieOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Movie",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "PRODUCED_Movie",
              "description": "Person PRODUCED_Movie Movie",
              "args": [
                {
                  "name": "tagline",
                  "description": "tagline of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "title",
                  "description": "title of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "released",
                  "description": "released of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "taglines",
                  "description": "taglines is list variant of tagline of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "titles",
                  "description": "titles is list variant of title of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "releaseds",
                  "description": "releaseds is list variant of released of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_MovieOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Movie",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "DIRECTED_Movie",
              "description": "Person DIRECTED_Movie Movie",
              "args": [
                {
                  "name": "tagline",
                  "description": "tagline of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "title",
                  "description": "title of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "released",
                  "description": "released of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "taglines",
                  "description": "taglines is list variant of tagline of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "titles",
                  "description": "titles is list variant of title of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "releaseds",
                  "description": "releaseds is list variant of released of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_MovieOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Movie",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "WROTE_Movie",
              "description": "Person WROTE_Movie Movie",
              "args": [
                {
                  "name": "tagline",
                  "description": "tagline of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "title",
                  "description": "title of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "String",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "released",
                  "description": "released of Movie",
                  "type": {
                    "kind": "SCALAR",
                    "name": "Long",
                    "ofType": null
                  },
                  "defaultValue": null
                },
                {
                  "name": "taglines",
                  "description": "taglines is list variant of tagline of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "titles",
                  "description": "titles is list variant of title of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "String",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "releaseds",
                  "description": "releaseds is list variant of released of Movie",
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Long",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                },
                {
                  "name": "orderBy",
                  "description": null,
                  "type": {
                    "kind": "LIST",
                    "name": null,
                    "ofType": {
                      "kind": "ENUM",
                      "name": "_MovieOrdering",
                      "ofType": null
                    }
                  },
                  "defaultValue": null
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Movie",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "ENUM",
          "name": "_MovieOrdering",
          "description": "Ordering Enum for Movie",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": [
            {
              "name": "tagline_asc",
              "description": "Ascending sort for tagline",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "tagline_desc",
              "description": "Descending sort for tagline",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "title_asc",
              "description": "Ascending sort for title",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "title_desc",
              "description": "Descending sort for title",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "released_asc",
              "description": "Ascending sort for released",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "released_desc",
              "description": "Descending sort for released",
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "possibleTypes": null
        },
        {
          "kind": "ENUM",
          "name": "_PersonOrdering",
          "description": "Ordering Enum for Person",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": [
            {
              "name": "born_asc",
              "description": "Ascending sort for born",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "born_desc",
              "description": "Descending sort for born",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "name_asc",
              "description": "Ascending sort for name",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "name_desc",
              "description": "Descending sort for name",
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "__Schema",
          "description": "A GraphQL Introspection defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, the entry points for query, mutation, and subscription operations.",
          "fields": [
            {
              "name": "types",
              "description": "A list of all types supported by this server.",
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "LIST",
                  "name": null,
                  "ofType": {
                    "kind": "NON_NULL",
                    "name": null,
                    "ofType": {
                      "kind": "OBJECT",
                      "name": "__Type",
                      "ofType": null
                    }
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "queryType",
              "description": "The type that query operations will be rooted at.",
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "__Type",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "mutationType",
              "description": "If this server supports mutation, the type that mutation operations will be rooted at.",
              "args": [],
              "type": {
                "kind": "OBJECT",
                "name": "__Type",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "directives",
              "description": "'A list of all directives supported by this server.",
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "LIST",
                  "name": null,
                  "ofType": {
                    "kind": "NON_NULL",
                    "name": null,
                    "ofType": {
                      "kind": "OBJECT",
                      "name": "__Directive",
                      "ofType": null
                    }
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "subscriptionType",
              "description": "'If this server support subscription, the type that subscription operations will be rooted at.",
              "args": [],
              "type": {
                "kind": "OBJECT",
                "name": "__Type",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "__Type",
          "description": null,
          "fields": [
            {
              "name": "kind",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "ENUM",
                  "name": "__TypeKind",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "name",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "description",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "fields",
              "description": null,
              "args": [
                {
                  "name": "includeDeprecated",
                  "description": null,
                  "type": {
                    "kind": "SCALAR",
                    "name": "Boolean",
                    "ofType": null
                  },
                  "defaultValue": "false"
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "NON_NULL",
                  "name": null,
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "__Field",
                    "ofType": null
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "interfaces",
              "description": null,
              "args": [],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "NON_NULL",
                  "name": null,
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "__Type",
                    "ofType": null
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "possibleTypes",
              "description": null,
              "args": [],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "NON_NULL",
                  "name": null,
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "__Type",
                    "ofType": null
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "enumValues",
              "description": null,
              "args": [
                {
                  "name": "includeDeprecated",
                  "description": null,
                  "type": {
                    "kind": "SCALAR",
                    "name": "Boolean",
                    "ofType": null
                  },
                  "defaultValue": "false"
                }
              ],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "NON_NULL",
                  "name": null,
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "__EnumValue",
                    "ofType": null
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "inputFields",
              "description": null,
              "args": [],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "NON_NULL",
                  "name": null,
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "__InputValue",
                    "ofType": null
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "ofType",
              "description": null,
              "args": [],
              "type": {
                "kind": "OBJECT",
                "name": "__Type",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "ENUM",
          "name": "__TypeKind",
          "description": "An enum describing what kind of type a given __Type is",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": [
            {
              "name": "SCALAR",
              "description": "Indicates this type is a scalar.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "OBJECT",
              "description": "Indicates this type is an object. `fields` and `interfaces` are valid fields.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "INTERFACE",
              "description": "Indicates this type is an interface. `fields` and `possibleTypes` are valid fields.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "UNION",
              "description": "Indicates this type is a union. `possibleTypes` is a valid field.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "ENUM",
              "description": "Indicates this type is an enum. `enumValues` is a valid field.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "INPUT_OBJECT",
              "description": "Indicates this type is an input object. `inputFields` is a valid field.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "LIST",
              "description": "Indicates this type is a list. `ofType` is a valid field.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "NON_NULL",
              "description": "Indicates this type is a non-null. `ofType` is a valid field.",
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "__Field",
          "description": null,
          "fields": [
            {
              "name": "name",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "SCALAR",
                  "name": "String",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "description",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "args",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "LIST",
                  "name": null,
                  "ofType": {
                    "kind": "NON_NULL",
                    "name": null,
                    "ofType": {
                      "kind": "OBJECT",
                      "name": "__InputValue",
                      "ofType": null
                    }
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "type",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "__Type",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "isDeprecated",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "SCALAR",
                  "name": "Boolean",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "deprecationReason",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "__InputValue",
          "description": null,
          "fields": [
            {
              "name": "name",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "SCALAR",
                  "name": "String",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "description",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "type",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "OBJECT",
                  "name": "__Type",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "defaultValue",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "SCALAR",
          "name": "Boolean",
          "description": "Built-in Boolean",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "__EnumValue",
          "description": null,
          "fields": [
            {
              "name": "name",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "SCALAR",
                  "name": "String",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "description",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "isDeprecated",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "SCALAR",
                  "name": "Boolean",
                  "ofType": null
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "deprecationReason",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "OBJECT",
          "name": "__Directive",
          "description": null,
          "fields": [
            {
              "name": "name",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "description",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "locations",
              "description": null,
              "args": [],
              "type": {
                "kind": "LIST",
                "name": null,
                "ofType": {
                  "kind": "NON_NULL",
                  "name": null,
                  "ofType": {
                    "kind": "ENUM",
                    "name": "__DirectiveLocation",
                    "ofType": null
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "args",
              "description": null,
              "args": [],
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "LIST",
                  "name": null,
                  "ofType": {
                    "kind": "NON_NULL",
                    "name": null,
                    "ofType": {
                      "kind": "OBJECT",
                      "name": "__InputValue",
                      "ofType": null
                    }
                  }
                }
              },
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "onOperation",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "Boolean",
                "ofType": null
              },
              "isDeprecated": true,
              "deprecationReason": "Use `locations`."
            },
            {
              "name": "onFragment",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "Boolean",
                "ofType": null
              },
              "isDeprecated": true,
              "deprecationReason": "Use `locations`."
            },
            {
              "name": "onField",
              "description": null,
              "args": [],
              "type": {
                "kind": "SCALAR",
                "name": "Boolean",
                "ofType": null
              },
              "isDeprecated": true,
              "deprecationReason": "Use `locations`."
            }
          ],
          "inputFields": null,
          "interfaces": [],
          "enumValues": null,
          "possibleTypes": null
        },
        {
          "kind": "ENUM",
          "name": "__DirectiveLocation",
          "description": "An enum describing valid locations where a directive can be placed",
          "fields": null,
          "inputFields": null,
          "interfaces": null,
          "enumValues": [
            {
              "name": "QUERY",
              "description": "Indicates the directive is valid on queries.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "MUTATION",
              "description": "Indicates the directive is valid on mutations.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "FIELD",
              "description": "Indicates the directive is valid on fields.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "FRAGMENT_DEFINITION",
              "description": "Indicates the directive is valid on fragment definitions.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "FRAGMENT_SPREAD",
              "description": "Indicates the directive is valid on fragment spreads.",
              "isDeprecated": false,
              "deprecationReason": null
            },
            {
              "name": "INLINE_FRAGMENT",
              "description": "Indicates the directive is valid on inline fragments.",
              "isDeprecated": false,
              "deprecationReason": null
            }
          ],
          "possibleTypes": null
        }
      ]
    }
  }
}
```

Simple vs Deeper Relationship

The readme states:

Currently only Node and simple Relationship queries are supported. Deeper Relationship queries and aggregations are up next.

What is meant by a Deeper Relationship query vs a Simple Relationship query? I understand aggregations are not available yet but not sure what defines a 'deeper relationship' vs a simple relationship. Is it the depth of the relationship? If so how deep does a relationship have to be to be unsupported?

Schema retrieval from Electron GraphIQL fails to parse variables

The electron graphiql client (recommended in the readme of this project) retrieves the schema for autocompletion and exploration.
That query fails with a 500.

Here's the query (from the developer tools tab):

curl 'http://localhost:7474/graphql/?query=
  query IntrospectionQuery {
    __schema {
      queryType { name }
      mutationType { name }
      subscriptionType { name }
      types {
        ...FullType
      }
      directives {
        name
        description
        locations
        args {
          ...InputValue
        }
      }
    }
  }

  fragment FullType on __Type {
    kind
    name
    description
    fields(includeDeprecated: true) {
      name
      description
      args {
        ...InputValue
      }
      type {
        ...TypeRef
      }
      isDeprecated
      deprecationReason
    }
    inputFields {
      ...InputValue
    }
    interfaces {
      ...TypeRef
    }
    enumValues(includeDeprecated: true) {
      name
      description
      isDeprecated
      deprecationReason
    }
    possibleTypes {
      ...TypeRef
    }
  }

  fragment InputValue on __InputValue {
    name
    description
    type { ...TypeRef }
    defaultValue
  }

  fragment TypeRef on __Type {
    kind
    name
    ofType {
      kind
      name
      ofType {
        kind
        name
        ofType {
          kind
          name
          ofType {
            kind
            name
            ofType {
              kind
              name
              ofType {
                kind
                name
                ofType {
                  kind
                  name
                }
              }
            }
          }
        }
      }
    }
  }
&variables="{}"' -H 'Origin: electron://graphiql-app' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: en-US' -H 'authorization: Basic bmVvNGo6YXRvbWlzdA==' -H 'content-type: application/json' -H 'Accept: */*' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) GraphiQL/0.6.1 Chrome/53.0.2785.143 Electron/1.4.13 Safari/537.36' -H 'Connection: keep-alive' --compressed

The crucial bit is &variables="{}"

This extension fails with an exception of being unable to parse that map. Because the client passed a quoted map.

Better handle it anyway.

when I run with a local version of this extension that unquotes a quoted string in GraphQLResource.parseMap(), then I get to move to on to the next error. :-)

cypher with (this) should automatically refer to current object

currently when using a cypher in the schema it requires "WITH {this} AS this" to point (this) to the current object. Better would be to automatically map (this) to current object.

from slack:

Is the (this) in a cypher always supposed to be related to the object where its used in or to the first object called?

Lets say I have a schema like this:

type User {
  name: ID!
  roles: [Roles]
}
type Roles {
  name: ID!
  project: [Project] @relation(name:"HAS_PROJECT")
  roleset: [RoleSet] @relation(name:"HAS_SET")
  write: [RoleRight] @cypher(statement:"MATCH (this)-[:HAS_SET]->(:RoleSet)-[:CAN_WRITE]->(write:RoleRight) RETURN DISTINCT write")
  read: [RoleRight] @cypher(statement:"MATCH (this)-[:HAS_SET]->(:RoleSet)-[:CAN_READ]->(read:RoleRight) RETURN DISTINCT read")
}
type RoleSet {
  name: ID!
  write: [RoleRight] @relation(name:"CAN_WRITE")
  read: [RoleRight] @relation(name:"CAN_READ")
}
type RoleRight {
  right: ID!
}
type Project {
  name: ID!
}

If I now do:

{
 User {
  name
  roles {
   write {
     right
   }
}
}

I alway get all write rights even if they are not assigned to that role.
So it seems the (this) in the cypher is not referring to the current Role object

my db currently looks like this:
the user has two roles assigned and each role has different sets assigned with different rights.
But when I do the query then all rights get returned for all roles.

Support for edge (relationship) properties

How does one query for edge (relationship) properties in graphQL for neo4j. So say I have (n:Person)-[:FRIEND]->(m:Person) where FRIEND has a Property of dateMet. How do I get dateMet back in graphQL?

@jexp Here is the query I raised on slack and was asked to add it here. Your response from Slack is below.

with interfaces (edited)
Currently we didn't support relationship properties directly out of the box.
But you can add an @cypher directive ala friends: [Person] @cypher(statement: "WITH {this} as this MATCH (this)-[fs:FRIEND]->(friend) RETURN friend { .*, dateMet:fs.dateMet, _labels : labels(friend) } as friend

support for relationship-entities is planned via relay-spec, but currently no concrete timeline

Support react relay

I am trying to implement neo4j graphql endpoint from this blog post with react relay on frontend. I am using the sample call that is in the blog


house: () => Relay.QL`
      fragment on House {
            name
            words
            founder {
              name
            }
            seats {
              name
            }
            region {
              name
            }
            follows {
              name
            }
            followers(first:10) {
              name
              seats { name }
            }
      }
    `,

with hardcoded param.

queryConfig={new AppHomeRoute({name:'House Stark of Winterfell'})}

Browser returns an error:

Server request for query AppHomeRoute failed for the following reasons:

  1. Exception while fetching data: Expected a parameter named name_0

and neo4j console logs the following

query AppHomeRoute($name_0:String!) {
House(name:$name_0) {
...F0
}
}
fragment F0 on House {
name,
id
}
{name_0="House Stark of Winterfell"}
MATCH (House:House)
WHERE House.name = {name_0}
RETURN labels(House) AS _labels
2017-08-10 11:09:22.613+0000 ERROR Errors: {}

React relay client is available at github repo with all instruction in the readme.

failing queries

{
  Tag(name: "graphcool") {
    name
    tagged(first: 5) {
      ... on Tweet {
        text
        created
      }
    }
    related {
      name
      tagged {
        ... on Repository {
          title
          language
          owner {
            name
          }
        }
      }
    }
  }
}

{
  "data": {
    "Tag": null
  },
  "errors": [
    {
      "exception": {
        "cause": null,
        "stackTrace": [
          {
            "methodName": "get",
            "fileName": "Option.scala",
            "lineNumber": 347,
            "className": "scala.None$",
            "nativeMethod": false
          },
          {
            "methodName": "get",
            "fileName": "Option.scala",
            "lineNumber": 345,
            "className": "scala.None$",
            "nativeMethod": false
          },
          {
            "methodName": "owningPipe",
            "fileName": "Expression.scala",
            "lineNumber": 59,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.commands.expressions.Expression",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "NestedPipeExpression.scala",
            "lineNumber": 33,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.commands.expressions.NestedPipeExpression",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "NullInNullOutExpression.scala",
            "lineNumber": 28,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.commands.expressions.NullInNullOutExpression",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "DesugaredMapProjection.scala",
            "lineNumber": 42,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.commands.expressions.DesugaredMapProjection$$anonfun$1",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "DesugaredMapProjection.scala",
            "lineNumber": 41,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.commands.expressions.DesugaredMapProjection$$anonfun$1",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "TraversableLike.scala",
            "lineNumber": 234,
            "className": "scala.collection.TraversableLike$$anonfun$map$1",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "TraversableLike.scala",
            "lineNumber": 234,
            "className": "scala.collection.TraversableLike$$anonfun$map$1",
            "nativeMethod": false
          },
          {
            "methodName": "foreach",
            "fileName": "Map.scala",
            "lineNumber": 188,
            "className": "scala.collection.immutable.Map$Map4",
            "nativeMethod": false
          },
          {
            "methodName": "map",
            "fileName": "TraversableLike.scala",
            "lineNumber": 234,
            "className": "scala.collection.TraversableLike$class",
            "nativeMethod": false
          },
          {
            "methodName": "map",
            "fileName": "Traversable.scala",
            "lineNumber": 104,
            "className": "scala.collection.AbstractTraversable",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "DesugaredMapProjection.scala",
            "lineNumber": 41,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.commands.expressions.DesugaredMapProjection",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "NestedPipeExpression.scala",
            "lineNumber": 34,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.commands.expressions.NestedPipeExpression$$anonfun$apply$1",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "NestedPipeExpression.scala",
            "lineNumber": 34,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.commands.expressions.NestedPipeExpression$$anonfun$apply$1",
            "nativeMethod": false
          },
          {
            "methodName": "next",
            "fileName": "Iterator.scala",
            "lineNumber": 409,
            "className": "scala.collection.Iterator$$anon$11",
            "nativeMethod": false
          },
          {
            "methodName": "foreach",
            "fileName": "Iterator.scala",
            "lineNumber": 893,
            "className": "scala.collection.Iterator$class",
            "nativeMethod": false
          },
          {
            "methodName": "foreach",
            "fileName": "Iterator.scala",
            "lineNumber": 1336,
            "className": "scala.collection.AbstractIterator",
            "nativeMethod": false
          },
          {
            "methodName": "$plus$plus$eq",
            "fileName": "Growable.scala",
            "lineNumber": 59,
            "className": "scala.collection.generic.Growable$class",
            "nativeMethod": false
          },
          {
            "methodName": "$plus$plus$eq",
            "fileName": "Vector.scala",
            "lineNumber": 732,
            "className": "scala.collection.immutable.VectorBuilder",
            "nativeMethod": false
          },
          {
            "methodName": "$plus$plus$eq",
            "fileName": "Vector.scala",
            "lineNumber": 708,
            "className": "scala.collection.immutable.VectorBuilder",
            "nativeMethod": false
          },
          {
            "methodName": "to",
            "fileName": "TraversableOnce.scala",
            "lineNumber": 310,
            "className": "scala.collection.TraversableOnce$class",
            "nativeMethod": false
          },
          {
            "methodName": "to",
            "fileName": "Iterator.scala",
            "lineNumber": 1336,
            "className": "scala.collection.AbstractIterator",
            "nativeMethod": false
          },
          {
            "methodName": "toIndexedSeq",
            "fileName": "TraversableOnce.scala",
            "lineNumber": 300,
            "className": "scala.collection.TraversableOnce$class",
            "nativeMethod": false
          },
          {
            "methodName": "toIndexedSeq",
            "fileName": "Iterator.scala",
            "lineNumber": 1336,
            "className": "scala.collection.AbstractIterator",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "NestedPipeExpression.scala",
            "lineNumber": 34,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.commands.expressions.NestedPipeExpression",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "DesugaredMapProjection.scala",
            "lineNumber": 42,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.commands.expressions.DesugaredMapProjection$$anonfun$1",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "DesugaredMapProjection.scala",
            "lineNumber": 41,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.commands.expressions.DesugaredMapProjection$$anonfun$1",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "TraversableLike.scala",
            "lineNumber": 234,
            "className": "scala.collection.TraversableLike$$anonfun$map$1",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "TraversableLike.scala",
            "lineNumber": 234,
            "className": "scala.collection.TraversableLike$$anonfun$map$1",
            "nativeMethod": false
          },
          {
            "methodName": "foreach",
            "fileName": "Map.scala",
            "lineNumber": 161,
            "className": "scala.collection.immutable.Map$Map3",
            "nativeMethod": false
          },
          {
            "methodName": "map",
            "fileName": "TraversableLike.scala",
            "lineNumber": 234,
            "className": "scala.collection.TraversableLike$class",
            "nativeMethod": false
          },
          {
            "methodName": "map",
            "fileName": "Traversable.scala",
            "lineNumber": 104,
            "className": "scala.collection.AbstractTraversable",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "DesugaredMapProjection.scala",
            "lineNumber": 41,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.commands.expressions.DesugaredMapProjection",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "ExtractFunction.scala",
            "lineNumber": 36,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.commands.expressions.ExtractFunction$$anonfun$compute$1",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "TraversableLike.scala",
            "lineNumber": 234,
            "className": "scala.collection.TraversableLike$$anonfun$map$1",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "TraversableLike.scala",
            "lineNumber": 234,
            "className": "scala.collection.TraversableLike$$anonfun$map$1",
            "nativeMethod": false
          },
          {
            "methodName": "foreach",
            "fileName": "Iterator.scala",
            "lineNumber": 893,
            "className": "scala.collection.Iterator$class",
            "nativeMethod": false
          },
          {
            "methodName": "foreach",
            "fileName": "JavaListWrapper.scala",
            "lineNumber": 35,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.helpers.JavaListWrapper$$anon$1",
            "nativeMethod": false
          },
          {
            "methodName": "foreach",
            "fileName": "IterableLike.scala",
            "lineNumber": 72,
            "className": "scala.collection.IterableLike$class",
            "nativeMethod": false
          },
          {
            "methodName": "foreach",
            "fileName": "JavaListWrapper.scala",
            "lineNumber": 31,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.helpers.JavaListWrapper",
            "nativeMethod": false
          },
          {
            "methodName": "map",
            "fileName": "TraversableLike.scala",
            "lineNumber": 234,
            "className": "scala.collection.TraversableLike$class",
            "nativeMethod": false
          },
          {
            "methodName": "map",
            "fileName": "JavaListWrapper.scala",
            "lineNumber": 31,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.helpers.JavaListWrapper",
            "nativeMethod": false
          },
          {
            "methodName": "compute",
            "fileName": "ExtractFunction.scala",
            "lineNumber": 33,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.commands.expressions.ExtractFunction",
            "nativeMethod": false
          },
          {
            "methodName": "compute",
            "fileName": "ExtractFunction.scala",
            "lineNumber": 28,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.commands.expressions.ExtractFunction",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "NullInNullOutExpression.scala",
            "lineNumber": 30,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.commands.expressions.NullInNullOutExpression",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "ProjectionPipe.scala",
            "lineNumber": 49,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.pipes.ProjectionPipe$$anonfun$internalCreateResults$1$$anonfun$apply$1",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "ProjectionPipe.scala",
            "lineNumber": 47,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.pipes.ProjectionPipe$$anonfun$internalCreateResults$1$$anonfun$apply$1",
            "nativeMethod": false
          },
          {
            "methodName": "foreach",
            "fileName": "Map.scala",
            "lineNumber": 188,
            "className": "scala.collection.immutable.Map$Map4",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "ProjectionPipe.scala",
            "lineNumber": 47,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.pipes.ProjectionPipe$$anonfun$internalCreateResults$1",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "ProjectionPipe.scala",
            "lineNumber": 46,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.pipes.ProjectionPipe$$anonfun$internalCreateResults$1",
            "nativeMethod": false
          },
          {
            "methodName": "next",
            "fileName": "Iterator.scala",
            "lineNumber": 409,
            "className": "scala.collection.Iterator$$anon$11",
            "nativeMethod": false
          },
          {
            "methodName": "next",
            "fileName": "Iterator.scala",
            "lineNumber": 409,
            "className": "scala.collection.Iterator$$anon$11",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "ResultIterator.scala",
            "lineNumber": 71,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.ClosingIterator$$anonfun$next$1",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "ResultIterator.scala",
            "lineNumber": 68,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.ClosingIterator$$anonfun$next$1",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "ResultIterator.scala",
            "lineNumber": 94,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.ClosingIterator$$anonfun$failIfThrows$1",
            "nativeMethod": false
          },
          {
            "methodName": "decoratedCypherException",
            "fileName": "ResultIterator.scala",
            "lineNumber": 103,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.ClosingIterator",
            "nativeMethod": false
          },
          {
            "methodName": "failIfThrows",
            "fileName": "ResultIterator.scala",
            "lineNumber": 92,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.ClosingIterator",
            "nativeMethod": false
          },
          {
            "methodName": "next",
            "fileName": "ResultIterator.scala",
            "lineNumber": 68,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.ClosingIterator",
            "nativeMethod": false
          },
          {
            "methodName": "next",
            "fileName": "ResultIterator.scala",
            "lineNumber": 49,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.ClosingIterator",
            "nativeMethod": false
          },
          {
            "methodName": "next",
            "fileName": "PipeExecutionResult.scala",
            "lineNumber": 79,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.PipeExecutionResult",
            "nativeMethod": false
          },
          {
            "methodName": "next",
            "fileName": "PipeExecutionResult.scala",
            "lineNumber": 69,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.PipeExecutionResult$$anon$2",
            "nativeMethod": false
          },
          {
            "methodName": "next",
            "fileName": "PipeExecutionResult.scala",
            "lineNumber": 66,
            "className": "org.neo4j.cypher.internal.compiler.v3_1.PipeExecutionResult$$anon$2",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "ClosingExecutionResult.scala",
            "lineNumber": 62,
            "className": "org.neo4j.cypher.internal.compatibility.ClosingExecutionResult$$anon$1$$anonfun$next$1",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "ClosingExecutionResult.scala",
            "lineNumber": 61,
            "className": "org.neo4j.cypher.internal.compatibility.ClosingExecutionResult$$anon$1$$anonfun$next$1",
            "nativeMethod": false
          },
          {
            "methodName": "apply",
            "fileName": "CompatibilityFor3_1.scala",
            "lineNumber": 192,
            "className": "org.neo4j.cypher.internal.compatibility.exceptionHandlerFor3_1$runSafely$",
            "nativeMethod": false
          },
          {
            "methodName": "next",
            "fileName": "ClosingExecutionResult.scala",
            "lineNumber": 61,
            "className": "org.neo4j.cypher.internal.compatibility.ClosingExecutionResult$$anon$1",
            "nativeMethod": false
          },
          {
            "methodName": "next",
            "fileName": "ClosingExecutionResult.scala",
            "lineNumber": 55,
            "className": "org.neo4j.cypher.internal.compatibility.ClosingExecutionResult$$anon$1",
            "nativeMethod": false
          },
          {
            "methodName": "next",
            "fileName": "ExecutionResult.java",
            "lineNumber": 241,
            "className": "org.neo4j.cypher.internal.javacompat.ExecutionResult",
            "nativeMethod": false
          },
          {
            "methodName": "next",
            "fileName": "ExecutionResult.java",
            "lineNumber": 54,
            "className": "org.neo4j.cypher.internal.javacompat.ExecutionResult",
            "nativeMethod": false
          },
          {
            "methodName": "addToCollection",
            "fileName": "Iterators.java",
            "lineNumber": 277,
            "className": "org.neo4j.helpers.collection.Iterators",
            "nativeMethod": false
          },
          {
            "methodName": "asList",
            "fileName": "Iterators.java",
            "lineNumber": 393,
            "className": "org.neo4j.helpers.collection.Iterators",
            "nativeMethod": false
          },
          {
            "methodName": "fetchGraphData",
            "fileName": "GraphQLSchemaBuilder.kt",
            "lineNumber": 514,
            "className": "org.neo4j.graphql.GraphQLSchemaBuilder",
            "nativeMethod": false
          },
          {
            "methodName": "access$fetchGraphData",
            "fileName": "GraphQLSchemaBuilder.kt",
            "lineNumber": 16,
            "className": "org.neo4j.graphql.GraphQLSchemaBuilder",
            "nativeMethod": false
          },
          {
            "methodName": "get",
            "fileName": "GraphQLSchemaBuilder.kt",
            "lineNumber": 370,
            "className": "org.neo4j.graphql.GraphQLSchemaBuilder$queryFields$$inlined$map$lambda$1",
            "nativeMethod": false
          },
          {
            "methodName": "get",
            "fileName": "GraphQLSchemaBuilder.kt",
            "lineNumber": 16,
            "className": "org.neo4j.graphql.GraphQLSchemaBuilder$queryFields$$inlined$map$lambda$1",
            "nativeMethod": false
          },
          {
            "methodName": "resolveField",
            "fileName": "ExecutionStrategy.java",
            "lineNumber": 66,
            "className": "graphql.execution.ExecutionStrategy",
            "nativeMethod": false
          },
          {
            "methodName": "execute",
            "fileName": "SimpleExecutionStrategy.java",
            "lineNumber": 18,
            "className": "graphql.execution.SimpleExecutionStrategy",
            "nativeMethod": false
          },
          {
            "methodName": "executeOperation",
            "fileName": "Execution.java",
            "lineNumber": 85,
            "className": "graphql.execution.Execution",
            "nativeMethod": false
          },
          {
            "methodName": "execute",
            "fileName": "Execution.java",
            "lineNumber": 44,
            "className": "graphql.execution.Execution",
            "nativeMethod": false
          },
          {
            "methodName": "execute",
            "fileName": "GraphQL.java",
            "lineNumber": 201,
            "className": "graphql.GraphQL",
            "nativeMethod": false
          },
          {
            "methodName": "execute",
            "fileName": "GraphQL.java",
            "lineNumber": 166,
            "className": "graphql.GraphQL",
            "nativeMethod": false
          },
          {
            "methodName": "executeQuery",
            "fileName": "GraphQLResource.kt",
            "lineNumber": 66,
            "className": "org.neo4j.graphql.GraphQLResource",
            "nativeMethod": false
          },
          {
            "methodName": "executeOperation",
            "fileName": "GraphQLResource.kt",
            "lineNumber": 43,
            "className": "org.neo4j.graphql.GraphQLResource",
            "nativeMethod": false
          },
          {
            "methodName": "invoke",
            "fileName": null,
            "lineNumber": -1,
            "className": "sun.reflect.GeneratedMethodAccessor242",
            "nativeMethod": false
          },
          {
            "methodName": "invoke",
            "fileName": "DelegatingMethodAccessorImpl.java",
            "lineNumber": 43,
            "className": "sun.reflect.DelegatingMethodAccessorImpl",
            "nativeMethod": false
          },
          {
            "methodName": "invoke",
            "fileName": "Method.java",
            "lineNumber": 498,
            "className": "java.lang.reflect.Method",
            "nativeMethod": false
          },
          {
            "methodName": "invoke",
            "fileName": "JavaMethodInvokerFactory.java",
            "lineNumber": 60,
            "className": "com.sun.jersey.spi.container.JavaMethodInvokerFactory$1",
            "nativeMethod": false
          },
          {
            "methodName": "_dispatch",
            "fileName": "AbstractResourceMethodDispatchProvider.java",
            "lineNumber": 205,
            "className": "com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker",
            "nativeMethod": false
          },
          {
            "methodName": "dispatch",
            "fileName": "ResourceJavaMethodDispatcher.java",
            "lineNumber": 75,
            "className": "com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher",
            "nativeMethod": false
          },
          {
            "methodName": "dispatch",
            "fileName": "TransactionalRequestDispatcher.java",
            "lineNumber": 147,
            "className": "org.neo4j.server.rest.transactional.TransactionalRequestDispatcher",
            "nativeMethod": false
          },
          {
            "methodName": "accept",
            "fileName": "HttpMethodRule.java",
            "lineNumber": 302,
            "className": "com.sun.jersey.server.impl.uri.rules.HttpMethodRule",
            "nativeMethod": false
          },
          {
            "methodName": "accept",
            "fileName": "ResourceClassRule.java",
            "lineNumber": 108,
            "className": "com.sun.jersey.server.impl.uri.rules.ResourceClassRule",
            "nativeMethod": false
          },
          {
            "methodName": "accept",
            "fileName": "RightHandPathRule.java",
            "lineNumber": 147,
            "className": "com.sun.jersey.server.impl.uri.rules.RightHandPathRule",
            "nativeMethod": false
          },
          {
            "methodName": "accept",
            "fileName": "RootResourceClassesRule.java",
            "lineNumber": 84,
            "className": "com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule",
            "nativeMethod": false
          },
          {
            "methodName": "_handleRequest",
            "fileName": "WebApplicationImpl.java",
            "lineNumber": 1542,
            "className": "com.sun.jersey.server.impl.application.WebApplicationImpl",
            "nativeMethod": false
          },
          {
            "methodName": "_handleRequest",
            "fileName": "WebApplicationImpl.java",
            "lineNumber": 1473,
            "className": "com.sun.jersey.server.impl.application.WebApplicationImpl",
            "nativeMethod": false
          },
          {
            "methodName": "handleRequest",
            "fileName": "WebApplicationImpl.java",
            "lineNumber": 1419,
            "className": "com.sun.jersey.server.impl.application.WebApplicationImpl",
            "nativeMethod": false
          },
          {
            "methodName": "handleRequest",
            "fileName": "WebApplicationImpl.java",
            "lineNumber": 1409,
            "className": "com.sun.jersey.server.impl.application.WebApplicationImpl",
            "nativeMethod": false
          },
          {
            "methodName": "service",
            "fileName": "WebComponent.java",
            "lineNumber": 409,
            "className": "com.sun.jersey.spi.container.servlet.WebComponent",
            "nativeMethod": false
          },
          {
            "methodName": "service",
            "fileName": "ServletContainer.java",
            "lineNumber": 558,
            "className": "com.sun.jersey.spi.container.servlet.ServletContainer",
            "nativeMethod": false
          },
          {
            "methodName": "service",
            "fileName": "ServletContainer.java",
            "lineNumber": 733,
            "className": "com.sun.jersey.spi.container.servlet.ServletContainer",
            "nativeMethod": false
          },
          {
            "methodName": "service",
            "fileName": "HttpServlet.java",
            "lineNumber": 790,
            "className": "javax.servlet.http.HttpServlet",
            "nativeMethod": false
          },
          {
            "methodName": "handle",
            "fileName": "ServletHolder.java",
            "lineNumber": 808,
            "className": "org.eclipse.jetty.servlet.ServletHolder",
            "nativeMethod": false
          },
          {
            "methodName": "doFilter",
            "fileName": "ServletHandler.java",
            "lineNumber": 1669,
            "className": "org.eclipse.jetty.servlet.ServletHandler$CachedChain",
            "nativeMethod": false
          },
          {
            "methodName": "doFilter",
            "fileName": "AuthorizationEnabledFilter.java",
            "lineNumber": 122,
            "className": "org.neo4j.server.rest.dbms.AuthorizationEnabledFilter",
            "nativeMethod": false
          },
          {
            "methodName": "doFilter",
            "fileName": "ServletHandler.java",
            "lineNumber": 1652,
            "className": "org.eclipse.jetty.servlet.ServletHandler$CachedChain",
            "nativeMethod": false
          },
          {
            "methodName": "doFilter",
            "fileName": "CollectUserAgentFilter.java",
            "lineNumber": 69,
            "className": "org.neo4j.server.rest.web.CollectUserAgentFilter",
            "nativeMethod": false
          },
          {
            "methodName": "doFilter",
            "fileName": "ServletHandler.java",
            "lineNumber": 1652,
            "className": "org.eclipse.jetty.servlet.ServletHandler$CachedChain",
            "nativeMethod": false
          },
          {
            "methodName": "doHandle",
            "fileName": "ServletHandler.java",
            "lineNumber": 585,
            "className": "org.eclipse.jetty.servlet.ServletHandler",
            "nativeMethod": false
          },
          {
            "methodName": "doHandle",
            "fileName": "SessionHandler.java",
            "lineNumber": 221,
            "className": "org.eclipse.jetty.server.session.SessionHandler",
            "nativeMethod": false
          },
          {
            "methodName": "doHandle",
            "fileName": "ContextHandler.java",
            "lineNumber": 1127,
            "className": "org.eclipse.jetty.server.handler.ContextHandler",
            "nativeMethod": false
          },
          {
            "methodName": "doScope",
            "fileName": "ServletHandler.java",
            "lineNumber": 515,
            "className": "org.eclipse.jetty.servlet.ServletHandler",
            "nativeMethod": false
          },
          {
            "methodName": "doScope",
            "fileName": "SessionHandler.java",
            "lineNumber": 185,
            "className": "org.eclipse.jetty.server.session.SessionHandler",
            "nativeMethod": false
          },
          {
            "methodName": "doScope",
            "fileName": "ContextHandler.java",
            "lineNumber": 1061,
            "className": "org.eclipse.jetty.server.handler.ContextHandler",
            "nativeMethod": false
          },
          {
            "methodName": "handle",
            "fileName": "ScopedHandler.java",
            "lineNumber": 141,
            "className": "org.eclipse.jetty.server.handler.ScopedHandler",
            "nativeMethod": false
          },
          {
            "methodName": "handle",
            "fileName": "HandlerList.java",
            "lineNumber": 52,
            "className": "org.eclipse.jetty.server.handler.HandlerList",
            "nativeMethod": false
          },
          {
            "methodName": "handle",
            "fileName": "HandlerWrapper.java",
            "lineNumber": 97,
            "className": "org.eclipse.jetty.server.handler.HandlerWrapper",
            "nativeMethod": false
          },
          {
            "methodName": "handle",
            "fileName": "Server.java",
            "lineNumber": 497,
            "className": "org.eclipse.jetty.server.Server",
            "nativeMethod": false
          },
          {
            "methodName": "handle",
            "fileName": "HttpChannel.java",
            "lineNumber": 310,
            "className": "org.eclipse.jetty.server.HttpChannel",
            "nativeMethod": false
          },
          {
            "methodName": "onFillable",
            "fileName": "HttpConnection.java",
            "lineNumber": 257,
            "className": "org.eclipse.jetty.server.HttpConnection",
            "nativeMethod": false
          },
          {
            "methodName": "run",
            "fileName": "AbstractConnection.java",
            "lineNumber": 540,
            "className": "org.eclipse.jetty.io.AbstractConnection$2",
            "nativeMethod": false
          },
          {
            "methodName": "runJob",
            "fileName": "QueuedThreadPool.java",
            "lineNumber": 635,
            "className": "org.eclipse.jetty.util.thread.QueuedThreadPool",
            "nativeMethod": false
          },
          {
            "methodName": "run",
            "fileName": "QueuedThreadPool.java",
            "lineNumber": 555,
            "className": "org.eclipse.jetty.util.thread.QueuedThreadPool$3",
            "nativeMethod": false
          },
          {
            "methodName": "run",
            "fileName": "Thread.java",
            "lineNumber": 748,
            "className": "java.lang.Thread",
            "nativeMethod": false
          }
        ],
        "message": "None.get",
        "localizedMessage": "None.get",
        "suppressed": []
      },
      "locations": null,
      "errorType": "DataFetchingException",
      "message": "Exception while fetching data: None.get"
    }
  ]
}

Unknown field type class [Ljava.lang.String;

I am getting this exception yet the method throwing should be accounting for this type?

    private fun graphQlInType(type: Class<*>): GraphQLInputType {
        if (type == String::class.java) return GraphQLString
        if (Number::class.java.isAssignableFrom(type)) {
            if (type == Double::class.java || type == Double::class.javaObjectType || type == Float::class.java || type == Float::class.javaObjectType) return Scalars.GraphQLFloat
            return Scalars.GraphQLLong
        }
        if (type == Boolean::class.java || type == Boolean::class.javaObjectType) return Scalars.GraphQLBoolean
        if (type.javaClass.isArray) {
            return GraphQLList(graphQlInType(type.componentType))
        }
        throw IllegalArgumentException("Unknown field type " + type)
    }
java.lang.IllegalArgumentException: Unknown field type class [Ljava.lang.String;
        at org.neo4j.graphql.GraphQLSchemaBuilder.graphQlInType(GraphQLSchemaBuilder.kt:160)
        at org.neo4j.graphql.GraphQLSchemaBuilder.propertiesAsArguments$neo4j_graphql(GraphQLSchemaBuilder.kt:194)
        at org.neo4j.graphql.GraphQLSchemaBuilder.newReferenceField(GraphQLSchemaBuilder.kt:83)
        at org.neo4j.graphql.GraphQLSchemaBuilder.addRelationships(GraphQLSchemaBuilder.kt:58)
        at org.neo4j.graphql.GraphQLSchemaBuilder.toGraphQL(GraphQLSchemaBuilder.kt:51)
        at org.neo4j.graphql.GraphQLSchemaBuilder.queryFields(GraphQLSchemaBuilder.kt:167)
        at org.neo4j.graphql.GraphQLSchemaBuilder$Companion.buildSchema(GraphQLSchemaBuilder.kt:131)
        at org.neo4j.graphql.GraphSchema.getGraphQL(GraphSchema.kt:16)
        at org.neo4j.graphql.GraphQLResource.executeQuery(GraphQLResource.kt:55)
        at org.neo4j.graphql.GraphQLResource.get(GraphQLResource.kt:40)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
        at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)
        at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
        at org.neo4j.server.rest.transactional.TransactionalRequestDispatcher.dispatch(TransactionalRequestDispatcher.java:144)
        at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
        at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
        at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
        at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
        at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
        at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
        at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
        at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
        at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
        at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
        at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
        at org.neo4j.server.rest.web.CollectUserAgentFilter.doFilter(CollectUserAgentFilter.java:69)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
        at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
        at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:95)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
        at org.eclipse.jetty.server.Server.handle(Server.java:497)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
        at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
        at java.lang.Thread.run(Thread.java:745)

Support for Directives

Support for Directives, e.g. to specify the cypher compiler or runtime? or special handling for certain fields or types

Invalid schema created when node has no properties

here's a simple reproduction:

create (b: Blackberry) -[:COLOR]-> (c: Yes { name: "purple"})

then open the client and click "Docs" to open the schema browser.
the electron graphql client says, when it tries to load the schema for its browsering:
Error: _BlackberryOrdering values must be an object with value names as keys.

This is also happening when I specify a schema, when it contains nodes with no properties. (This one is a serious problem for us)

Issues with graphql schema formatting

I have been storing data with Neo4j, and now would like to model a graphql schema compatible with both relay and neo4j-graphql.

I'm currently testing my schema based off a sample data returned from a neo4j query, but am not getting a valid response with sample data. After reading the docs, I am using the schema below.

Above you can see the PERFORMED_FOR_Affiliation is null, though it is defined in the schema as an Affiliation type.

type Query {
      affiliations(affn_id: ID): [Affiliation]
      performances(pfrm_id: ID): [Performance]
      PERFORMED_FOR_Affiliation(affn_id: ID): Affiliation
      Performance_PERFORMED_FOR(pfrm_id: ID): Performance
    }

PERFORMED_FOR_Affiliation query is similar to an affiliations query only the relationship should return only 1 affiliation (with a matching uid).

I assume affn_id is not being passed down correctly and not sure how to do that properly. Does the PERFORMED_FOR_Affiliation need its own schema. I've seen relay uses graqhql schemas for 'nodes' and 'edge' types.

Schema

type Performance {
    pfrm_id: ID!
    mark: Int
    affn_id: String
    PERFORMED_FOR_Affiliation: Affiliation
}

type Affiliation {
    Performance_PERFORMED_FOR: Performance 
    affn_id: ID!
    name: String
}

I'm only testing the queries on static data w/o neo4j-graphql. Is there something I'm missing?

Also, What are fundamental differences with neo4j schema vs graphql?

Line break in mutation cypher query possible?

Is it possible to have line breaks in a mutation cypher query in my schema?
I would like to write my mutation cypher queries over multiple line so that the schema is easier to read.
But if I just hit enter then the graphql/idl won't work

Mutations

Hi,

First, I'd like to thank you very much for this great project!

I am trying to implement it; it works very fine for query. But what about mutation?

Is there any way to push mutation through "neo4j-graphql"? How do we alter the schema to add a mutation?

Many thanks,

Calling nested graphql queries fails at @relation

My Schema:

interface Person {
    name: ID!
    surname: String
    born: Int
    email: [EmailAddress] @relation(name:"MAILS_TO", direction:"IN")
}
interface EmailAddress {
    address: ID!
    description: String
}

When I do the following graphql request the neo4j-graphql seems to fail:

{
  Person {
  name
  surname
  email {
    address
  }
  }
}

Leaving the "mail {...}" part away it works but as soon I reference to any other type/interface it fails.
When taking the created cypher from the log file and entering it into the neo4j browser it works and I get my result displayed as expected including the email address.

Log of my Neo4j Server:

{
  Person {
  name
  surname
  email {
    address
  }
  }
}
{}
MATCH (`Person`:`Person`)
RETURN labels(`Person`) AS `_labels`,
`Person`.`name` AS `name`,
`Person`.`surname` AS `surname`,
[ (`Person`)<-[:`MAILS_TO`]-(`Person_email`:`EmailAddress`)  | `Person_email` {`_labels` : labels(`Person_email`), .`address`}] AS `email`
2017-08-25 20:40:49.770+0000 ERROR The RuntimeException could not be mapped to a response, re-throwing to the HTTP container graphql.schema.GraphQLTypeReference cannot be cast to graphql.schema.GraphQLObjectType
java.lang.ClassCastException: graphql.schema.GraphQLTypeReference cannot be cast to graphql.schema.GraphQLObjectType
	at graphql.execution.ExecutionStrategy.completeValue(ExecutionStrategy.java:167)
	at graphql.execution.ExecutionStrategy.completeValueForList(ExecutionStrategy.java:237)
	at graphql.execution.ExecutionStrategy.completeValue(ExecutionStrategy.java:140)
	at graphql.execution.ExecutionStrategy.resolveField(ExecutionStrategy.java:120)
	at graphql.execution.SimpleExecutionStrategy.execute(SimpleExecutionStrategy.java:19)
	at graphql.execution.ExecutionStrategy.completeValue(ExecutionStrategy.java:184)
	at graphql.execution.ExecutionStrategy.completeValueForList(ExecutionStrategy.java:237)
	at graphql.execution.ExecutionStrategy.completeValue(ExecutionStrategy.java:140)
	at graphql.execution.ExecutionStrategy.resolveField(ExecutionStrategy.java:120)
	at graphql.execution.SimpleExecutionStrategy.execute(SimpleExecutionStrategy.java:19)
	at graphql.execution.Execution.executeOperation(Execution.java:106)
	at graphql.execution.Execution.execute(Execution.java:49)
	at graphql.GraphQL.execute(GraphQL.java:222)
	at graphql.GraphQL.execute(GraphQL.java:187)
	at org.neo4j.graphql.GraphQLResource.executeQuery(GraphQLResource.kt:68)
	at org.neo4j.graphql.GraphQLResource.executeOperation(GraphQLResource.kt:43)
	at sun.reflect.GeneratedMethodAccessor101.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
	at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)
	at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
	at org.neo4j.server.rest.transactional.TransactionalRequestDispatcher.dispatch(TransactionalRequestDispatcher.java:147)
	at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
	at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
	at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
	at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
	at org.neo4j.server.rest.dbms.AuthorizationEnabledFilter.doFilter(AuthorizationEnabledFilter.java:122)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
	at org.neo4j.server.rest.web.CollectUserAgentFilter.doFilter(CollectUserAgentFilter.java:69)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
	at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
	at org.eclipse.jetty.server.Server.handle(Server.java:497)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
	at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
	at java.lang.Thread.run(Thread.java:748)
2017-08-25 20:40:49.771+0000 WARN  /graphql/ graphql.schema.GraphQLTypeReference cannot be cast to graphql.schema.GraphQLObjectType
java.lang.ClassCastException: graphql.schema.GraphQLTypeReference cannot be cast to graphql.schema.GraphQLObjectType
	at graphql.execution.ExecutionStrategy.completeValue(ExecutionStrategy.java:167)
	at graphql.execution.ExecutionStrategy.completeValueForList(ExecutionStrategy.java:237)
	at graphql.execution.ExecutionStrategy.completeValue(ExecutionStrategy.java:140)
	at graphql.execution.ExecutionStrategy.resolveField(ExecutionStrategy.java:120)
	at graphql.execution.SimpleExecutionStrategy.execute(SimpleExecutionStrategy.java:19)
	at graphql.execution.ExecutionStrategy.completeValue(ExecutionStrategy.java:184)
	at graphql.execution.ExecutionStrategy.completeValueForList(ExecutionStrategy.java:237)
	at graphql.execution.ExecutionStrategy.completeValue(ExecutionStrategy.java:140)
	at graphql.execution.ExecutionStrategy.resolveField(ExecutionStrategy.java:120)
	at graphql.execution.SimpleExecutionStrategy.execute(SimpleExecutionStrategy.java:19)
	at graphql.execution.Execution.executeOperation(Execution.java:106)
	at graphql.execution.Execution.execute(Execution.java:49)
	at graphql.GraphQL.execute(GraphQL.java:222)
	at graphql.GraphQL.execute(GraphQL.java:187)
	at org.neo4j.graphql.GraphQLResource.executeQuery(GraphQLResource.kt:68)
	at org.neo4j.graphql.GraphQLResource.executeOperation(GraphQLResource.kt:43)
	at sun.reflect.GeneratedMethodAccessor101.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
	at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)
	at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
	at org.neo4j.server.rest.transactional.TransactionalRequestDispatcher.dispatch(TransactionalRequestDispatcher.java:147)
	at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
	at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
	at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
	at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
	at org.neo4j.server.rest.dbms.AuthorizationEnabledFilter.doFilter(AuthorizationEnabledFilter.java:122)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
	at org.neo4j.server.rest.web.CollectUserAgentFilter.doFilter(CollectUserAgentFilter.java:69)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
	at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
	at org.eclipse.jetty.server.Server.handle(Server.java:497)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
	at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
	at java.lang.Thread.run(Thread.java:748)

Support for Multiple Labels on Nodes

Is there or will there be support for Multiple Labels on Nodes. For example, I'm trying to implement Multi-Tenancy via the use of Labels as was suggested via the dev teams. This is a reasonable idea and is supported in the OGM. So I would have a Node Person with an additional dynamically added label CompanyA. Can I do this in GraphQL?

@jexp Here is the query I raised on slack and was asked to add it here. Your response from Slack is below.
we could add "labels" as an additional virtual field and parameter, so you can output it and also query for additional labels

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.