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.
- 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 -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/keynpm install
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
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})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'})...Run your app with the DEBUG variable set:
$ DEBUG="ldnode:*" node app.js$ npm test# running the tests with logs
$ DEBUG="ldnode:*" npm testIn order to test a single component, you can run
npmruntest-(acl|formats|params|patch)ldnode is only possible due to the excellent work of the following contributors:
| Tim Berners-Lee | GitHub/timbl | Twitter/@timberners_lee | webid |
|---|---|---|---|
| Nicola Greco | GitHub/nicola | Twitter/@nicolagreco | webid |
| Martin Martinez Rivera | GitHub/martinmr | ||
| Andrei Sambra | GitHub/deiu | Twitter/@deiu | webid |
- Join us in Gitter to help with development or to hang out with us :)
- Create a new issue to report bugs
- Fix an issue
Have a look at CONTRIBUTING.md.
MIT