Skip to main content

Python wrapper around TopQuadrant SHACL processor

Project description

PyPI - Status

Py(thon)T(op)Q(uadrant)SHA(pe)C(onstraint)L(anguage)

Python wrapper around TopQuadrant's SHACL implementation in Java.

Why?

Motivation: This was developed as part of BIM2RDF where TopQuadrant was used to execute SHACL. Python's PySHACL was too slow. Nonetheless, it's useful to be able to integrate it with Python.

Optional Features

can be installed as pytqshacl[java,cli].

  • Java: is installed on first use. Note this changes your system. The installation location will be printed.
  • CLI: will just wrap the topquadrant invocation with managed configuraion.

Usage

Install pytqshacl with your Python package manager. The features are optional pytqshacl[cli,java].

CLI

Get help with pytqshacl --help.

Example usage:

pytqshacl\test on  master [!⇡] via  v3.11.9 
❯ pytqshacl validate -d data.ttl -s shapes.ttl -o None
ERRORS: process did not exit with 0

@prefix dash:    <http://datashapes.org/dash#> .     
@prefix graphql: <http://datashapes.org/graphql#> .  
@prefix owl:     <http://www.w3.org/2002/07/owl#> .  
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema:  <http://schema.org/> .
@prefix sh:      <http://www.w3.org/ns/shacl#> .     
@prefix swa:     <http://topbraid.org/swa#> .        
@prefix tosh:    <http://topbraid.org/tosh#> .       
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .

[ rdf:type     sh:ValidationReport ;
  sh:conforms  false ;
  sh:result    [ rdf:type                      sh:ValidationResult ;
                 sh:focusNode                  <https://example.com/John-Doe> ;
                 sh:resultMessage              "Property may only have 1 value, but found 2" ;
                 sh:resultPath                 schema:name ;
                 sh:resultSeverity             sh:Violation ;
                 sh:sourceConstraintComponent  sh:MaxCountConstraintComponent ;
                 sh:sourceShape                []    
               ]
] .

Lib

Check the arguments from validate and infer from the imports from pytqshacl import validate, infer.

Configuration

The environment variable, PYTQSHACL_PREFER_SYSJAVA, can be set to 'false' if the package is installed with the 'java' feature to prefer finding a java executable in the system PATH environment variable.

Dev Philosphy

This point of this code is just to provide access to use TopQuadrant's SHACL from Python. Therefore,

  • No features: It should just wrap the TopQuadrant SHACL executable.
  • No dependencies

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytqshacl-139.tar.gz (21.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pytqshacl-139-py2.py3-none-any.whl (21.3 MB view details)

Uploaded Python 2Python 3

File details

Details for the file pytqshacl-139.tar.gz.

File metadata

  • Download URL: pytqshacl-139.tar.gz
  • Upload date:
  • Size: 21.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pytqshacl-139.tar.gz
Algorithm Hash digest
SHA256 d27f1f9f8234ea9585a114de653c516a1b1ac34c214219f7e4c25e1913f3a0b5
MD5 0d272401fc5cc5d5e2190f04f1004bb3
BLAKE2b-256 c99e836924f032a7d6d7e2f016b885e3f4bd387e0b8187c2e3f75d5383fe405c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytqshacl-139.tar.gz:

Publisher: python-publish.yml on pnnl/pytqshacl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pytqshacl-139-py2.py3-none-any.whl.

File metadata

  • Download URL: pytqshacl-139-py2.py3-none-any.whl
  • Upload date:
  • Size: 21.3 MB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pytqshacl-139-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 e31c256ee517c9ff4eaa1fc66dc87c57b77a25ca303968c86b8502465230aac9
MD5 ec4648e7cf9c26edbb1518bd9b7281ed
BLAKE2b-256 eda22a6a485d0df990ff1bf8d69d0a00ec69d29ad406d4924ebd91072285401a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytqshacl-139-py2.py3-none-any.whl:

Publisher: python-publish.yml on pnnl/pytqshacl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page