- From: Gregg Kellogg <gregg@kellogg-assoc.com>
- Date: Mon, 16 May 2011 04:10:41 -0400
- To: Manu Sporny <msporny@digitalbazaar.com>
- CC: "public-linked-json@w3.org" <public-linked-json@w3.org>
On May 16, 2011, at 5:04, "Manu Sporny" <msporny@digitalbazaar.com> wrote: > Sorry it took so long to get back to you Gregg. Been slammed with some > JSON-LD related stuff - we're currently going through a > re-implementation based on the new spec. > > On 05/09/2011 07:29 PM, Gregg Kellogg wrote: >> Hi, I've implemented a Ruby version of JSON-LD [1] and [2], and going >> through the spec I have some questions: > > Fantastic! > >> In processing step 2.1 for @context processing. The text indicates to >> merge each key-value pair into the active context. Is any processing >> performed on the values. For instance, could a value be a CURIE, or >> {"@iri": <value>}? Examples indicate that there is no such >> processing, and each value should be an absolute IRI. The wording >> makes this unclear. > > We were discussing this over the past weekend. The current thinking is > that no processing should occur on the actual values. We were even > thinking of going as far as requiring all values in @coerce to be CURIEs. > > So, based on the current thinking, @iri would not be allowed. > > What a processor does internally is, of course, up to the processor. At > some point, the values will have to be expanded out to full IRIs in > order to do the proper equality comparison. > > We had thought at one point of requiring full IRIs, but note that this > list of types to coerce may get very large over time and thus the > default context would become unwieldy. In order to combat this, we > thought that CURIEs might help us to keep the list smaller than if we > were to use full IRIs. It seems reasonable to me to use URIs for ,aping and URIs or CURIEs for @coerce. Note that in RDFa profiles, mappings are literals, not URIs (although in the anyURI value apace. Does the same reasoning not apply? >> Also in 2.1, for @coerce the doc says to merge each key-value mapping >> to the local context's @coerce mapping, overwriting duplicate values. >> In the case where a mapping is indicated to a list of properties >> (e.g., { "xsd:anyURI": ["foaf:homepage", "foaf:member"] }, does this >> overwrite a previous mapping of { "xsd:anyURI": "foaf:knows" }, or >> add to it. I've implemented it as being additive with replacements. > > You did the right thing - it's supposed to be additive with replacements. > >> For value coercion, does the lookup happen on the lexical- or >> value-space of the property? For example, if a context defines "f": >> "http://xmlns.com/foaf/0.1/" is "f:age" coerced to xsd:integer? > > Yes, the "f:age" object is coerced to "xsd:integer" if a mapping exists > from "f" to "http://xmlns.com/foaf/0.1/" in the current context. > >> The >> default context currently coerces "foaf:age" to "xsd:integer". I >> presume the value-space is used for comparisons, so the mapping is >> based on an expanded URI, not the CURIE lexical value. > > Yes, you are correct. All comparisons should be performed in value-space. > >> In 5.1 IRIs, the arithmetic requirements aren't laid out. I presume >> that for @vocab and CURIE expansion, it is treated as a string >> concatenation, for @base, it is treated like URI join (i.e., "@base": >> "http://example.com/foo", "@": "bar" results in >> <http://example.com/bar> not <http://eample.com/foobar>. > > Hmm... good question - hadn't put enough thought into that one. > > I think expanding that to "http://example.com/bar" would confuse the > least number of people. > > However, it may be that "http://eample.com/foobar" is easier to > implement and more correct. > > We were also considering removing @base entirely as we couldn't think of > a good use case for it. <BASE> makes sense in HTML, but we don't know if > it makes sense in a Web Services framework. That is, do we want to > publish data with relative URLs? Why would someone want to do that? > > @base is in there because we thought people might complain if it wasn't > in there... but do we really need it? I think @base is a good idea. It can help reduce document size, and makes things more readable. >> -- For my parser, I found it useful to automatically coerce rdf:type >> to xsd:anyURI, as "a" is semantic sugar for "rdf:type". > > Good point, I'll make sure to put that in the next version of the spec. > The Default Context type coercion list is woefully minimal. I just > slapped it together to give an example of what the final product would > look like. I think you're right, rdf:type should be in the @coerce list > for xsd:anyURI. > >> Regarding RDF List creation in 3.3, I found it to be simple enough, >> as the logic is pretty much the same as for Turtle. I think it's >> important that JSON allow for an RDF expression of ordered elements, >> and like it or not, the RDF List mechanism is the only viable one we >> have. > > Maybe we can succeed with lists in JSON-LD, where we failed in RDFa. :) > > Or, maybe we can create a better list mechanism and feed that work into > the RDF WG? That may be going a bit too far? I think it's a bad idea when serializations start creating their own semantics. Like it or not, that's the provenance of the RDF WG. >> In 6.2 Type Coercion introduces @type, should this not be @coerce? >> The semantics are equivalent. It's also in an example in 8.3.3. > > That's wrong, it's been fixed. > > Thanks for the feedback Gregg, much appreciated! We'll have our > C++-based JSON-LD parser out shortly. > > How long did it take you to put a first-cut of the JSON-LD parser together? It was pretty easy, did it in just a couple of days, taking advantage of Ruby's JSON support and structural components from my other parsers.. Serialization should be a breeze, although normalization may be hard for versions of Ruby not supporting ordered hashes. > -- manu > > -- > Manu Sporny (skype: msporny, twitter: manusporny) > President/CEO - Digital Bazaar, Inc. > blog: PaySwarm Developer Tools and Demo Released > http://digitalbazaar.com/2011/05/05/payswarm-sandbox/
Received on Monday, 16 May 2011 08:10:57 UTC