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
- Host: GitHub
- URL: https://github.com/aksw/shaclgen
- Owner: AKSW
- License: unlicense
- Created: 2019-11-05T16:02:13.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2025-04-15T13:52:36.000Z (about 1 year ago)
- Last Synced: 2025-11-27T20:07:03.695Z (6 months ago)
- Language: Python
- Size: 192 KB
- Stars: 28
- Watchers: 7
- Forks: 9
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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