## 18.1. Meta Graph

Returns a virtual graph that represents the labels and relationship-types available in your database and how they are connected.

Table 18.1. Procedures
`CALL apoc.meta.graphSample()` | examines the database statistics to build the meta graph, very fast, might report extra relationships
`CALL apoc.meta.graph` | examines the database statistics to create the meta-graph, post filters extra relationships by sampling
`CALL apoc.meta.subGraph({labels:[labels],rels:[rel-types],excludes:[label,rel-type,…​]})` | examines a sample sub graph to create the meta-graph
`CALL apoc.meta.data` | examines a subset of the graph to provide a tabular meta information
`CALL apoc.meta.schema` | examines a subset of the graph to provide a map-like meta information
`CALL apoc.meta.stats yield labelCount, relTypeCount, propertyKeyCount, nodeCount, relCount, labels, relTypes, stats` | returns the information stored in the transactional database statistics
`CALL apoc.meta.nodeTypeProperties({includeLabels:[label,…​],includeRels:[rel-type,…​],excludeLabels:[label,,…​],excludeRels:[rel-type,…​]})` | replaces built-in function for node property schema to provide a sample-based result for high performance - used by the Neo4J BI Connector
`CALL apoc.meta.relTypeProperties({includeLabels:[label,…​],includeRels:[rel-type,…​],excludeLabels:[label,…​],excludeRels:[rel-type,…​]})` | replaces built-in function for relationship property schema to provide a sample-based result for high performance - used by the Neo4J BI Connector

Table 18.2. Functions
`apoc.meta.cypher.type(value)` | type name of a value (`INTEGER,FLOAT,STRING,BOOLEAN,RELATIONSHIP,NODE,PATH,NULL,MAP,LIST OF <TYPE>,POINT,DATE,DATE_TIME,LOCAL_TIME,LOCAL_DATE_TIME,TIME,DURATION`)
`apoc.meta.cypher.isType(value,type)` | returns a row if type name matches none if not
`apoc.meta.cypher.types(node or relationship or map)` | returns a a map of property-keys to their names

In the case of `LIST` you may have many results, depending on the content. In the event that all contents are of the same type, will you have the `LIST OF <TYPE>`, otherwise if the type is different, will you get `LIST OF ANY`

If no type was found, the function return name of the class.

Table 18.3. Functions Deprecated
`apoc.meta.type(value)` | type name of a value (`INTEGER,FLOAT,STRING,BOOLEAN,RELATIONSHIP,NODE,PATH,NULL,MAP,LIST`)
`apoc.meta.isType(value,type)` | returns a row if type name matches none if not
`apoc.meta.types(node or relationship or map)` | returns a a map of property-keys to their names

If no type was found, the function return name of the class.

isType example.

    MATCH (n:Person)
    RETURN apoc.meta.isType(n.age,"INTEGER") as ageType