- From: Nathan <nathan@webr3.org>
- Date: Fri, 11 Mar 2011 18:48:42 +0000
- CC: Thomas Steiner <tomac@google.com>, RDF WG <public-rdf-wg@w3.org>, Ivan Herman <ivan@w3.org>
Nathan wrote:
> Thomas Steiner wrote:
>> Good morning Nathan,
>>
>>> Glad you replied, as I'd very much like to work out where we agree and
>>> disagree.
>> I think we both agree that there must be something beyond
>>
>> [
>> {"s": "<http://webr3.org/nathan#>"},
>> {"p": "foaf:name"},
>> {"o": "Nathan"}
>> ]
>>
>> I think we both have slightly different opinions with regards to
>> mappings. You seem to say
>>
>> {
>> "name": "Nathan"
>> }
>>
>> is enough, we simply provide mappings ("RDF goggles") to whom it may
>> concern that "name" actually is "foaf:name".
>
> yes, to use terms rather than CURIEs essentially, so rather than
>
> foaf -> http://xmlns.com/foaf/0.1/
> foaf:name = resolve(foaf) + 'name'
>
> you just have
> name -> http://xmlns.com/foaf/0.1/name
>
>
>> I seem to say that I'd rather prefer to see the prefixes somewhere in
>> the serialization, such as
>>
>> {
>> "foaf_name": "Nathan"
>> }
>>
>> conserving the beloved dot-notation (so that you can write
>> obj.foaf_name rather than obj['foaf:name']). I could imagine a
>> well-known prefixes directory somewhere, according to, e.g., agreed-on
>> link relations in Atom.
>
> Yes, this is a general question "do we need CURIEs / namespaces in the
> JSON serialization?"
>
> If yes, underscore can be a problem, since many properties include it, $
> could be used though..
>
> obj.foaf$name
>
> There's also the point that prefixes aren't registered and reliable,
> "foaf:name" could just as easily be "ns0:name" or "dc:name" all
> resolving to the same URI - so I guess, if we admit that prefixes are
> not registered names, and are unreliable when following your nose (that
> is you'd need to compare full URI equality, not CURIE token equality)
> why have them there at all?
>
> This could be seen as a trade off thing, all names we use that are not
> full URIs will need to be resolved when using the JSON like it's RDF, so
> why not just keep using simple names ("name") to alias them, preserving
> the simplicity and beloved . notation?
>
>> All this might be too much of a simplification, but I guess this is
>> our main point of different opinions. What do you think?
>
> Well the way I see it, is that with JSON, people are either going to be
> using data from a single source, or following their nose around the
> interwebs. So, for a JSON serialization, I feel we should either use
> simple terms for properties, or full URIs.
>
> when working with data from a single source, stick to the good old used
> every format of:
> obj.name
>
> and when following our nose around the web considering data as RDF then
> we can't rely on the lexical form of either simple names or curies in
> the serialization so we need to do one of the following:
>
> - use full URIs in the serialization
> work with the data like: obj[ foaf('name') ]
> or: obj[ resolve('foaf:name') ]
>
> - run the JSON through some tooling or API to resolve all terms or
> prefixes to URIs before using the data
> work with the data just as above, but requires processing first to
> expand the shortened URIs in the serialization to full URIs in the
> data we work with
>
> - run the JSON through some tooling or API to use our preferred terms
> and prefixes before using the data.
> allows us to work with the data how we want, but requires processing
> first to shrink the URIs down to our preferred terms and curies (and
> possibly expand those in the data up first).
>
> After considering this for a long time, and working on the RDF API, I
> came to the conclusion that APIs account for the latter two options
> regardless of which serialization, so then looking at JSON specifically,
> and what we may want to achieve, it may be wise to go with (1) how
> people are using json already (simple terms), or (2) just use full URIs
> in the JSON to save on some processing, or (3) introduce prefixes/curies
> in to the JSON serialization but realize that it's only a way to save
> bytes on the wire, because data source specific consumers prefer terms,
> and rdf follow your nose will require the use of an API/tooling to make
> the terms and curies usable.
>
> Personal choice being (1) or (2) above.
I should probably note, that (1) doesn't preclude have a colon in a
simple term (since JSON allows it), it would just be a case that
"foaf:name" would be a direct alias for
"http://xmlns.com/foaf/0.1/name", rather than being a namespace.
Probably worth me writing all this up in less all-over-the-place
informal style, I'll do that later on this evening!
Best,
Nathan
Received on Friday, 11 March 2011 18:49:57 UTC