TuringDB home pagelight logodark logo
  • Discord
  • GitHub
  • Website
TuringDB

Get Started

  • Introduction
  • Get Started
  • Claude Code Skill
  • Commands

Concepts

  • Overview
  • A Columnar Graph Database
  • Versioning System
  • The DataPart System
  • Zero-Locking Architecture
  • Snapshots Isolation

Benchmarks

  • Results Summary
  • Technical Report

Query Language

  • Query Language
  • CheatSheet

Importing data

  • JSONL
  • CSV
  • Neo4j
  • GML
  • Parquet

Graph Development

  • Create Graph
  • Load Graph
  • Load External data
  • Create a Change
  • List Changes
  • Create Nodes and Edges
  • Update Properties
  • Submit a Change
  • Time Travel
  • Graph Examples

Vector Search

  • Vector Search

Graph Algorithms

  • Shortest Path

Tutorials

  • Example Notebooks

Python SDK

  • Get Started
  • Reference

Troubleshooting

  • Troubleshooting

  • Expected file format
  • Import steps
  • Verify the import
Importing data

Import a GML file

Load a GML graph file into TuringDB

Graph Modeling Language (GML) is a widely used format for describing graphs. TuringDB supports importing GML files natively via the LOAD GML command.

​
Expected file format

graph [
  node [ id 0  label "Alice"  type "Person"  age 30 ]
  node [ id 1  label "Bob"    type "Person"  age 25 ]
  node [ id 2  label "Acme"   type "Company"        ]
  edge [ source 0  target 1  weight 1.0 ]
  edge [ source 0  target 2  weight 0.8 ]
]

Nodes:

FieldRequirement
idRequired. Unique non-negative integer.
other fieldsOptional. Stored as node properties.

Edges:

FieldRequirement
source / targetRequired. Must reference the id of a node defined in the same file.
other fieldsOptional. Stored as edge properties.

Supported property value types: String, Integer, Double, Boolean. All property values are stored as strings in the TuringDB graph regardless of their original type in the GML file.

All imported nodes are assigned the label GMLNode and all edges the type GMLEdge, regardless of any fields present in the file. Any field other than id, source, and target is treated as a plain property. To query your data after import, use MATCH (n:GMLNode) and MATCH ()-[e:GMLEdge]->().

​
Import steps

1

Place the GML file in the TuringDB data directory

TuringDB only reads external files from the data subdirectory of its working directory (set by -turing-dir, default $HOME/.turing).

cp mygraph.gml ~/.turing/data/
2

Load the file into a new graph

  • Cypher
  • Python SDK
LOAD GML 'mygraph.gml' AS mygraph
from turingdb import TuringDB

client = TuringDB(host="http://localhost:6666")
client.query("LOAD GML 'mygraph.gml' AS mygraph")

TuringDB creates a new graph named mygraph and populates it with all nodes and relationships from the file.

3

Set the graph as active and query it

  • Cypher
  • Python SDK
cd mygraph

MATCH (n) RETURN n
client.set_graph("mygraph")

df = client.query("MATCH (n) RETURN n")
print(df)

Your GML graph is now imported and ready to query.

​
Verify the import

Use meta-queries to inspect what was imported:

  • Cypher
  • Python SDK
CALL db.labels()
CALL db.edgeTypes()
CALL db.propertyTypes()
print(client.query("CALL db.labels()"))
print(client.query("CALL db.edgeTypes()"))
print(client.query("CALL db.propertyTypes()"))
Neo4jParquet
githublinkedinyoutubediscord