Awesome
LDP-CoAP: Linked Data Platform for the Constrained Application Protocol
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.
Modules
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;
Usage with Eclipse and Maven
Each module can be imported as Maven project in Eclipse. Make sure to have the following plugins before importing LDP-CoAP projects:
Documentation
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.
References
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}
}
License
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.
Contact
For more information, please visit the LDP-CoAP webpage.
Contribute
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.