science.aist.gtf

Graph Transformation Framework

https://github.com/fhooeaist/gtf

Science Score: 77.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 6 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    1 of 4 committers (25.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.7%) to scientific vocabulary

Keywords

graph model transformation verification

Keywords from Contributors

export geometry geometry-library geometry-processing georeferenced-data georeferencing geospatial-data obj off ply
Last synced: 6 months ago · JSON representation ·

Repository

Graph Transformation Framework

Basic Info
Statistics
  • Stars: 4
  • Watchers: 0
  • Forks: 2
  • Open Issues: 7
  • Releases: 3
Topics
graph model transformation verification
Created over 5 years ago · Last pushed about 3 years ago
Metadata Files
Readme License Citation

README.md

GTF - Graph Transformation Framework

javadoc Maven Central GitHub release License: MPL 2.0 DOI FOSSA Status

The Graph Transformation Framework is as the name suggests, all about graphs and their transformation into desired target models. It provides different modules, like ... - graph: This module contains all the domain objects, that are required to represent a graph and its state. - template: This module contains classes for various templating and automation tasks. - transformation: This module allows creating transformations on graph structures. - verification: With this module a verification on graph models can be performed. - visualization: This module contains classes for visualization using Freemarker template engine.

Getting Started

There is no general getting started, as it strongly depends on what you want to achieve with the framework. The next few sections provide some examples for the different modules. For more details you can checkout our test classes, which deal with a few different examples and problems.

Graph

If you want to use the graph structure itself, you have to add the following maven dependency to your project:

xml <dependency> <groupId>science.aist.gtf</groupId> <artifactId>graph</artifactId> <version>${gtf.version}</version> <!-- e.g. 1.0.0 --> </dependency>

Using graph builder offers you an intuitive, declarative way to define and create your graph, which is shown in the following example.

```java @lombok.AllArgsConstructor class Person { @lombok.Getter int id; String name; }

Function keyExtractor = Person::getId; Graph graph = GraphBuilderImpl.create(keyExtractor) .from(new Person(1, "Max Mustermann")).toData(new Person(2, "Maxine Musterfrau")).data("married") .from(new Person(3, "John Smith")).toDataByKey(2).data("friends") .fromByKey(3).toByKey(2) .toGraph(); ```

Template

xml <dependency> <groupId>science.aist.gtf</groupId> <artifactId>template</artifactId> <version>${gtf.version}</version> <!-- e.g. 1.0.0 --> </dependency>

For a more thorough description of how to use templates refer to template documentation.

Transformation

xml <dependency> <groupId>science.aist.gtf</groupId> <artifactId>transformation</artifactId> <version>${gtf.version}</version> <!-- e.g. 1.0.0 --> </dependency>

The transformation module basically consists of interface and abstract helper classes that allow to transform any input into any output. The base concept consists of Transformers and Renderers, where a Transformer is used to transform the whole input into an output whereas the renderers are applied on small parts of the given input. A renderer can have a condition which allows to use a list of renderers with their condition inside MultiRenderers. This form of abstraction allows for a clean separation of concerns.

Example (Note: this example only shows the interaction of a single component).

```java RendererCondition upperCaseCondition = () -> x -> x.equals("a"); TransformationRender, String, Graph, String> uppercaseTransformer = new AbstractConditionalTransformationRenderer<>(upperCaseCondition) { @Override public String createElement() { return null; // not needed in this case can be used to create the resulting element }

        @Override
        public String mapProperties(String s, Graph<String, Void> vertices, String currentElement) {
            return currentElement.toUpperCase();
        }
    };

TransformationRender, String, Graph, String> lowercaseTransformer = ...; var renderer = new MultiTransformationRenderer<>(List.of(uppercaseTransformer, lowercaseTransformer));

Graph graph = ...; Transformer, List> transformer = g -> { List res = new ArrayList<>(); g.traverseVertices(vv -> res.add(renderer.renderElement(g, vv.getElement()))); return res; }; List result = transformer.applyTransformation(graph); ```

In addition to that transformation can be split into multiple parts and then joined again.

java Transformer<Input, Interim> t1 = ...; Transformer<Interim, Output> t2 = ...; Transformer<Input, Output> finalTransformation = t1.andThen(t2);

Verification

xml <dependency> <groupId>science.aist.gtf</groupId> <artifactId>verification</artifactId> <version>${gtf.version}</version> <!-- e.g. 1.0.0 --> </dependency>

Different approaches for verification are implemented in the verification module. You may checkout the test classes to get an overview over the functionality.

Visualization

xml <dependency> <groupId>science.aist.gtf</groupId> <artifactId>visualization</artifactId> <version>${gtf.version}</version> <!-- e.g. 1.0.0 --> </dependency>

The visualization module is based on the template engine and basically provides different implementation for the TemplateEngine interface. As an example the graph transformation framework provides a freemarker-based approach.

FAQ

If you have any questions, please checkout our FAQ section.

Contributing

First make sure to read our general contribution guidelines.

Licence

Copyright (c) 2020 the original author or authors. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.

FOSSA Status

Research

If you are going to use this project as part of a research paper, we would ask you to reference this project by citing it.

DOI

If you are going to use parts of the verification module, we would ask you to reference:

DOI

If you are going to use parts of the transformation module, we would ask you to reference:

DOI

Owner

  • Name: Advanced Information Systems and Technology
  • Login: FHOOEAIST
  • Kind: organization
  • Email: contact@aist.science
  • Location: University of Applied Sciences Upper Austria, Softwarepark 11, 4232 Hagenberg, Austria

The research group AIST researches software solutions in the fields of eHealth, Machine Learning and Data Mining as well as Computer Vision.

Citation (CITATION.cff)

authors:
 - family-names: "Schuler"
   given-names: "Andreas"
   email: "andreas.schuler@fh-hagenberg.at"
   orcid: "https://orcid.org/0000-0003-1074-3222"
   affiliation: "Advanced Information Systems and Technology"
 - family-names: "Pointner"
   given-names: "Andreas"
   email: "andreas.pointner@fh-hagenberg.at"
   orcid: "https://orcid.org/0000-0001-8642-1161"
   affiliation: "Advanced Information Systems and Technology"
 - family-names: "Praschl"
   given-names: "Christoph"
   email: "christoph.praschl@fh-hagenberg.at"
   orcid: "https://orcid.org/0000-0002-9711-4818"
   affiliation: "Advanced Information Systems and Technology"
cff-version: 1.2.0
date-released: 2022-07-25
doi: 10.5281/zenodo.4314721
keywords:
  - Graph
  - Java
  - Transformation
license: MPL-2.0
message: "If you use this software, please cite it as below."
repository-artifact: "https://search.maven.org/artifact/science.aist.gtf/gtf/2.0.0/pom"
repository-code: "https://github.com/FHOOEAIST/GTF"
title: "Graph Transformation Framework"
type: software
url: "https://fhooeaist.github.io/GTF/"
version: 2.0.0

GitHub Events

Total
  • Watch event: 1
Last Year
  • Watch event: 1

Committers

Last synced: about 2 years ago

All Time
  • Total Commits: 37
  • Total Committers: 4
  • Avg Commits per committer: 9.25
  • Development Distribution Score (DDS): 0.595
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Andreas Pointner a****r@f****t 15
Renovate Bot b****t@r****m 15
Jenkins j****s@j****s 6
cpraschl 3****l 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 7 months ago

All Time
  • Total issues: 29
  • Total pull requests: 99
  • Average time to close issues: 3 months
  • Average time to close pull requests: 29 days
  • Total issue authors: 3
  • Total pull request authors: 6
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.23
  • Merged pull requests: 67
  • Bot issues: 1
  • Bot pull requests: 80
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • pointan (9)
  • cpraschl (2)
  • renovate[bot] (1)
Pull Request Authors
  • renovate[bot] (15)
  • dependabot[bot] (14)
  • pointan (5)
  • fossabot (1)
  • fhooeaist-bot (1)
  • cpraschl (1)
Top Labels
Issue Labels
confirmed (5) bug (3) hot (2) review (2)
Pull Request Labels
dependencies (14) confirmed (4) review (4) rejected (1)

Packages

  • Total packages: 7
  • Total downloads: unknown
  • Total dependent packages: 8
    (may contain duplicates)
  • Total dependent repositories: 9
    (may contain duplicates)
  • Total versions: 21
repo1.maven.org: science.aist.gtf:transformation

Graph Transformation Framework

  • Versions: 3
  • Dependent Packages: 5
  • Dependent Repositories: 5
Rankings
Dependent repos count: 10.9%
Dependent packages count: 11.5%
Average: 31.9%
Forks count: 52.5%
Stargazers count: 52.7%
Last synced: 6 months ago
repo1.maven.org: science.aist.gtf:gtf

Graph Transformation Framework

  • Versions: 3
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 32.0%
Forks count: 36.0%
Stargazers count: 36.2%
Average: 38.3%
Dependent packages count: 48.9%
Last synced: 6 months ago
repo1.maven.org: science.aist.gtf:verification

Graph Transformation Framework

  • Versions: 3
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 32.0%
Forks count: 36.0%
Stargazers count: 36.2%
Average: 38.3%
Dependent packages count: 48.9%
Last synced: 6 months ago
repo1.maven.org: science.aist.gtf:visualization

Graph Transformation Framework

  • Versions: 3
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 32.0%
Forks count: 36.0%
Stargazers count: 36.2%
Average: 38.3%
Dependent packages count: 48.9%
Last synced: 6 months ago
repo1.maven.org: science.aist.gtf:template

Graph Transformation Framework

  • Versions: 3
  • Dependent Packages: 1
  • Dependent Repositories: 2
Rankings
Dependent repos count: 16.1%
Dependent packages count: 33.0%
Average: 38.6%
Forks count: 52.5%
Stargazers count: 52.7%
Last synced: 6 months ago
repo1.maven.org: science.aist.gtf:core

Graph Transformation Framework

  • Versions: 3
  • Dependent Packages: 1
  • Dependent Repositories: 1
Rankings
Dependent repos count: 20.8%
Dependent packages count: 33.0%
Average: 39.7%
Forks count: 52.5%
Stargazers count: 52.7%
Last synced: 6 months ago
repo1.maven.org: science.aist.gtf:graph

Graph Transformation Framework

  • Versions: 3
  • Dependent Packages: 1
  • Dependent Repositories: 1
Rankings
Dependent repos count: 20.8%
Dependent packages count: 33.0%
Average: 39.7%
Forks count: 52.5%
Stargazers count: 52.7%
Last synced: 7 months ago

Dependencies

graph/pom.xml maven
  • science.aist.gtf:core ${project.version}
pom.xml maven
  • org.projectlombok:lombok 1.18.24 provided
  • science.aist.seshat:api 1.1.3
  • science.aist:jack 2.3.1
  • org.mockito:mockito-core 4.6.1 test
  • org.testng:testng 7.6.0 test
template/pom.xml maven
  • com.fasterxml.jackson.core:jackson-databind ${jackson.version}
  • com.fasterxml.jackson.dataformat:jackson-dataformat-yaml ${jackson.version}
  • commons-io:commons-io ${commons-io.version}
  • guru.nidi:graphviz-java ${graphviz-java.version}
  • org.freemarker:freemarker ${freemarker.version}
  • org.graalvm.js:js ${graalvm-js.version}
  • org.springframework:spring-aop ${spring.version}
  • org.springframework:spring-beans ${spring.version}
  • org.springframework:spring-context ${spring.version}
  • org.springframework:spring-context-support ${spring.version}
  • org.springframework:spring-core ${spring.version}
  • science.aist.gtf:transformation ${project.version}
  • org.springframework:spring-test ${spring.version} test
transformation/pom.xml maven
  • science.aist.gtf:graph ${project.version}
verification/pom.xml maven
  • science.aist.gtf:transformation ${project.version}
visualization/pom.xml maven
  • science.aist.gtf:template ${project.version}
.github/workflows/maven.yml actions
  • actions/checkout v3 composite
  • actions/setup-java v3 composite