Skip to content

jmillanacosta/rdfsolve

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

208 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

RDFSolve

Tests PyPI PyPI - Python Version PyPI - License Documentation Status

Extract RDF schemas from SPARQL endpoints, convert between formats (JSON-LD, LinkML, SHACL, VoID, RDF-config), and derive cross-dataset mappings.

Dashboard (static demo): jmillanacosta.github.io/rdfsolve-frontend

Installation

uv pip install rdfsolve

CLI

rdfsolve [--verbose] <group> <command> [OPTIONS]

Schema mining (pipeline)

# Mine schemas from remote SPARQL endpoints listed in sources.yaml
rdfsolve pipeline mine --sources data/sources.yaml

# Mine a single source from a local QLever endpoint
rdfsolve pipeline local-mine --name drugbank --endpoint http://localhost:7026

# Generate Qleverfiles for local QLever instances
rdfsolve pipeline qleverfile --data-dir /data/rdf

Format conversion (export)

Convert any VoID .ttl or rdfsolve .jsonld schema to another format (auto-detected from extension):

rdfsolve export csv       schema.jsonld
rdfsolve export jsonld    void.ttl
rdfsolve export void      schema.jsonld
rdfsolve export linkml    schema.jsonld -o ./out
rdfsolve export shacl     schema.jsonld --closed
rdfsolve export rdfconfig void.ttl --endpoint-url https://sparql.example.org

Web backend

A Flask REST API exposes schemas, SPARQL query generation, IRI resolution, export, mappings, and SHACL/LinkML conversion over HTTP. It can also serve the rdfsolve-frontend app.

# Quick start with Docker
docker compose up --build        # http://localhost:8000

# Or run directly
python -m rdfsolve.backend.app   # uses env vars for config

Key endpoints: /api/schemas, /api/sparql, /api/export, /api/shapes, /api/mappings, /api/linkml, /api/compose.

Python API

from rdfsolve.api import mine_schema, load_parser_from_file

# Mine a schema from a SPARQL endpoint
result = mine_schema(
    name="rhea",
    endpoint_url="https://sparql.rhea-db.org/sparql",
)

# Load a previously mined schema and convert
parser = load_parser_from_file("rhea_schema.jsonld")
parser.to_schema()       # pandas DataFrame
parser.to_jsonld()       # JSON-LD dict
parser.to_linkml_yaml()  # LinkML YAML string
parser.to_shacl()        # SHACL Turtle string

Documentation

Full docs: rdfsolve.readthedocs.io

License

MIT — see LICENSE.