Metadata-Version: 2.4
Name: pyexplannotator
Version: 0.1.1
Summary: Build RDF/PROV-One knowledge graphs from provenance execution traces.
Author: Devin Yasith De Silva
License-Expression: MIT
Project-URL: Homepage, https://github.com/DevinDeSilva/LLM-Workflow-Explorer
Project-URL: Repository, https://github.com/DevinDeSilva/LLM-Workflow-Explorer
Project-URL: Issues, https://github.com/DevinDeSilva/LLM-Workflow-Explorer/issues
Keywords: annotation,knowledge-graph,provenance,provone,rdf,workflow
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pandas>=1.5
Requires-Dist: PyYAML>=6.0
Requires-Dist: rdflib>=6.0
Provides-Extra: dev
Requires-Dist: build>=1.2; extra == "dev"
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: twine>=5.0; extra == "dev"
Dynamic: license-file

# PyExplAnnotator

PyExplAnnotator builds RDF/PROV-One knowledge graphs from provenance execution
traces of AI and workflow applications.

The PyPI package name is `pyexplannotator`; the Python import package is
`expl_annotator`.

## Installation

From PyPI, after the package is published:

```bash
pip install pyexplannotator
```

For local development from this directory:

```bash
pip install -e ".[dev]"
```

## Usage

```python
from expl_annotator import ProvOneManager

manager = ProvOneManager("config.yaml")
```

A minimal config file should define the program name and RDF prefixes used by
the graph:

```yaml
program:
  name: my_workflow

ttl:
  save_path: provenance.ttl
  metadata_path: metadata.json
  prefixes:
    - name: my_workflow
      uri: https://example.org/my-workflow/
    - name: prov
      uri: http://www.w3.org/ns/prov#
    - name: provone
      uri: http://purl.org/provone#
    - name: sio
      uri: http://semanticscience.org/resource/
    - name: eo
      uri: https://purl.org/heals/eo#
    - name: xsd
      uri: http://www.w3.org/2001/XMLSchema#
```

## Publishing Checklist

Before publishing, make sure the version in `pyproject.toml` is unique and the
package name `pyexplannotator` is available on PyPI.

Build the source distribution and wheel:

```bash
python -m build
```

Validate the generated distributions:

```bash
python -m twine check dist/*
```

Upload to TestPyPI first:

```bash
python -m twine upload --repository testpypi dist/*
```

Install from TestPyPI in a clean environment:

```bash
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple pyexplannotator
```

When the TestPyPI package looks correct, upload to PyPI:

```bash
python -m twine upload dist/*
```

Use PyPI API tokens for uploads. This repository already ignores `.pypirc`, so
local credentials will not be committed.
