- From: Manu Sporny <msporny@digitalbazaar.com>
- Date: Tue, 31 Jan 2012 11:58:30 -0500
- To: Linked JSON <public-linked-json@w3.org>
Thanks to Niklas for scribing! The minutes for today's call are now
available here:
http://json-ld.org/minutes/2012-01-31/
Full text of the discussion follows, as well as a link to the complete
audio transcript:
--------------------
JSON-LD Community Group Telecon Minutes for 2012-01-31
Agenda:
http://lists.w3.org/Archives/Public/public-linked-json/2012Jan/0102.html
Topics:
1. ISSUE-43: Use of IRIs and CURIEs as @context keys
2. ISSUE-56: JSON keys that are not terms
3. ISSUE-52: Should we support lists of lists?
Resolutions:
1. When processing keys in a JSON-LD document, ignore keys and
do not process the subtree for keys that do not have a mapping in
the @context. When compacting and expanding, drop keys that do
not have mappings from the output.
2. Mapping a key to _null_ removes a mapping for that key
in the active context
3. A term can only be redefined, never partially reconfigured
Chair:
Manu Sporny
Scribe:
Niklas Lindström
Present:
Niklas Lindström, Manu Sporny, Gregg Kellogg, Markus Lanthaler,
David I. Lehn
Niklas Lindström is scribing.
Manu Sporny: any updates to the agenda?
Gregg Kellogg: ISSUE-43 and ISSUE-53 -
https://github.com/json-ld/json-ld.org/issues/43
Markus Lanthaler:
https://github.com/json-ld/json-ld.org/issues/53
Gregg Kellogg: we need to discuss issue 43 and 53
… 43 we resolved it last week, but we came into problems with
compaction
… with so many different options, choosing the compaction is
tricky; e.g. some value sets might have to be split into two,
with different keys based on coercion
Issue 53 is normalization and the consequences of splitting it
off into a different spec - based on RDF specifics
Manu Sporny: Let's focus on the syntax spec first; api spec
needs more work
Topic: ISSUE-43: Use of IRIs and CURIEs as @context keys
Manu Sporny: https://github.com/json-ld/json-ld.org/issues/43
Gregg Kellogg: the consequences of having multiple mappings to a
single [property] iri
… with different coercion rules, you use different terms with
the same IRI depending on object value
… upon expansion, these two value lists are merged
… if you've got a date and an integer value, you need to
compact into two different keys or ...
… this is beyond what we intend to do
Manu Sporny: so the way we've defined the context is more
complex; before the mapping was simple (iri - definition (term,
opt coercion)
… now, the mapping is from term to iri and coercion combined;
and we do a string check for term (lexical first)
… there's no ambiguity though; only more complex?
Gregg Kellogg: before, when you process the context, you used
the expanded IRI, not the lexical value of the "term"
Markus Lanthaler: I don't think it was really that clear before
… that issue didn't come up now, it was there before
... but from a syntactic level, we can't handle it; we can
only specify rules to prevent ambiguity
Niklas Lindström: I'm not sure if I'm following - clarification
- the problem here is not that there can be different terms for
different coercion values w/ the same IRI. [scribe assist by Manu
Sporny]
Gregg Kellogg: The problem comes when you apply that to
expansion and compaction algorithms. [scribe assist by Manu
Sporny]
Gregg Kellogg: if you specify two mappings that both map to the
same IRI, it's ambiguous which one you pick. [scribe assist by
Manu Sporny]
Niklas Lindström: I'm willing to defend this complexity - it is
complex when you have very diverse data. [scribe assist by Manu
Sporny]
Niklas Lindström: When you have different objects for the same
property - when you want to express JSON - you want to shield
people from the details of the object values, which is why we
have coercion. [scribe assist by Manu Sporny]
Niklas Lindström: When these two goals collide, there will be a
complex situation, regardless. [scribe assist by Manu Sporny]
Niklas Lindström: I think this is defendable - the value gained
by the ability to have different terms for the combination of a
different property/datatype is greater than not being able to
handle potentially varied object data. [scribe assist by Manu
Sporny]
Niklas Lindström: If you have that situation, your data is very
complex. [scribe assist by Manu Sporny]
Niklas Lindström: I don't think this in and of itself creates
any ambiguity - you won't find any specific term for the value
type... you have to use the full IRI or generate a CURIE for the
prefix defined. [scribe assist by Manu Sporny]
Manu Sporny: I see what gregg is getting at
… if you have a compacted form with terms foo1 and foo2
Markus Lanthaler:
https://github.com/json-ld/json-ld.org/issues/43
Gregg Kellogg: {
Gregg Kellogg: "@context":
Gregg Kellogg: {
Gregg Kellogg: "a": {"@id": "http://example.com/foo", "@type":
"xsd:integer"},
Gregg Kellogg: "b": {"@id": "http://example.com/foo"}
Gregg Kellogg: },
Gregg Kellogg: "a": "1",
Gregg Kellogg: "b": "1"
Gregg Kellogg: }
Manu Sporny: the ambiguity is which term to pick
… if you have two terms pointing to the same @id
Manu Sporny: always pick the lexically smaller value
… I agree with both of you; gregg: this is definitely a
complexity; niklas: this is manageable and we're trying to show
that JSON-LD can handle really complex RDF
Manu Sporny: the alternative, to strip this functionality out,
or saying that it's undefined is hard; we have use cases for
this, and undefined is bad
Manu Sporny: we should turn how conflicts are resolved into a
separate issue
Manu Sporny: it does impact the syntax, so we need to discuss it
soon
Manu creates the issue...
Manu Sporny: https://github.com/json-ld/json-ld.org/issues/74
Gregg Kellogg: with some more syntax spec changes we can close
issue 43
Topic: ISSUE-56: JSON keys that are not terms
Manu Sporny: https://github.com/json-ld/json-ld.org/issues/56
Markus Lanthaler: I think this is closely related to
https://github.com/json-ld/json-ld.org/issues/68
Niklas Lindström: I believe this issue conflates different
things - it talks about disjoint graphs, drop the subtree during
processing, and how we handle @ids with lists of IRIs. [scribe
assist by Manu Sporny]
Manu Sporny: These are three separate issues, yes. [scribe
assist by Manu Sporny]
Manu Sporny: in the beginning of JSON-LD, lists of iris in @id
was a syntax "macro" to say same things to different subjects
Markus Lanthaler: I don't see how lists of IRIs in @id and
disjoint graphs are related. [scribe assist by Manu Sporny]
Manu Sporny: there are three different issues. we make issue 56
to only be about unknown terms. to allow for "raw" json in
json-ld
… the initial thought was to drop the entire subtree
… we wanted to support richer stuff; but to dive in and deep
process data might be very complex
Gregg Kellogg: IMO, ignore sub-tree
Niklas Lindström: This is where the conflation may have begun.
When I discussed this, I did it from my use cases' perspective -
I have @rev to represent reverse relations... it's a magic key,
the value is a JSON object which has what looks like normal terms
pointing to resources. [scribe assist by Manu Sporny]
Niklas Lindström: They demonstrate the inverse - if we drop the
entire subtree, then I can put this data in and the data in the
subtree looks like JSON-LD, but nobody has to care about that.
It's tempting to me to say that I want to keep the subtree, but I
realize that if want @rev, then we have this problem where we
have keys that mean nothing... we have a two step path down, and
that's too complex... [scribe assist by Manu Sporny]
Manu Sporny: ...to handle.
Manu Sporny: I agree
… the other thing that marcus said is that the spec currently
states that terms without mappings are relative iris
… this was never our intent
Gregg Kellogg: the spec's been updated to fix that
Niklas Lindström: Ivan suggested that instead of allowing "@id"
: [{}, {}, {}] - we should use "@data": [{}, {}, {}] to represent
a disjoint graph. [scribe assist by Manu Sporny]
Niklas Lindström: if we allow processors to deep-dive into
unknown terms, we don't have to define @data... deep dive
processors would just find the data... as we just discussed, this
is too complicated. [scribe assist by Manu Sporny]
Markus Lanthaler: Can you explain why this is complicated?
[scribe assist by Manu Sporny]
Gregg Kellogg: we need to be able to ignore contexts
… if we want to allow deep diving; we should create semantics
to do that
… we should ignore unknowns and their values
Niklas Lindström: If I do something like rev.partOf, it creates
an issue - I don't want that to be processed. [scribe assist by
Manu Sporny]
Manu Sporny: if we allow deep dives; when you compact the data;
the result will look very different
… completely different when rebuilt; will confuse people
… therefore, we should not support deep-diving
Markus Lanthaler: it makes sense.
… just to make it clear: what happens on compaction/expansion
Manu Sporny: it is dropped entirely
Gregg Kellogg: agreed
Markus Lanthaler: ok
Gregg Kellogg: it needs to be clear to say when a key is
definitively unmapped
PROPOSAL: When processing keys in a JSON-LD document, ignore
keys and do not process the subtree for keys that do not have a
mapping in the @context. When compacting and expanding, drop keys
that do not have mappings from the output.
Manu Sporny: +1
Niklas Lindström: +1
Gregg Kellogg: +1
Markus Lanthaler: +1
David I. Lehn: +0
RESOLUTION: When processing keys in a JSON-LD document, ignore
keys and do not process the subtree for keys that do not have a
mapping in the @context. When compacting and expanding, drop keys
that do not have mappings from the output.
PROPOSAL: Mapping a key to _null_ removes a mapping for that key
active context
Niklas Lindström: +1 (i.e. JSON null)
Manu Sporny: +1
Gregg Kellogg: +1
Markus Lanthaler: "name": { "@type": null }
Markus Lanthaler: +1
David I. Lehn: +0
RESOLUTION: Mapping a key to _null_ removes a mapping for that
key active context
PROPOSAL: A term can only be redefined, never partially
reconfigured
Markus Lanthaler: +1
Niklas Lindström: +1
Manu Sporny: +1
David I. Lehn: +0
Gregg Kellogg: +1
RESOLUTION: A term can only be redefined, never partially
reconfigured
Topic: ISSUE-52: Should we support lists of lists?
Manu Sporny: https://github.com/json-ld/json-ld.org/issues/52
Gregg Kellogg: we have no real use cases for it, do we?
Markus Lanthaler: can you give a list an iri?
Gregg Kellogg: you can have a list as the value of an @id
Markus Lanthaler: { "@id": "xxxx", "@type": "@list", "@value": [
list values ] }
Niklas Lindström: You can use RDF terms to create an RDF list
with an ID and then for that value, rdf:rest the rest... it would
look terrible, but you could do it. [scribe assist by Manu
Sporny]
Niklas Lindström: This is not specified currently... [scribe
assist by Manu Sporny]
Niklas Lindström: What about {@list: []} in a list?
Niklas Lindström: Like this: {@list: [ {@list: [1, 2]}, {@lisr:
[3, 4] ]} is "a list of lists". But the issue is should [[1,2],
[3,4]] *mean* that
Niklas Lindström: If we supported this syntax, we could support
lists of lists. [scribe assist by Manu Sporny]
Markus Lanthaler: I have a use case (another issue) where a list
has an IRI and can be referenced
Niklas Lindström: http://example.com/list-with-id a rdf:List,
rdf:first 1, rdf:rest (2) .
Gregg Kellogg: there is a way to do it in RDF, round-trips are
of concern
Manu Sporny: yes, the round-trip is of great concern
Niklas Lindström: I agree, we are discussing something very
complex. [scribe assist by Manu Sporny]
Niklas Lindström: If you need to do it, you can do it - any sort
of syntactic short-hand is an issue. [scribe assist by Manu
Sporny]
Niklas Lindström: Serializers for RDF which have a short-hand
for lists stop using the short-hand if the list is described with
other properties or the list is not a list of bnodes. The
short-hand breaks down. [scribe assist by Manu Sporny]
Niklas Lindström: We can use the gruesome and verbose list
mechanism without any changes - we shouldn't try to create
separate support for this. [scribe assist by Manu Sporny]
Niklas Lindström: What about - [ [ … ] ]
Niklas Lindström: That is not supported, to clarify. [scribe
assist by Manu Sporny]
Manu Sporny: Niklas did mention this: {@list: [ {@list: [1, 2]},
{@list: [3, 4] ]}
… in turtle: ( (1 2) (3 4) )
General agreement that we should not support this type of very
advanced list functionality - even if there is a use case here
and there, it may overly complicated JSON-LD.
David I. Lehn: Good call.
-- manu
--
Manu Sporny (skype: msporny, twitter: manusporny)
Founder/CEO - Digital Bazaar, Inc.
blog: PaySwarm vs. OpenTransact Shootout
http://manu.sporny.org/2011/web-payments-comparison/
Received on Tuesday, 31 January 2012 16:59:07 UTC