Metreeca/Link
Metreeca/Link is a lightweight Java framework enabling rapid development of model-driven REST/JSON APIs.
Its engine automatically converts high-level declarative JSON-LD models into extended REST APIs supporting CRUD operations, faceted search, data validation and fine‑grained role‑based access control, relieving back-end developers from low-level chores and completely shielding front‑end developers from linked data technicalities.
Metreeca/Link is server and storage-agnostic and may be easily connected to your solution of choice.
Getting started
- Add the framework to your Maven configuration
 
<project>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.metreeca</groupId>
                <artifactId>metreeca-link</artifactId>
                <version>${link.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency> <!-- server adapter -->
            <groupId>com.metreeca</groupId>
            <artifactId>metreeca-jse</artifactId>
        </dependency>
        <dependency> <!-- backend adapter -->
            <groupId>com.metreeca</groupId>
            <artifactId>metreeca-rdf4j</artifactId>
        </dependency>
    </dependencies>
</project> 
- Write your first server and launch it
 
import com.metreeca.jse.Server;
import static com.metreeca.rest.Response.OK;
import static com.metreeca.rest.formats.TextFormat.text;
public final class Hello {
  public static void main(final String... args) {
    new Server()
        .handler(context -> request ->
            request.reply(response -> response
                .status(OK)
                .body(text(), "Hello world!")
            ))
        .start();
  }
} 
- Access you API
 
% curl -i http://localhost:8080/
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 12
Hello world! 
- Delve into the the docs to learn how to publish and consume your data as model-driven REST/JSON‑LD APIs…
 
Modules
| area | javadocs | description | 
|---|---|---|
| core | metreeca‑json | shape-based JSON modelling framework | 
| metreeca‑rest | model-driven REST publishing framework | |
| data | metreeca‑xml | XML/HTML codecs and utilities | 
| metreeca‑rdf | RDF codecs and utilities | |
| server | metreeca‑jse | Jave SE HTTP server connector | 
| metreeca‑jee | Servlet 3.1 containers connector | |
| storage | metreeca‑rdf4j | RDF4J-based SPARQL repository connector | 
Support
- open an issue to report a problem or to suggest a new feature
 - post to Stack Overflow using the 
metreecatag to ask how-to questions - post to groups.google.com/d/forum/metreeca to start open-ended discussions
 
License
This project is licensed under the Apache 2.0 License – see LICENSE file for details.