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.
- 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)
npm install
The library provides two APIs:
ldnode.createServer(settings): starts a ready to use Express app.lnode(settings): creates an Express routes 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 cache
live: true, // Enable live support through WebSockets
root: './', // Root location on the filesystem to serve resources
secret: 'node-ldp', // Express Session secret key
cert: false, // Path to the ssl cert
key: false, // Path to the ssl key
mount: '/', // Where to mount Linked Data Platform
webid: false, // Enable WebID+TLS authentication
suffixAcl: '.acl', // Suffix for acl files
suffixChanges: '.changes', // Suffix for acl files
suffixSSE: '.events' // Suffix for SSE files
}You can create an ldnode ready to use Express server using ldnode.createServer(opts)
var ldnode = require('ldnode')
var ldp = ldnode.createServer()
ldp.listen(3000, function() {
// Started Linked Data Platform
})You can integrate it with your existing express app just by using lnode(opts)
var ldnode = require('ldnode')
var app = require('express')()
app.use('/test', ldnode({ root:'/path/to/root/container' }))
app.listen(3000, function() {
// Started Express app with ldp on '/test'
})
...Run your app with the DEBUG variable set:
$ DEBUG="ldnode:*" node app.jsnpm 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")
--no-live Disable live support through WebSockets
-sA, --suffix-acl Suffix for acl files (default: '.acl')
-sC, --suffix-changes Suffix for acl files (default: '.changes')
-sE, --suffix-sse Suffix for SSE files (default: '.events')
There are some scripts in the package.json:
npm start: starts a very basic ldnode with default configsnpm run ldp-webid: run ldnode with SSL and WebID+TLS enabled (remember it runs in HTTPS)npm run ldp-ssl: same as the above without WebID+TLS support
The tests assume that there is a running ldnode.
$ npm test
# running the tests with logs
$ DEBUG="ldnode:*" npm testIn order to test a single component, you can run
npm run test-(acl|formats|params|patch)Do you want to contribute? Sure, have a look at CONTRIBUTING.md.
MIT