Skip to main content

Generates OWL, SHACL shapes and SKOS concepts from XML Schema (XSD) files

Project description

XSD2RDF

License

A tool to convert XML Schema (XSD) files into various RDF formats (SHACL, OWL, SKOS) with integrated validation capabilities.

Overview

XSD2RDF allows you to convert XML Schema definitions into:

  • SHACL (Shapes Constraint Language) for RDF data validation
  • OWL (Web Ontology Language) for ontology representation
  • SKOS (Simple Knowledge Organization System) for concept schemes and taxonomies

Features

  • Convert XSD to SHACL, OWL, and SKOS based on integrated principles
  • SHACL shape constraints are linked to SKOS concept schemes when applicable
  • Handle complex XSD structures (choices, unions, complex types, enumerations, etc.)
  • SHACL shapes are validated according to SHACL-SHACL

This repository also includes a validation script to check RDF data against the generated SHACL shapes and SKOS concepts.

Installation

From PyPI

pip install xsd2rdf

From Source

git clone https://github.com/YourUsername/xsd2rdf.git
cd xsd2rdf
python -m pip install poetry
poetry install

Basic Usage

Convert an XSD file to all RDF formats (SHACL, OWL, SKOS):

python -m xsd2rdf -x path/to/schema.xsd

This generates the following files:

  • schema.xsd.shape.ttl (SHACL shapes)
  • schema.xsd.owl.ttl (OWL ontology)
  • schema.xsd.*.skos.ttl (SKOS concept schemes, one file per enumeration)

With custom output directory:

python -m xsd2rdf  -x path/to/schema.xsd -o output/directory

Using a custom abbreviations file:

python -m xsd2rdf -x path/to/schema.xsd -a path/to/abbreviations.txt

The abbreviations file should contain one abbreviation per line. These abbreviations will be preserved as uppercase when creating human-readable labels from camelCase or PascalCase strings.

Validation

This feature is only available from source as it is meant for development purposes.

Prerequisites:

  • Create sample data for validation schema.xsd.shape.ttl in the same directory as the xsd file

To validate RDF data against SHACL shapes with SKOS concepts:

python shacl-validation.py path/to/schema.xsd

This will:

  1. Load the data from schema.xsd.sample.ttl
  2. Include all related SKOS files (schema.xsd.*.skos.ttl)
  3. Perform validation using the generated SHACL shapes (schema.xsd.shape.ttl)
  4. Report results in the command line

Example

Converting an XSD file with enumerations:

python -m xsd2rdf xsd2rdf -x comparison/enumerations.xsd

Validating data using generated shapes and concepts:

python shacl-validation.py comparison/enumerations.xsd

License

EUPL 1.2

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

xsd2rdf-0.2.0.tar.gz (19.9 kB view details)

Uploaded Source

Built Distribution

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

xsd2rdf-0.2.0-py3-none-any.whl (20.8 kB view details)

Uploaded Python 3

File details

Details for the file xsd2rdf-0.2.0.tar.gz.

File metadata

  • Download URL: xsd2rdf-0.2.0.tar.gz
  • Upload date:
  • Size: 19.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for xsd2rdf-0.2.0.tar.gz
Algorithm Hash digest
SHA256 aa982a34ff1dfd73b94d70bda8d87648ea3f90af228d5e82a80ddf152305cdf0
MD5 0793cd8cf958b0607adf4edcfe80a252
BLAKE2b-256 eace474c2c4c8b69c77faa1fa94d6ec352b700ad5128cae1724441d0886ddf51

See more details on using hashes here.

File details

Details for the file xsd2rdf-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: xsd2rdf-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 20.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for xsd2rdf-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5cc38efb4f304300c5bac20f18d001ceb2322bcea508e11915c52b08c106acdc
MD5 b7aeda252df51a0f962425938f7336fe
BLAKE2b-256 03efa3ed16a542e9ff4bb8f2ab4c7e1a3af00d0a4582a6d179211338863919da

See more details on using hashes here.

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