- 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>
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 -- Markus Lanthaler @markuslanthaler
Received on Monday, 2 April 2012 10:29:04 UTC