Schema definition languages

What data modelling languages can I practically use to define or document a data model or schema for any possible label property graph in Neo4j?

I want the data modelling language to be text based and machine readable. I do not want a visual representation of the data model (such as UML or arrows.app).

Examples of text based schema design languages are: EXPRESS, JSON Schema et.c.

Hi Martin, you might want to check this library out which underpins our data importer tool.

Thanks. I would be interested in additional examples because I am not using Typescript.

We recently started using LinkML. Pretty expressive schema language with explicit support for graph-oriented data models. The automatic generators are really useful - from LinkML spec you can get Pydantic, JSON, RDF/OWL, more, painlessly. For knowledge graph models, I find it skewed more toward what I think of as formal ontological constructs, but labeled property graph designs are fully expressible - at least for the stuff we model.

Note that LinkML (1) has its own language that can be a little quirky, (2) is open source, (3) has a growing healthy ecosystem of plugins and integrations.