You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+77-67Lines changed: 77 additions & 67 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,47 +14,54 @@
14
14
15
15
# Bigraph Framework
16
16
17
-
**What is Bigraph Framework?**
18
-
19
-
Bigraph Framework is a framework
20
-
written in Java for the creation and simulation of bigraphs
21
-
to foster the experimental evaluation of the bigraph theory in
22
-
real-world applications.
23
-
24
-
The goal of this framework is to facilitate the implementation of context-aware, agent-based systems, and reactive systems in general.
25
-
It provides means for model-driven software development based on the bigraph theory.
26
-
The high-level Java API eases the programming of bigraphical systems for real-world application.
27
-
28
-
**Features**
29
-
30
-
- Modelling and Storage
31
-
- Dynamic creation of bigraphs at design time and runtime based on the [Bigraph Ecore Metamodel (BEM)](https://github.com/bigraph-toolkit-suite/bigraphs.bigraph-ecore-metamodel)
32
-
- Read and write instance models and metamodels of a bigraph from and to the file system
33
-
- Visualization
34
-
- Graphical export via GraphViz/DOT, PNG, Visualization of Compiler Graphs (VCG) format via yComp
35
-
- Interactive visualization via GraphStream
36
-
- Bigraphical Reactive Systems (BRS): Simulate the evolution of bigraphs by reaction rules
37
-
- Bigraph matching and rewriting via [jLibBig](https://bigraphs.github.io/jlibbig/) with tracking support
38
-
- Dedicated subhypergraph matching on link graphs only (query-data matching)
39
-
- Simulation and Model Checking (BFS, DFS, Random, MatchAll, MatchFirst)
40
-
- Generation of a labeled transition system (LTS)
41
-
- Predicate checking and logical connectors
42
-
- Specify order of reaction rules via priorities
43
-
- Tracking rules (trace node identities across reactions)
44
-
- Conditional rules (not yet integrated in model checking procedure but available for custom usage)
45
-
- Model Importer/Exporter
46
-
- Export a bigraph/LTS to common graph formats, e.g., DOT, GraphML, GXL, VCG
47
-
- Export to formats of other bigraph tools: BigMC, BigraphER, BigRed, jLibBig, ...
48
-
- Attributed Bigraphs
49
-
- Add arbitrary attributes to nodes and links (edges and outer names)
50
-
- Attributes are preserved when doing rewriting (this requires tracking maps)
51
-
52
-
**Requirements**
17
+
Bigraph Framework is a Java framework designed for developers and researchers for building, simulating, and analyzing reactive systems (e.g., cyber-physical, context-aware, agent-based, or distributed systems, IoT environments, ...).
18
+
19
+
It lets you model dynamic systems with both structure (who is inside what) and connectivity (who is connected and interacting to whom), and then simulate, visualize, and verify how those systems evolve over time.
20
+
21
+
Under the hood, the framework is based on Milner’s theory of Bigraphical Reactive Systems (BRS).
22
+
23
+
### Features
24
+
25
+
**Bigraph Modeling and Persistence**
26
+
- Create and manipulate bigraphs dynamically at **design time and runtime** using the **Bigraph Ecore Metamodel (BEM)**
> See also <ahref="#Building-the-Framework-from-Source">Building from Source</a> if you want to build the source by yourself and host them in your Maven local repository.
180
187
188
+
### Requirements
189
+
190
+
- Java >=21 (JDK)
191
+
- Maven / Gradle
192
+
- Graphviz for the `bigraph-visualization` module
193
+
- Ubuntu: `sudo apt install graphviz`
194
+
181
195
### Maven
182
196
183
197
```xml
184
198
<dependencies>
185
-
<!-- the core module -->
199
+
186
200
<dependency>
187
201
<groupId>org.bigraphs.framework</groupId>
188
202
<artifactId>bigraph-core</artifactId>
189
203
<version>2.3.4</version>
190
204
</dependency>
191
-
<!-- the rewriting module -->
205
+
192
206
<dependency>
193
207
<groupId>org.bigraphs.framework</groupId>
194
208
<artifactId>bigraph-simulation</artifactId>
195
209
<version>2.3.4</version>
196
210
</dependency>
197
-
<!-- the visualization module -->
211
+
198
212
<dependency>
199
213
<groupId>org.bigraphs.framework</groupId>
200
214
<artifactId>bigraph-visualization</artifactId>
201
215
<version>2.3.4</version>
202
216
</dependency>
203
-
<!-- the converter module -->
217
+
204
218
<dependency>
205
219
<groupId>org.bigraphs.framework</groupId>
206
220
<artifactId>bigraph-converter</artifactId>
207
221
<version>2.3.4</version>
208
222
</dependency>
223
+
209
224
</dependencies>
210
225
```
211
226
@@ -253,25 +268,15 @@ The example above shows how to use log4j2 in your project as the underlying logg
253
268
254
269
## Development
255
270
256
-
### Requirements
271
+
### Building the Framework from Source
272
+
273
+
#### Requirements
257
274
258
275
It is not necessary to build from source to use *Bigraph Framework* but if you want to try out the latest version, the project can be easily built with the [maven wrapper](https://maven.apache.org/tools/wrapper/) or the regular `mvn` command.
259
276
260
277
> **Note:** The required version of Maven is >= 3.8.3 and Java JDK >=17.
261
278
262
-
The recommendation here is to build it with the regular `mvn` command.
263
-
264
-
On Debian systems you can install it by issuing the following command:
265
-
266
-
```shell
267
-
$ sudo apt install maven
268
-
```
269
-
270
-
See [Installation](https://maven.apache.org/install.html) for other options.
271
-
272
-
### Building the Framework from Source
273
-
274
-
**Initialize**
279
+
#### Initialize
275
280
276
281
The following command has to be run once:
277
282
@@ -283,23 +288,28 @@ These are required for the development.
283
288
284
289
> When using IntelliJ IDEA, make sure to "Sync All Maven Projects" again to resolve any project errors that may appear due to missing dependencies on first startup.
285
290
286
-
**Build/Install**
291
+
#### Local Installation
287
292
288
-
One of the following commands must be executed from the root directory of this project:
293
+
Execute the following command from the root directory of this project:
289
294
290
-
```bash
291
-
# Default
295
+
```shell
292
296
$ mvn clean install -DskipTests
297
+
```
298
+
299
+
All modules of *Bigraph Framework* have been installed in the local Maven repository.
300
+
301
+
After the command successfully finishes, you can now use *Bigraph Framework* in other Java projects.
293
302
294
-
# To create a "fat jar" for each module, run:
303
+
**Build Standalone Jar**
304
+
305
+
If you prefer to generate standalone JARs for each module (including all dependencies), use the fatJar profile:
306
+
```shell
295
307
$ mvn clean install -DskipTests -PfatJar
296
308
```
297
309
298
-
After the command successfully finishes, you can now use _Bigraph Framework_ in other Java projects.
299
-
All modules of _Bigraph Framework_ have been installed in the local Maven repository.
300
-
Therefore, see [Maven configuration](#maven) on how to include the individual _Bigraph Framework_ dependencies.
310
+
This produces shaded ("fat") JAR files in each module's `target/` directory.
301
311
302
-
### Building the Documentation: User Manual
312
+
### Building the Documentation
303
313
304
314
See [etc/Development-and-Deployment.md](./etc/Development-and-Deployment.md) for more details.
Copy file name to clipboardExpand all lines: documentation/v2-docusaurus/docs/basic/start.mdx
+15-5Lines changed: 15 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,20 +13,31 @@ import getting_started_guide_3 from '!!raw-loader!../assets/basics/getting_start
13
13
14
14
Discover what **Bigraph Framework** is all about and learn the core concepts behind it.
15
15
16
+
<detailsstyle={{ background: 'transparent' }}>
17
+
<summary><strong>What are Bigraphs?</strong></summary>
18
+
Bigraphs are a theory and metamodel for global ubiquitous systems,
19
+
mobile computing, context-aware systems and the Internet of Things (IoT), or in general: for reactive systems.
20
+
It is grounded on category theory and regarded as a unifying framework for many process calculi, including the ambient calculus, action calculi, Petri nets,
21
+
the Calculus of Communicating Systems (CCS) and π-calculus.
22
+
The theory provides an algebra and a graph rewriting mechanism to describe, study and analyze the dynamic behavior of reactive systems.
23
+
</details>
24
+
16
25
## Creating a Bigraph
17
26
18
-
At the moment, Bigraph Framework supports only _pure bigraphs_.
27
+
At the moment, Bigraph Framework supports only _pure attributed bigraphs_.
19
28
20
29
### Signature
21
30
22
31
To construct a bigraph, the first step is to define a **signature**.
23
-
The signature specifies the **syntax** of the bigraph and determines which **types** (i.e., _controls_) can be used in subsequent modeling steps.
32
+
The signature specifies the **syntax** of the bigraph and determines which **types** (i.e., _controls_ in bigraph-jargon) can be used in subsequent modeling steps.
24
33
25
34
A signature is created via a _signature builder_, which is obtained from a _pure factory_.
26
35
All operations that follow are performed through this factory within the current _execution context_.
27
36
28
37
The entry point is the factory method `BigraphFactory.pureSignatureBuilder()`.
As described above, a **signature** specifies the syntax of the bigraph to be created.
41
50
In the example below, the resulting signature contains two controls:
42
51
43
52
-**User** with an *arity* of `1`
44
53
-**Computer** with an *arity* of `2`
45
54
46
55
The **arity** defines how many *connections* a control can have.
47
-
The semantic interpretation of “connection” is left abstract here—it may represent, for example, an **Ethernet link**, a **logical association**, or any other type of relationship between elements.
56
+
The semantic interpretation of "connection" is left abstract here.
57
+
It may represent, for example, an **Ethernet link**, a **logical association**, or any other type of relationship between elements.
48
58
49
59
:::info
50
60
A more verbose form for creating controls is the following:
0 commit comments