An open API service indexing awesome lists of open source software.

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.

Awesome Lists containing this project

README

          

# transforge

[![](https://img.shields.io/pypi/v/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