W3C Linked Data Platform 1.0 specification defines resource management primitives for HTTP only, pushing into the background not-negligible use cases related to Web of Things (WoT) scenarios where HTTP-based communication and infrastructures are unfeasible.
LDP-CoAP proposes a mapping of the LDP specification for RFC 7252 Constrained Application Protocol (CoAP) and a complete Java-based framework to publish Linked Data on the WoT.
A general translation of LDP-HTTP requests and responses is provided, as well as a fully comprehensive framework for HTTP-to-CoAP proxying.
LDP-CoAP framework also supports the W3C Linked Data Notifications (LDN) protocol aiming to generate, share and reuse notifications across different applications.
LDP-CoAP functionalities can be tested using the W3C Test Suite for LDP and the LDN Test Suite.
LDP-CoAP (version 1.3.x) consists of the following sub-projects:
- ldp-coap-core: basic framework implementation including the proposed LDP-CoAP mapping;
- ldp-coap-test: includes reference client/server implementation used to test the framework according to the test suites cited above;
- ldp-coap-raspberry: usage examples exploiting ldp-coap-core on a Raspberry Pi 1 Model B+ board;
- ldp-coap-android: simple project using ldp-coap-core on Android platform;
LDP-CoAP also requires Californium-LDP, a fork of the Eclipse Californium framework supporting LDP specification. In particular, the following modules were defined as local Maven dependencies:
- californium-core-ldp: a modified version of the californium-core library extended to support LDP-CoAP features;
- californium-proxy-ldp: a modified version of the californium-proxy used to translate LDP-HTTP request methods and headers into the corresponding LDP-CoAP ones and then map back LDP-CoAP responses to LDP-HTTP;
Each module can be imported as Maven project in Eclipse. Make sure to have the following plugins before importing LDP-CoAP projects:
Hands-on introduction to LDP-CoAP using basic code samples available on the project webpage.
More details about packages and methods can be found on the official Javadoc.
If you want to refer to LDP-CoAP in a publication, please cite one of the following papers:
@InProceedings{ldp-coap-framework,
author = {Giuseppe Loseto and Saverio Ieva and Filippo Gramegna and Michele Ruta and Floriano Scioscia and Eugenio {Di Sciascio}},
title = {Linked Data (in low-resource) Platforms: a mapping for Constrained Application Protocol},
booktitle = {The Semantic Web - ISWC 2016: 15th International Semantic Web Conference, Proceedings, Part II},
series = {Lecture Notes in Computer Science},
volume = {9982},
pages = {131--139},
month = {oct},
year = {2016},
editor = {Paul Groth, Elena Simperl, Alasdair Gray, Marta Sabou, Markus Krotzsch, Freddy Lecue, Fabian Flock, Yolanda Gil},
publisher = {Springer International Publishing},
address = {Cham},
}
@InProceedings{ldp-coap-proposal,
author = {Giuseppe Loseto and Saverio Ieva and Filippo Gramegna and Michele Ruta and Floriano Scioscia and Eugenio {Di Sciascio}},
title = {Linking the Web of Things: LDP-CoAP mapping},
booktitle = {The 7th International Conference on Ambient Systems, Networks and Technologies (ANT 2016) / Affiliated Workshops},
series = {Procedia Computer Science},
volume = {83},
pages = {1182--1187},
month = {may},
year = {2016},
editor = {Elhadi Shakshuki},
publisher = {Elsevier}
}
ldp-coap-core, ldp-coap-android and ldp-coap-raspberry modules are distributed under the Apache License, Version 2.0.
californium-core-ldp and ldp-coap-proxy are distributed under the Eclipse Public License, Version 1.0 as derived projects.
For more information, please visit the LDP-CoAP webpage.
The main purpose of this repository is to share and continue to improve the LDP-CoAP framework, making it easier to use. If you're interested in helping us any feedback you have about using LDP-CoAP would be greatly appreciated. There are only a few guidelines that we need contributors to follow reported in the CONTRIBUTING.md file.