W3C home > Mailing lists > Public > public-linked-json@w3.org > April 2012

RE: Clarification on blank node idioms

From: Markus Lanthaler <markus.lanthaler@gmx.net>
Date: Mon, 2 Apr 2012 18:28:06 +0800
To: "'Danny Ayers'" <danny.ayers@gmail.com>, <public-linked-json@w3.org>
Message-ID: <00c901cd10bb$57f42800$07dc7800$@lanthaler@gmx.net>
Hi Danny,

> After not having looked at the spec for months, I'm in the process of
> manually converting a bit of Turtle into JSON-LD. I stumbled at this
> point:
> <http://hyperdata.org/Hello>
> 	foaf:maker [ foaf:nick "danja" ] .
> Text-searching the spec ("blank nodes") I found:
> http://json-ld.org/spec/latest/json-ld-syntax/#identifying-unlabeled-
> nodes
> ...which didn't seem to help at all. How would the above be expressed
> using the "_:blank" style?

Generally blank nodes are generated automatically when you convert to RDF. If you want to label an object with a specific blank node you use the idiom described in the spec.

So the above example (which also just has implicit blank nodes) would be expressed as follows:

  "@context": {
    "maker": "http://xmlns.com/foaf/0.1/maker",
    "nick": "http://xmlns.com/foaf/0.1/nick"
  "@id": "http://hyperdata.org/Hello",
  "maker": {
    "@id": "_:blank",
    "nick": "danja"

> One thing I'm still uncertain about is that although the JSON-LD above
> produced the triples I was after, the context part doesn't distinguish
> what kind of a node the object of maker/subject of nick was. This
> appears to be possible using the context:
> 	"@context": {
> 		"maker": {
>       		"@id": "http://xmlns.com/foaf/0.1/maker",
>       		"@type": "@id"
>     	},
> - but doesn't make any difference to the resulting triples.

The reason for this is that you set the value to an object and not a literal (string, number, boolean in JSON). If you would have set it to "http://example.org/maker" you would have to add that @type declaration.

> Leading to the question: why would/should anyone bother putting node
> type info into the context?

It's used for type coercing with scalars/literals. As explained above. Since you use an object as value, JSON-LD automatically generates an identifier for that object and "knows" that it is an IRI (when converted to Turtle for example).

Hope this helps,

Markus Lanthaler
Received on Monday, 2 April 2012 10:29:04 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 20:53:19 UTC