An open API service indexing awesome lists of open source software.

https://github.com/aksw/shaclgen

python program to generate template shacl graphs
https://github.com/aksw/shaclgen

Last synced: 1 day ago
JSON representation

python program to generate template shacl graphs

Awesome Lists containing this project

README

          

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](https://www.w3.org/TR/shacl/#implicit-targetClass).
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