RDF Presentation and RDF Presentation Negotiation
An RDF graph can be presented in several ways, using different media types. Examples of RDF media types include application/rdf+xml
, text/turtle
, application/json+ld
.
Today, most of the content consumed/produced/published, on the Web is not presented in RDF.
In the Web of Things, HTTP servers and clients would rather exchange lightweight documents, potentially binary. Currently, most existing RDF Presentations generically apply to any RDF graph, at the cost of being heavy text-based documents. Yet, lightweight HTTP servers/clients could be better satisfied with consuming/producing/publishing lightweight documents, may its structure be application-specific.
On the other hand, various formalisms have been developed:
- to lift documents to RDF. Examples include RML mappings, XSPARQL, SPARQL-Generate;
- to lower RDF to documents. Examples include XSPARQL, STTL, aka SPARQL-Template;
- to validate RDF graphs. Examples include simple SPIN, ShEx, SHACL.
For a given range of RDF graphs and a specific media types, an RDF Presentation is a combination of lifting, lowering, and validation rules. With these rules, one can coherently interpret a representation as RDF (lift), validate the RDF graph, and generate back the representation from the RDF graph (lower).
While sending any kind of document, potentially lightweight, an HTTP server/client may refer to the specific RDF Presentation that is used. Then, the HTTP client/server can lift the document to RDF, and validate it.
Similarly, while requesting for an RDF graph, an HTTP server/client may inform the client/server what representation it prefers. Then, the client/server can validate the RDF graph, then lower it into a document.
What this project contains
This project contains the sources for the RDF Presentation project:
rdfp-website
contains the sources of the project website at https://w3id.org/rdfprdfp-jersey-server
is an extension of Jersey that eases the development of RESTful services that produce and consume RDF. It hides the RDF Presentation description and RDF Presentation Negotiation parts, and lets the end developer focus on manipulating RDF Graphs as Apache Jena models.
Binaries, sources and documentation for rdfp-jersey-server
are available for download at Maven Central. To use it in your Maven project, add the following dependency declaration to your Maven project file ( *.pom
file):
<dependency>
<groupId>com.github.thesmartenergy</groupId>
<artifactId>rdfp-jersey-server</artifactId>
<version>${rdfp-jersey.version}</version>
</dependency>