thingweb / thingweb-directory

W3C WoT Thing Directory implementation
Other
19 stars 11 forks source link

thingweb-directory

The repository is archived due to no interest in further development. If you are looking for a TD Directory, have a look at the list at https://www.w3.org/WoT/developers/#tdds. Eclipse Thingweb is planning to have another one in the future.


The Thingweb Directory is an open source directory for Thing Descriptions. The Thing Description (TD) model is a recommendation of the W3C Web of Things working group to describe Things. The directory features an API to create, read, update and delete (CRUD) a TD. The directory can be used to browse and discover Things based on their TDs. This functionality includes but is not limited to following cases:

Structure of the repository

Component diagram for thingweb-directory

Getting Started

The Thingweb Directory requires Java 1.8.

Running the Directory

Download the project and unzip it (see releases). Then, run:

$ bin/directory-app

After this step, the Directory server is running and can be accessed over HTTP at: http://localhost:8080. Run the command above with arg -h for more details.

By default, the Directory runs an in-memory RDF store, whose content is deleted after the Directory is shut down.

Known issues

On Windows, the execution will fail with a Batch error message. If Mingw is installed on your machine, try to run bin/thingweb-directory inside an emulated Bash shell. Alternatively, try java -cp lib\* org.eclipse.thingweb.directory.app.Main.

Interacting with the Directory

The HTTP endpoint provides an HTML client to register and discover Thing Descriptions. This client accesses a REST API to manage Thing Descriptions that complies to the IETF Resource Directory specification. Registration is done by POSTing on /td and discovery can be performed on the following resources:

See directory-servlet/src/main/webapp/api.json for a formal specification of the Thing Directory API. This file is exposed by the server at /api.json. It can e.g. be processed by the Swagger UI to render an online documentation. See the Open API Initiative for more details.

Building from sources

We are using Gradle as a build tool.

The following command will produce a distribution of the Thingweb Directory in directory-app/build/distributions/:

$ cd thingweb-directory
$ gradle build