LINCD.js - Linked Interoperable Code & Data

Overview

LINCD.js

Javascript library implementing the LINCD protocol.

About LINCD

Even today, most projects use their own data structures, thus creating data silos. Projects that want to share data need understand each others APIs to extract the right data, and then convert that data using custom code.

LINCD aims to remove these barriers to collaboration and interoperability by creating a place where projects can collectively define shared data structures and shared code.

About LINCD.js

LINCD.js is a lightweight Javascript library that implements the LINCD protocol.

With the help of modules built with lincd.js you can integrate data from different sources and build visualizations with ease.

Main Library Features

  • Convert your data to Linked Data and validated SHACL Shapes with ease
  • Access the in-memory graph database with an accessible resource-centric API.
  • Observe changes in the graph with the built-in event system
  • Abstract away ontologies & RDF specifics in Shape Classes
  • Create interface components based on Shape Classes, which abstracts away ontology details from the UI layer
  • Compatible with RDFJS task force spec

Examples & documentation

Are currently actively developed. Signup here to be notified as LINCD is launching

Contributing

To make changes to lincd.js, clone this repository and install dependencies with npm install. Then run npm run dev to start the development process which watches for source file changes in src and automatically updates the individual transpiled files in the lib and the bundles in the dist folder.

Alternatively run npm run build to build the project just once.

We welcome pull requests.

You might also like...

Code Playground is a online application for testing and showcasing user-created and collaborational HTML, CSS and JavaScript code snippets

Code Playground is a online application for testing and showcasing user-created and collaborational HTML, CSS and JavaScript code snippets

Code Playground About Code Playground is a online application for testing and showcasing user-created and collaborational HTML, CSS and JavaScript cod

Dec 17, 2022

Convert some JavaScript/TypeScript code string into a .d.ts TypeScript Declaration code string

convert-to-dts Converts the source code for any .js or .ts file into the equivalent .d.ts code TypeScript would generate. Usage import { convertToDecl

Mar 3, 2022

πŸ“Έ A command-line tool to generate code images of your local code right away from the terminal

πŸ“Έ A command-line tool to generate code images of your local code right away from the terminal

πŸ“Έ rayli πŸ“Έ A command-line tool to generate code images of your local code right away from the terminal Usage Commands Usage $ npm install -g rayli $

Nov 4, 2022

A quickstart AWS Lambda function code generator. Downloads a template function code file, test harness file, sample SAM deffiniation and appropriate file structure.

Welcome to function-stencil πŸ‘‹ A quickstart AWS Lambda function code generator. Downloads a template function code file, test harness file, sample SAM

Jun 20, 2022

A VS Code extension for web-code.

uweb: web-code extension Makes the navigation in web-code easier, adding a few commands. If your workflow is to open a VS Code instance for each indiv

Jun 8, 2022

In this project, I restructure my previous Awesome books app code. The goal is to practice ES6 syntax and also make the code more organized by using ES6 modules.

Awesome Books In this project, I will restructure my previous Awesome books app code. The goal is to make it more organized by using modules. I will a

Aug 23, 2022

VS Code extension that adds a red error squiggle to every word in your code.

VS Code extension that adds a red error squiggle to every word in your code.

Dumbisense Dumbisense is a VS Code extension that adds a red error squiggle to every word in your code, with an interesting error message and dino ima

Sep 3, 2022

Have a code snippet, Create a code video

CodeVideo CodeVideo is a product that helps you to make code explanation videos. It's quick and easy, so anybody can create beautiful code videos with

Nov 7, 2022
Comments
  • LINCD tutorial: Multiple versions of LINCD are loaded error

    LINCD tutorial: Multiple versions of LINCD are loaded error

    As a LINCD beginner I want to complete the LINCD tutorial at https://docs.lincd.org/docs/tutorial-linked-data/ so that I can start learning to build on the platform. I get this error when I follow the instructions under the 'start development' section. Can you help me with this? Thanks in advance! Rick

    My node version: v16.17.0

    rickvannierop in ~/RickTest  > npm start
    
    > [email protected] start
    > npm run server:dev
    
    
    > [email protected] server:dev
    > env-cmd -e dev nodemon --watch ../../modules/lincd-server/lib --watch ../../modules/lincd-server/site.webpack.config.js ./backend/server.js
    
    [nodemon] 2.0.20
    [nodemon] to restart at any time, enter `rs`
    [nodemon] watching path(s): ../../modules/lincd-server/lib ../../modules/lincd-server/site.webpack.config.js
    [nodemon] watching extensions: js,mjs,json
    [nodemon] starting `node ./backend/server.js`
    /Users/rickvannierop/RickTest/node_modules/lincd-jsonld/node_modules/lincd/lib/utils/Module.js:289
            throw new Error("Multiple versions of LINCD are loaded");
            ^
    
    Error: Multiple versions of LINCD are loaded
        at initTree (/Users/rickvannierop/RickTest/node_modules/lincd-jsonld/node_modules/lincd/lib/utils/Module.js:289:15)
        at Object.<anonymous> (/Users/rickvannierop/RickTest/node_modules/lincd-jsonld/node_modules/lincd/lib/utils/Module.js:307:1)
        at Module._compile (node:internal/modules/cjs/loader:1126:14)
        at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10)
        at Module.load (node:internal/modules/cjs/loader:1004:32)
        at Function.Module._load (node:internal/modules/cjs/loader:839:12)
        at Module.require (node:internal/modules/cjs/loader:1028:19)
        at require (node:internal/modules/cjs/helpers:102:18)
        at Object.<anonymous> (/Users/rickvannierop/RickTest/node_modules/lincd-jsonld/lib/package.js:5:18)
        at Module._compile (node:internal/modules/cjs/loader:1126:14)
    [nodemon] app crashed - waiting for file changes before starting...
    ^C
    rickvannierop in ~/RickTest  > npm list                         
    [email protected] /Users/rickvannierop/RickTest
    β”œβ”€β”€ @babel/[email protected]
    β”œβ”€β”€ @babel/[email protected]
    β”œβ”€β”€ @babel/[email protected]
    β”œβ”€β”€ @babel/[email protected]
    β”œβ”€β”€ @babel/[email protected]
    β”œβ”€β”€ @babel/[email protected]
    β”œβ”€β”€ @babel/[email protected]
    β”œβ”€β”€ @types/[email protected]
    β”œβ”€β”€ @types/[email protected]
    β”œβ”€β”€ [email protected]
    β”œβ”€β”€ [email protected]
    β”œβ”€β”€ [email protected]
    β”œβ”€β”€ [email protected]
    β”œβ”€β”€ [email protected]
    β”œβ”€β”€ [email protected]
    β”œβ”€β”€ [email protected]
    β”œβ”€β”€ [email protected]
    β”œβ”€β”€ [email protected]
    └── [email protected]
    
    rickvannierop in ~/RickTest  > 
    
    opened by rickvannierop 0
Releases(v0.3.0)
  • v0.3.0(Sep 20, 2022)

    Full Changelog: https://github.com/Semantu/lincd/compare/v0.2.8...v0.3.0

    Storage

    Quads live in graphs, graphs live in stores All quads live in a graph. And all graphs live in a store (implementing IQuadStore). Updates to graphs are automatically passed on to the right store. This can be configured with some of the methods laid out below.

    defaultGraph When a new node is created locally (using NamedNode.create()) it is a temporary node. All temporary nodes and their properties (so any quads with this node as subject or object) are stored in the default graph. The contents of the default graph are lost on a page refresh or system restart. The default graph is - by default - the only graph that is not stored in a permanent store.

    default storage graph When a temporary node is saved, all of it's properties (related quads) are sent to the default storage graph. You can set the default storage graph using Storage.setDefaultStorageGraph(), though it will often automatically be set if you set a default store.

    default store You can now set the default store for storage using Storage.setDefaultStore(store). This store will then be used when a new (temporary) node is saved using node.save() and for all property changes to existing non-temporary nodes (using for example node.set(x,y))

    When you set the default store, Storage will internally request store.getDefaultGraph(). This graph will then be used as the default storage graph. And changes in that default storage graph are sent to the default store.

    Storing shapes in a specific store or graph You can now use Storage.storeShapesInGraph(graph,...shapeClasses) or Storeage.storeShapesInStore(store,...shapeClasses) to state that all instances of this shape should be stored in the indicated graph/store.

    Note that if you use stores, Storage will internally use that stores' defaultGraph, and store the shapes in that graph, which then get sent over to the store. In other words Storeage.storeShapesInStore(store,...shapeClasses) is equivalent to Storage.storeShapesInGraph(store.getDefaultGraph(),...shapeClasses)

    A final note on storage: It is possible to let a IQuadStore store all the quads in the default graph, though this will include all the temporary nodes created, with temporary URI's (lincd://temp/...)

    Shape validation

    You can now test if nodes are valid instances of a certain shape. Using ShapeClass.validate(node).

    Example:

    @linkedShape
    class Person extends Shape { 
       static targetClass:NamedNode = foaf.Person;
    }
    
    let personNode = NamedNode.create();
    personNode.set(rdf.type,foaf.Person);
    
    Person.validate(personNode);
    

    Testing

    The first LINCD test has been added for these storage features. For that, a JEST setup has been made

    Source code(tar.gz)
    Source code(zip)
Owner
Semantu
Empowering Collaboration & Interoperability with our open LINCD protocol & repository and our no-code web3 app builder
Semantu
Light-weight Linked Open Data native cataloguing and crowdsourcing platform

id name brief-description type release-date release-number work-package keywords licence release link demo running-instance credits clef CLEF, Crowdso

Polifonia H2020 10 Apr 26, 2022
This is an email scheduler made using MERN stack. This repo contains client, server side is linked in readme

Email Scheduler Client This is an email scheduler client (server in different repository). It is made using react. Overview User can sign-up/sign-in,

Sai Charan 3 Dec 3, 2022
This Plugin is For Logseq. If you're using wide monitors, you can place journals, linked references, and journal queries side by side.

Logseq Column-Layout Plugin Journals, linked references, and journal queries can be placed side by side if the minimum screen width is "1850px" or mor

YU 14 Dec 14, 2022
Creates a table of contents in a DOM element optionally linked to with anchors. No jQuery or other dependencies.

HTML-Contents Creates a table of contents in a DOM element optionally linked to with anchors. No dependencies. @psalmody Get It We're on npm: npm i ht

Michael Tallino 3 Oct 25, 2022
A front-end only implementation of linked template cards for Lovelace

Linked Lovelace by @daredoes A Javascript/Websocket way to do templating in the Lovelace UI Support Hey you! Help me out for a couple of ?? or a β˜• ! F

Daniel Evans 13 Dec 12, 2022
A VS Code extension to practice and improve your typing speed right inside your code editor. Practice with simple words or code snippets.

Warm Up ?? ??‍?? A VS Code extension to practice and improve your typing speed right inside your code editor. Practice with simple words or code snipp

Arhun Saday 34 Dec 12, 2022
JSON Visio is data visualization tool for your json data which seamlessly illustrates your data on graphs without having to restructure anything, paste directly or import file.

JSON Visio is data visualization tool for your json data which seamlessly illustrates your data on graphs without having to restructure anything, paste directly or import file.

Aykut Saraç 20.6k Jan 4, 2023
It shows an effective way to correct bus arrival information using data analytics based on Amazon Serverless such as Kiness Data Stream, Kinesis Data Firehose, S3, and Lambda.

Amazon Serverlessλ₯Ό μ΄μš©ν•œ μ‹€μ‹œκ°„ λ²„μŠ€ 정보 μˆ˜μ§‘ 및 μ €μž₯ λ³Έ github repositoryλŠ” λ²„μŠ€ 정보λ₯Ό 주기적으둜 μˆ˜μ§‘ν•˜μ—¬ 뢄석할 수 μžˆλ„λ‘, Amazon Serverless인 Amazon Kinesis Data Stream, Kinesis Data

John Park 4 Nov 13, 2022
A table component for your Mantine data-rich applications, supporting asynchronous data loading, column sorting, custom cell data rendering, row context menus, dark theme, and more.

Mantine DataTable A "dark-theme aware" table component for your Mantine UI data-rich applications, featuring asynchronous data loading support, pagina

Ionut-Cristian Florescu 331 Jan 4, 2023
Tool to sign data with a Cardano-Secret-Key // verify data with a Cardano-Public-Key // generate CIP-8 & CIP-36 data

Tool to sign data with a Cardano-Secret-Key // verify data with a Cardano-Public-Key // generate CIP-8 & CIP-36 data

Martin Lang 11 Dec 21, 2022