UNPKG

ldapp

Version:

JavaScript Linked Data Stack

81 lines (53 loc) 2.77 kB
# LDApp A JavaScript Linked Data stack/stub. The ISWC 2014 paper [LDApp - A JavaScript Linked Data Stack](http://ceur-ws.org/Vol-1268/paper13.pdf) is a good starting point to get an overview. ## Quick Start Guide ### Install using npm - install using npm `npm install ldapp` - change folder `cd node_modules/ldapp` - start LDApp using npm `npm start` or node `node ldapp.js` ### Install from sources - clone git repository `git clone https://github.com/bergos/ldapp.git` - change to LDApp folder `cd ldapp` - install dependencies and run build script using npm `npm install` - start LDApp using npm `npm start` or node `node ldapp.js` ### Install WebID certificate - import the WebID PKCS12 certificate/key (`data/webid.p12`) in your browser (password `test`) ### URLs Now you can access the following URLs in your browser. - WebID profile: `https://localhost:8443/card` - raw blog data: `https://localhost:8443/blog` - blog application: `https://localhost:8443/blog.html` RDF graph URLs (the WebID profile and the raw blog data) support content negotiation. By default `application/ld+json`, `text/html` and `text/turtle` will be accepted. Example: Fetch the profile with curl using WebID authentication: `curl -v -k -E data/webid.pem -H 'Accept: text/turtle' https://localhost:8443/card` ## Advanced Configuration ### Persistence Triplestore The default configuration of LDApp uses a in memory triplestore implementation. You can change this with the property `config.store` in `data/config.js`. There is already a commented example configuration for a SPARQL store. See the RDF-Ext documentation for other triplestore implementations. ## Developer Guide ### Folder Structure - `data` configuration, initial graph data and cert+key files - `lib` express modules with Promise API - `utils` util classes and functions for modules - `public` static files + HTML5 applications ### Blog Example App LDApp contains a simple blog example built with React, RDF-JSONify and RDF-Ext. Everything is rendered in the browser. Only static files are used. #### blog.html Just a simple Bootstrap HTML template. The `blog-header` DIV block is used by React to insert the blog name and description. The `blog-posts` DIV block is used by React to insert the blog posts. #### js/blog.js The JavaScript file which contains the app itself. The view and controller logic is implemented in React components. RDF-JSONify generated/consumed JSON-LD objects are used for the model. #### js/identity.js Provides a Mozilla Persona like API to access the authentication assertion. The standard API function `window.navigator.id.get` returns the authentication assertion via callback. The `window.navigator.id.get.agent` function returns the agent IRI via Promise.