This repository contains a prototype implementation for the PG-Schema with Property Constraints extension.
PG-Schema_PC is a formal extension of the PG-Schema language, designed to support constraints over property sets in property graphs. It introduces structural, cardinality, and range constraints that enhance the precision and expressiveness of schema definitions. This implementation serves as a reference interpreter for the abstract grammar and semantics presented in the associated publication.
Binary releases in Windows, Mac and Linux are published in relases.
If you prefer to build the code, you should install cargo and the following command compiles and generates an executable called pgschemapc
in the target/release
folder:
cargo build --release
which will create a binary in target/release/pgschemapc
.
Once you have the pgschemapc
binary, you can add it to your executable path.
The command pgschemapc --help
gives information about the available commands.
pgschemapc --help
A simple prototype tool to process and validate PG-Schemas with property constraints
Usage: pgschemapc [COMMAND]
Commands:
pgs Process and validate property graph schemas
pg Process and validate property graphs
map Process and validate type map associations
validate Validate a property graph with a property graph schema and some associated type map
help Print this message or the help of the given subcommand(s)
Options:
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
The following command shows how the tool can be used to validate a simple property graph with a PG-Schema_PC schema according to some type maps:
pgschemapc validate --graph examples/simple.pg --schema examples/simple.pgs --map examples/simple.map
The different examples from the submitted paper can be run using the following commands:
pgschemapc validate --graph examples/[EXAMPLE_NAME].pg --schema examples/[EXAMPLE_NAME].pgs --map examples/[EXAMPLE_NAME].map
where [EXAMPLE_NAME]
can be any of simple
, course
, person
, product
, user
, etc.
Of course, you can play with the tool by creating your own property graph, property graph schema and association maps.
To run a test suite use the command:
cargo test
At this stage, the tool is a prototype for PGSchema with property constraints validation. Further integration with graph databases or external datasets will require extending the parsing and validation layers.
- Railroad diagrams: https://domel.github.io/pg-schema-pc/rr-diagrams.html
- Citation metadata: see
CITATION.cff
- GitHub repository for grammar: https://github.com/domel/pg-schema-pc
If you use this software or refer to its underlying formalism in academic work, please cite it using the metadata in the CITATION.cff
file.
Licensed under the MIT License.