Public Repository

Last pushed: 4 months ago
Short Description
The open-source model-driven linked data platform.
Full Description

What is Metreeca?

Metreeca supports the end-to-end lifecycle of organization-wide data hubs leveraging W3C's semantic web and linked data open technologies.

Its model-driven engine connects data sources to an RDF graph DB and delivers them as cross-linked read/write REST APIs, enabling rapid data-driven development with no need for custom coding and no compromise on security and data integrity.

An integrated collection of interactive tools enables analysts and users to configure and access every function of the platform working in an intuitive visual environment.

A pluggable architecture and flexible framework enable back and front-end developers to extend the platform with custom features and to create custom linked apps with no boilerplate.

home /
docs /
forum /


Metreeca is an open-source project available under the GNU AGPL v3 license.

Documentation is available under the Creative Commons BY-NC-SA 4.0 license.

Using This Image

system requirements
client the latest version of a modern web browser
server an updated Docker installation

Docker images are the easiest way to deploy Metreeca to your local server or to a cloud service: to get started:

  • set a password for the admin system administrator user

    KEY="<your admin password here>"
  • run a Metreeca container:

    docker run --detach \
      --name metreeca \
      --publish 8080:8080 \
      --env KEY="${KEY}" \
  • open the platform interface at http://localhost:8080/ and sign in as admin

  • get started going through the tutorials at

  • delve deeper with the documentation at

Warning / The current version of the Docker image contains a preview release of the platform with limited user authentication and authorization capabilities: administration tools, unsafe HTTP methods on linked data REST APIs (POST/PUT/DELETE) and SPARQL endpoints are restricted to system administrators, but fine-grained access control and user-dependent views aren't yet supported. More to come in the next release…

Environment Variables

The following environment variables may be set with the --env Docker option to tune the platform behaviour, like:

docker run --env <name>=<value> …
name value
JAVA space separated command line options for the Java virtual machine
SETUP space separated configuration properties (<property>=<value>)
KEY the password for the system administrator user (admin)
BASE the absolute canonical server base URL

Host Volumes

To persist platform data on a host volume, mount it under the /opt/metreeca/data directory in the platform container using either the --volume or the --mount Docker option, like:

docker run --volume </host/path>:/opt/metreeca/data …

Memory Allocation

By default, the Java virtual machine running the platform is allocated a limited amount of memory, to make it interact gracefully with the Docker container (see for instance

To increase memory limits, configure the following command line options using the JAVA environment variable, like:

docker run --env 'JAVA=-Xmx2g'…
option value
-Xmx{size} the maximum heap size (in bytes)
-Xss{size} the thread stack size (in bytes)

Append to {size} the letter k or K to indicate KB, m or M to indicate MB, g or G to indicate GB.

Custom Configuration

To define a custom configuration for the platform either define the relevant properties as Java system properties in the JAVA environment variable, like:

docker run --env 'JAVA=-D<property>=<value> ' …

or create and edit a custom configuration file named in the root of the host volume to be mounted to the Docker container.

Bulk Data Management

Bulk data management is supported through the following standard SPARQL 1.1 endpoints.

endpoint URL
SPARQL 1.1 Update http://localhost:8080/sparql
SPARQL 1.1 Graph Store http://localhost:8080/graphs

Update operations on all endpoints are always restricted to system administrators; retrieval operations are restricted to system administrators unless otherwise configured.

Bulk Data Upload

Bulk data upload is also supported through the automated RDF spooling folder at /opt/metreeca/data/spool/. To upload an RDF file just copy it to the spooling folder and wait for the spooler process to pick it up:

docker cp <rdf-file> <container-name>:/opt/metreeca/data/spool/

If you mounted a host volume, just copy RDF files to the spooling folder on the host:

cp <rdf-file> </host/path>/spool/

The spooler accepts both plain RDF files and zip/tar archives containing RDF files, gracefully handling gzip/bzip2 compression.

After the file is uploaded, it's automatically removed from the spooling folder. If something went wrong during processing, the file is marked as ignored and preserved for post-mortem analysis.

Warning / When launching a new container wait for the spooling folder to be created during process initialization before attempting a bulk upload. Be also aware that the spooler process may require some seconds before picking up new files.

External Graph Database

A wide range of third-party RDF graph databases, supporting the extended RDF4J Server REST API or other proprietary wire protocols, can be configured as embedded or external graph storage backends.

Docker Pull Command