https://github.com/quangis/transforge
Describe processes as type transformations, with inference that supports subtypes and parametric polymorphism. Create and query corresponding transformation graphs.
https://github.com/quangis/transforge
abstract concept constraint graph inference polymorphism procedural-metadata process-metadata query rdf semantic semantic-web sparql subsumption subtype tool transformation type typechecking workflow
Last synced: 12 days ago
JSON representation
Describe processes as type transformations, with inference that supports subtypes and parametric polymorphism. Create and query corresponding transformation graphs.
- Host: GitHub
- URL: https://github.com/quangis/transforge
- Owner: quangis
- License: gpl-3.0
- Created: 2021-03-09T12:52:30.000Z (almost 5 years ago)
- Default Branch: develop
- Last Pushed: 2023-08-26T17:39:08.000Z (over 2 years ago)
- Last Synced: 2025-09-06T11:59:14.964Z (4 months ago)
- Topics: abstract, concept, constraint, graph, inference, polymorphism, procedural-metadata, process-metadata, query, rdf, semantic, semantic-web, sparql, subsumption, subtype, tool, transformation, type, typechecking, workflow
- Language: Python
- Homepage:
- Size: 1.03 MB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 31
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# transforge
[](https://pypi.org/project/transforge/)
The master branch tracks releases. For the latest version, see the
[`develop`][dev] branch.
A transformation language is used to describe *processes*, like the ones
implicit in workflows or software tools, as *transformations between
types*. These types do not necessarily denote a concrete data structure,
and the descriptions may be independent from any particular
implementation. The goal is only to capture some properties that are
deemed *conceptually* relevant, as a form of *procedural metadata*.
`transforge` facilitates defining a transformation language and parsing
its expressions into semantic graphs. It is written in pure Python with
few dependencies.
In order to reason about about transformations, it also implements a
[type inference](https://en.wikipedia.org/wiki/Type_inference) module,
which accommodates both
[subtype-](https://en.wikipedia.org/wiki/Subtyping) and
[parametric](https://en.wikipedia.org/wiki/Parametric_polymorphism)
polymorphism.
Expressions of a transformation language can be turned into
transformation graphs. Such graphs can be serialized into
[RDF](https://en.wikipedia.org/wiki/Resource_Description_Framework), or
converted to [SPARQL](https://en.wikipedia.org/wiki/SPARQL) queries and
matched against other graphs. This enables flexible searching through
processes.
**The library is still in development. Interfaces might change without
warning.**
### Usage
This package was developed for the [CCT](https://github.com/quangis/cct)
algebra for geographical information, which may act as an example.
[Click here for the tutorial][tut].
[tut]: https://github.com/quangis/transforge/blob/develop/docs/tutorial.md
[dev]: https://github.com/quangis/transforge/tree/develop