Skip to content

AKSW/shaclgen

Repository files navigation

SHACLGEN

Shaclgen takes either an instance graph/data graph (or multiple graphs) or schema(s) as input and generates a basic shape file based on the classes and properties present.

Shape files from instance data: By default, the input graph is processed as a data graph (instance data).

Shape files from ontologies: If the input is a schema or ontology, shaclgen generates a nested shape file: properties with rdfs:domain defined in the ontology will be nested within the appropriate NodeShape. rdfs:range definitions for XML and rdfs datatypes are included.

Added support for OWL constructions is planned.


Installation

Using pip: :

pip install shaclgen

Command line use:

$ shaclgen [graph] [optional arguments]

Example usage: :

$ shaclgen https://www.lib.washington.edu/static/public/cams/data/datasets/uwSemWebParts/webResource-1-0-0.nt

Command line arguments: :

positional arguments:
graph                 The data graph(s).

optional arguments:
-h, --help            show this help message and exit
-o, --ontology        input file(s) or URL(s) is a schema or ontology
-ns, --namespace      optional shape namespace declaration. ex: http://www.example.com exam
-i, --implicit        use implicit class targets with RDFS
-s SERIALIZATION, --serialization SERIALIZATION
                      result graph serialization, default is turtle. example:. -s nt

Serialization options: turtle = turtle ntriples = nt rdfxml = xml n3 = n3

Namespace Example usage: :

$ shaclgen https://www.lib.washington.edu/static/public/cams/data/datasets/uwSemWebParts/webResource-1-0-0.nt -s nt

Namespace argument: The namespace argument is takes a full URL and prefix.

Namespace Example usage: :

$ shaclgen https://www.lib.washington.edu/static/public/cams/data/datasets/uwSemWebParts/webResource-1-0-0.nt -ns http://www.example.org uwlib

Implicit class usage :

SHACL interprets shapes typed as rdfs:Class as the target class of that shape. This is called Implicit Class Targets. By setting -i or --implicit, shaclgen will reuse the class definitions in the ontology (ie. instances of rdfs:Class or owl:Class) as shapes and not create new URIs. Instances of owl:Class will be typed as rdfs:Class in the output. Triples that tie the class to one of its parent classes with rdfs:subclassOf will be copied by default.

Example ontology input:

ex:Person a owl:Class.

Example output without -i:

ex:PersonShape a sh:NodeShape;
    sh:targetClass ex:Person .

Example output with -i:

ex:Person a rdfs:Class; sh:NodeShape.

This project is still in development. Comments, questions, and issues are welcome!

Contact alexiskeelie at gmail.com

About

python program to generate template shacl graphs

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages