Skip to main content

Welcome to Bigraph Framework

A Complete Guide to the Bigraph Framework.

  • Relatively Stable: 0.9.0 (master branch)
  • Latest Version: 0.9.6-SNAPSHOT (develop branch)

Notice: The API is subject to change. Use at your own risk. This documentation reflects always the latest version.

What is Bigraph Framework

Bigraph Framework is a software framework for the creation and simulation of bigraphs to expedite the experimental evaluation of the bigraph theory in real-world applications.

The goal of this framework is to facilitate the implementation of context-aware, agent-based systems or cyber-physical systems, for example. The high level API eases the programming of bigraphical systems for various real-world application. The framework is developed around a metamodel-first approach, when working with bigraphical structures. It provides several means towards model-driven software development for integrating the bigraph theory into software.

Overview of the Features

  • Dynamic creation of bigraphs at runtime, which are based on the Ecore metamodel
  • Visualization of bigraphs (beta)
  • Bigraph Matching
  • Bigraphical Reactive Systems: Simulation of bigraphs by reaction rules and synthesisation of a labelled transition system
  • Read and write meta and instance models to the file system (Ecore/XMI)
  • Conversion of bigraphs into other file formats (e.g., GraphML, BigMC or BigraphER)

What are Bigraphs?

Bigraphs are an emerging graph theory and meta-model for global ubiquitous systems, mobile computing, context-aware systems and the Internet of Things (IoT). The theory is a unifying framework for many process calculi, including the ambient calculus, action calculi, Petri nets, the Calculus of Communicating Systems (CCS) and π-calculus.

Requirements

  • Java 11
  • Maven or Gradle

Use / Install / Dependency Settings

Bigraph Framework is online available as a Maven dependency.

Artifacts are deployed to ST-Artifactory.

Building from Source

Otherwise, to build the source by yourself, follow the README.md inside the repository.

Empty Project Skeleton

To get started using Bigraph Framework right away, download the Maven-based Project Skeleton

The README contained therein, describes how to compile and start an application.

Alternatively, follow the step-by-step project setup as described in the following.

Packages

Depending on the build management tool you are using, one of the following configuration for Maven or Gradle is necessary.

Add this inside the dependencies section of your project's *.pom file. Replace VERSION with the latest version.

<!-- the core module -->
<dependency>
<groupId>de.tudresden.inf.st.bigraphs</groupId>
<artifactId>bigraph-core</artifactId>
<version>VERSION</version>
</dependency>
<!-- the rewriting module -->
<dependency>
<groupId>de.tudresden.inf.st.bigraphs</groupId>
<artifactId>bigraph-simulation</artifactId>
<version>VERSION</version>
</dependency>
<!-- the visualization module -->
<dependency>
<groupId>de.tudresden.inf.st.bigraphs</groupId>
<artifactId>bigraph-visualization</artifactId>
<version>VERSION</version>
</dependency>
<!-- the converter module -->
<dependency>
<groupId>de.tudresden.inf.st.bigraphs</groupId>
<artifactId>bigraph-converter</artifactId>
<version>VERSION</version>
</dependency>

Repository Setup

In order to resolve the dependencies above, the following custom repository must be added as well. We provide the configuration for Maven and Gradle below.

The following Maven repository entry must be added to the repositories element of a pom.xml for a new project.

<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>STFactory</id>
<name>st-tu-dresden-artifactory</name>
<url>https://stgroup.jfrog.io/artifactory/st-tu-dresden-maven-repository/</url>
</repository>

Another option is to modify the settings.xml, usually found in ~/.m2/.

<?xml version="1.0" encoding="UTF-8" ?>
<settings xsi:schemaLocation='http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd'
xmlns='http://maven.apache.org/SETTINGS/1.0.0' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
<profiles>
<profile>
<id>stgroup-artifactory</id>
<repositories>
<repository>
<snapshots>
<enabled>true</enabled> <!-- set false to disable snapshot releases -->
</snapshots>
<id>STFactory</id>
<name>st-tu-dresden-artifactory</name>
<url>https://stgroup.jfrog.io/artifactory/st-tu-dresden-maven-repository/</url>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>stgroup-artifactory</activeProfile>
</activeProfiles>
</settings>

Logging Configuration

Bigraph Framework employs SLF4J as a facade for the log4j logging framework.

Depending on your project setup, you may need to include the following libraries in your pom.xml :

<!-- When used within a Spring project -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

<!-- For a bare Maven project -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.30</version>
</dependency>

The example above shows how to use log4j2 in your project as the underlying logging framework.