Metadata-Version: 2.3
Name: rdf-rules
Version: 2026.7.58
Summary: Add your description here
Author: Majid alDosari
Author-email: Majid alDosari <majid.aldosari@pnnl.gov>
Requires-Dist: uritools
Requires-Dist: rdf-engine
Requires-Dist: plum
Requires-Dist: beartype
Requires-Dist: pandas
Requires-Dist: json2rdf
Requires-Dist: openpyxl
Requires-Dist: json2rdf
Requires-Dist: pyoxigraph
Requires-Dist: pytqshacl[java]
Requires-Dist: fire ; extra == 'dev'
Requires-Dist: rdflib ; extra == 'dev'
Requires-Dist: pytest ; extra == 'dev'
Requires-Dist: pytest-regressions ; extra == 'dev'
Requires-Dist: pytqshacl[cli] ; extra == 'dev'
Requires-Dist: marimo ; extra == 'dev'
Requires-Python: >=3.13
Provides-Extra: dev
Description-Content-Type: text/markdown

A slightly optionionated common set of 'rules'
for creating rdf data using ['rdf-engine'](https://github.com/pnnl/rdf-engine):
* Data Rules:
    - table loader
    - json loader
    - ttl loader
* Mapping rule: SPARQL construct
* Ontology rules: TopQuadrant inference and validation

These rules come together in the 'engine'.

# Development
Develop with `uv sync --all-packages --all-extras`.

# Design Choices
These are choices given the common use case of mapping data.
They are somewhat firm.
- RDF1.2 annotates tripes with metadata: `<<?s ?p ?o>> ?mp ?mo `.
where `?mp` and `?mo` [correspond to simple (key,value) pairs of metadata](./src/rdf_rules/base.py).
- Mappings are in the form of SPARQL constructs stored as files with `.mapping.rq` extension (can also be `.mapping.sparql`).
- Each (specified) ontology will be processed separately

# Quick Start

Examine how rules are fed into an engine in the [tests](./tests/test.py).
