Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
A uniform interface for domain data

This branch is 197 commits behind substance:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
fixtures
lib
test
.gitignore
CHANGELOG
Cakefile
LICENSE
README.md
data.js
data.min.js
index.js
package.json
server.js

README.md

Data.js

Data.js is a data representation framework for Javascript. It's being developed in the context of Substance, an open publishing platform.

For documentation, usage, and examples, see the offical documentation: http://substance.io/michael/data-js

With Data.js you can:

  • Model your domain data using a simple graph-based object model that can be serialized to JSON.
  • Traverse your graph, including relationships using a simple API.
  • Manipulate and query data on the client (browser) or on the server (Node.js) by using exactly the same API.

Features

  • Data.Graph (A data abstraction for all kinds of linked data)
  • Data.Collection (A simplified interface for tabular data)

Getting Started

Define a schema

var schema = {
  "/type/person": {
    "type": "/type/type",
    "name": "Person",
    "properties": {
      "name": {"name": "Name", "type": "string", "required": true},
      "origin": {"name": "Origin", "type": "/type/location" }
    }
  },
  "/type/location": {
    "type": "/type/type",
    "name": "Location",
    "properties": {
      "name": { "name": "Name", "unique": true, "type": "string", "required": true },
      "citizens": {"name": "Citizens", "unique": false, "type": "/type/person"}
    }
  }
};

Create a new Data.Graph.

var graph = new Data.Graph(schema);

Add some objects.

graph.set({
  _id: "/person/bart",
  type: "/type/person",
  name: "Bart Simpson"
});

graph.set({
  _id: "/location/springfield",
  name: "Springfield",
  type: "/type/location",
  citizens: ["/person/bart"]
});

Set properties (including relationships to other objects)

graph.get('/person/bart')
     .set({origin: '/location/springfield'});

Access your data.

var citizens = graph.get('/location/springfield').get('citizens');

_.each(citizens, function(person) {
  console.log(person.get('name'));
});

In The Wild

  • Substance - A web-based document authoring and publication platform that relies on Data.js for object persistence.
  • Déjàvis - A tool for analyzing and visualizing data. It uses Data.js for filtering and aggregating data
  • Dance.js Dance.js - A data-driven visualization library.
Something went wrong with that request. Please try again.