Skip to content

Repository files navigation

ldnode

Build StatusNPM VersionGitter chat

Linked Data Platform server based on rdflib.js and node.js. This is all you need to run distributed linked data apps on top of the file system.

You can run ldnode as a command-line tool or as a library for your Nodejs/Express app.

Features

  • GET, PUT, POST and PATCH support
  • Proxy for cross-site data access
  • Access control using RDF ACLs
  • WebID+TLS Authentication
  • Mount as express' router
  • Command line tool
  • Real-time live updates (using websokets)

Command line tool

npm install -g ldnode

The command line tool has the following options

Usage: ldnode [options]
Options:
-v, --verbose Print the logs to console
--version Print current ldnode version
-m, --mount Where to mount Linked Data Platform (default: '/')
-r, --root Root location on the filesystem to serve resources
-p, --port Port to use
-c, --cache Set cache time (in seconds), 0 for no cache
-K, --key Path to the ssl key
-C, --cert Path to the ssl cert
--webid Enable WebID+TLS authentication
-s, --secret HTTP Session secret key (e.g. "your secret phrase")
-P, --proxy Use a proxy on example.tld/proxyPath
--no-live Disable live support through WebSockets
-sA, --suffix-acl Suffix for acl files (default: '.acl')
-sM, --suffix-meta Suffix for metadata files (default: '.meta')
-sC, --suffix-changes Suffix for acl files (default: '.changes')
-sE, --suffix-sse Suffix for SSE files (default: '.events')

For example, to start your own server using the current folder:

$ ldnode --webid --port 443 --cert /path/to/cert --key /path/to/key

Library

Install

npm install

Usage

The library provides two APIs:

  • ldnode.createServer(settings): starts a ready to use Express app.
  • lnode(settings): creates an Express that you can mount in your existing express app.

In case the settings is not passed, then it will start with the following default settings.

{cache: 0,// Set cache time (in seconds), 0 for no cachelive: true,// Enable live support through WebSocketsroot: './',// Root location on the filesystem to serve resourcessecret: 'node-ldp',// Express Session secret keycert: false,// Path to the ssl certkey: false,// Path to the ssl keymount: '/',// Where to mount Linked Data Platformwebid: false,// Enable WebID+TLS authenticationsuffixAcl: '.acl',// Suffix for acl filessuffixChanges: '.changes',// Suffix for acl filessuffixSSE: '.events',// Suffix for SSE filesproxy: false,// Where to mount the proxyerrorHandler: false,// function(err, req, res, next) to have a custom error handlererrorPages: false// specify a path where the error pages are}

Have a look at the following examples or in the examples/ folder for more complex ones

Simple

You can create an ldnode server ready to use using ldnode.createServer(opts)

varldnode=require('ldnode')varldp=ldnode.createServer({key: '/path/to/sslKey.pem',cert: '/path/to/sslCert.pem',webid: true})ldp.listen(3000,function(){// Started Linked Data Platform})
Advanced

You can integrate ldnode in your existing express app, by mounting the ldnode app on a specific path using lnode(opts).

varldnode=require('ldnode')varapp=require('express')()app.use('/test',ldnode(yourSettings))app.listen(3000,function(){// Started Express app with ldp on '/test'})...
Logs

Run your app with the DEBUG variable set:

$ DEBUG="ldnode:*" node app.js

Tests

$ npm test# running the tests with logs
$ DEBUG="ldnode:*" npm test

In order to test a single component, you can run

npmruntest-(acl|formats|params|patch)

Contributing

ldnode is only possible due to the excellent work of the following contributors:

Tim Berners-LeeGitHub/timblTwitter/@timberners_leewebid
Nicola GrecoGitHub/nicolaTwitter/@nicolagrecowebid
Martin Martinez RiveraGitHub/martinmr
Andrei SambraGitHub/deiuTwitter/@deiuwebid

Do you want to contribute?

Have a look at CONTRIBUTING.md.

License

MIT

About

Linked Data Platform server based on rdflib.js and node.js

Resources

Contributing

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages