This document attempts to gather requirements for Linked Data in JSON (JSON-LD) in order to create an objective measure with which to evaluate the JSON-LD Specification.

This document is an experimental work in progress.

Introduction

Definitions

JSON
JSON (JavaScript Object Notation) [[!RFC4627]] is a simple way to express objects in a syntax compatible with JavaScript.
Linked Data
According to Wikipedia, Linked Data ...
describes a method of publishing structured data so that it can be interlinked and become more useful. It builds upon standard Web technologies such as HTTP and URIs, but rather than using them to serve web pages for human readers, it extends them to share information in a way that can be read automatically by computers. This enables data from different sources to be connected and queried.
JSON Object
From [[RFC4627]]:
An object structure is represented as a pair of curly brackets surrounding zero or more name/value pairs (or members). A name is a string. A single colon comes after each name, separating the name from the value. A single comma separates a value from a following name. The names within an object SHOULD be unique.

Requirements

Linked Data

The following are taken to be assertions about the meaning of Linked Data.

This section is intended to abstractly describe the concept of Linked Data. This does not necessarily relate concepts directly to a JSON syntactic expression; that is left for the following section.

  1. Linked Data is a set of documents, each containing a representation of a linked data graph.
  2. A linked data graph is a labeled directed graph, where nodes are subjects or objects, and edges are properties.
  3. A subject is any node in a linked data graph with at least one outgoing edge.
  4. A subject MAY be labeled with a IRI.

    There is some controversy over the use of MAY vs. SHOULD. Could a subject be labeled with a literal? Can nodes be unlabeled (i.e., like RDF Blank Nodes)?

  5. A property is an edge of the linked data graph.
  6. A property SHOULD be labeled with an IRI.
  7. An object is a node in a linked data graph with at least one incoming edge.
  8. An object MAY be labeled with an IRI.
  9. An IRI that is a label in a linked data graph SHOULD be dereferencable to a Linked Data document describing the labeled subject, object or property.
  10. A literal is an object with a label that is not an IRI

JSON-LD

The following are taken to be requirements for creating Linked Data using JSON.

This section has not been discussed on a teleconference

  1. A JSON-LD document MUST be able to express a linked data graph.
  2. A JSON-LD document uses JSON objects, arrays, numbers, strings and other literal names to express semantic information.
  3. A subject is represented with a JSON object.
  4. There MUST be a way label a JSON object with an IRI.
  5. There MUST be a way to reference an un-labeled JSON object that does not have a direct child relationship.
  6. JSON name/value pairs are used to describe property-object relationships.
  7. There MUST be a way to associate a IRI with the name in a JSON name/value pair.
  8. JSON strings MAY represent literals.
  9. JSON strings MAY represent IRIs.
  10. There MUST be a way to determine if a JSON value represents a IRI.
  11. There SHOULD be a way to associate a datatype IRI with a literal JSON value.
  12. JSON booleans, numbers and other literal values represent specific datatyped literals.
  13. A JSON array MAY be used to associate multiple objects with a subject through a common property.
  14. A JSON array MUST NOT be used to imply an order to the component entities.