This page was last modified on 24 December 2016, at 12:28.
Apache Marmotta is an Open Linked Data platform that comprises several components. In its most basic configuration it is a Linked Data server. Marmotta is one of the reference projects early implementing the new Linked Data Platform  recommendation that is being developed by W3C.
Since April 2013, it is listed among the Semantic Web tools by the World Wide Web Consortium.
- 1 Components
- 2 History
- 3 Platform Architecture
- 4 References
- 5 External links
The project is split in several parts: the platform itself, which includes:
- Full Read Write Linked Data
- Linked Data Platform
- Basic security.
In addition to the platform, the project develops some libraries can also be used separately:
- KiWi, a Triplestore built on top of a relational database.
- LDPath, a path language to navigate across Linked Data resources.
- LDClient, a Linked Data client that allows retrieval of remote resources via different protocols by making use of pluggable adapters (data providers) that wrap other data sources (such as YouTube and Facebook).
- LDCache, a cache system that automatically retrieves resources by internally using LDClient.
Linked Media Framework (pre-Apache)
Marmotta comes as a continuation of the work in the Linked Media Framework project. LMF is an easy-to-setup server application that bundles some technologies such as Apache Stanbol or Apache Solr to offer some advanced services. After the release 2.6, the Read-Write Linked Data server code and some related libraries have been set aside to incubate Marmotta within the The Apache Software Foundation. LMF still keeps exactly the same functionality, but now bundling Marmotta too.
- On November 16, 2012 it is proposed to the Apache Software Foundation under the name of Apache Linda, later changed to Apache Marmotta in order to avoid confusion with the Linda language.
- On 3 December 2012 Marmotta enters incubation.
- On April 26, 2013 Marmotta 3.0.0-incubating is released.
- On October 3, 2013 Marmotta 3.1.0-incubating is released.
- On November 2013, it graduated as top-level project.
- On April 2014, the project released its first actual release under the umbrella of the Apache Software Foundation: 3.2.0 version.
- In December 2014, the project published the version 3.3.0.
The Marmotta Platform consists of a collection of modules. Each module consists of several layers:
- The webservice layer offers REST webservices to access most of the server functionality; the REST webservices typically consume and produce JSON and/or different RDF formats; Apache Marmotta uses RESTEasy and JAX-RS to implement its webservices
- The service layer offers CDI services inside a Java environment that can be called directly from Java; usually you will not need to use this except if you develop custom Java applications based on Marmotta; please see the CDI documentation
- The model layer offers persistence and data access functionality; this is in most cases provided by normal Java libraries (kiwi, ldcache, ldclient, commons from Marmotta, Sesame Repository, etc)
- The persistence layer is outside the Apache Marmotta Platform; Marmotta can use a number of Open Source database systems for persistence, including PostgreSQL, MySQL and H2
The Apache Marmotta modules communicate on different levels using different means: on the persistence level, the system uses the KiWi Transactions to send notifications about triple store updates; on the service level, CDI service injection and event notification is used to send messages.
The module marmotta-core provides all require core functionalities required by the platform: dependency injection, exchangable backends, admin interface, error management, etc. This is the single module required to run a minimum version of the platform, and all other modules usually depend on it. It provides several web service for different core functionalities of the platform, from management operations (logging, tasks and statistics) to some core functional web services (Read-Write Linked Data, prefixes, contexts and so on).
The SPARQL module provides support to SPARQL 1.1 in the platform. More preciselly, from the 11 Recommendation that compose SAPARQL 1.1, Marmotta’s implementation covers 9 of them (only Entailment Regimes and Federated Query are not yet supported.
It offers a unified interface both for Query and Update based on Squebi and data visualization based on Sgvizler.
Since 3.2.0 Marmotta provides experimental support for the current working draft of the Linked Data Platform 1.0 specification.
Marmotta comes with a dedicated module managing LDCache for the platform, allowing you to add different chache configurations over the registered LDClient data providers.
LDPath querying is exposed via a simple RESTful protocol, using JSON for describing the results. Programs can be evaluated using either GET or POST with slightly different methods (check the web services documentation for any further details), where the context uri must be always sent as query parameter.
The results’ schema is very simple:
- Each path of the program generates a property with the same name.
- The value of the property is an array with the result of the path evaluation. Each results is always componsed by a value with the string representation and a type with its type (uri/bnode/literal); optionally literals could come typed with lang and/or datatype.
This module provide security mechanisms for Apache Marmotta, which implements its own authentication and authorization mechanism.
Users and roles
There are two default users in Marmotta: anonymous and admin. The first one is not an actual user, but the user all anonymous requests use. The second is the user with administration rights on the system.
At the same time, users are group in roles for simplifying permission management. The system comes with three groups (manager, editor and user) by default, but this could be customized as preferred.
For instance, by default the admin user is part of manager, editor and user groups.
There are three pre-defined profiles, simple, standard, and restricted:
- simple allows read access from everywhere and write access only from localhost or other local interfaces.
- standard allows read access from everywhere and write access only for authenticated users of the “manager” role.
- restricted allows access only for authenticated users.
Marmotta offers a versioning service that keeps track of triple updates in configurable graphs. Versioning is transaction based, i.e. every time a transaction is committed successfully, a new version entry is created by the versioning services. Marmotta currently supports listing versions (timemap) as well as inspecting snapshots (mementos) (i.e. going back in time) for resources. To give a smooth web access to timemaps and snapshots, Marmottas Versioning module implements the Memento protocol (RFC 7089).
Memento decides between resources (URI-R), timegates (URI-G) and mementos (URI-Mx).
Resources are the original resources. When requesting such resources, the HTTP response include links to the timemap (a list of all versions of the resource) and the timegate (where you can request the resource with Accept-Datetime header).
- A TimeGate supports content negotiation in the datetime dimension. When negotiating with the TimeGate, the HTTP client uses an Accept-Datetime header to send a redirect link for the requested version. Resource versions in Memento has bookmarkable URIs, so you can link directly to a Memento.
- A Memento provides some links in the HTTP response header. It includes links to the first versions (rel=first memento), the latest version (rel=last memento), the current memento (rel=memento), the previous version (rel=prev memento) and the next version (rel=next memento). All links to Mementos also include datetime information.
- A TimeMap provides a list of links to all mementos of a certain resource. At the moment, TimeMaps are able to deliver 2 different formats (application/link-format and text/html) depending on the HTTP Accept request header.
Cite error: Invalid
parameter "group" is allowed only.
<references />, or
<references group="..." />
- Official website
- Marmotta Incubation Proposal
- Apache Marmotta presentation
- Apache Marmotta on the W3C