- From: Manu Sporny <msporny@digitalbazaar.com>
- Date: Tue, 06 Mar 2012 11:43:38 -0500
- To: Linked JSON <public-linked-json@w3.org>
Thanks to Niklas for scribing! The minutes from today's call are now
available here:
http://json-ld.org/minutes/2012-03-06/
Full text of the discussion follows, as well as a link to the complete
audio transcript:
--------------------
JSON-LD Community Group Telecon Minutes for 2012-03-06
Agenda:
http://lists.w3.org/Archives/Public/public-linked-json/2012Mar/0002.html
Topics:
1. ISSUE-44: Support for @set coercion
2. ISSUE-52: Lists of lists
3. ISSUE-74: IRI compaction/expansion conflicts
Resolutions:
1. Adopt the "@container": "@set" syntax when used in a
JSON-LD context to specify that a term is associated with a set
of values.
2. When the "@container": "@set" syntax is used in a JSON-LD
context for a term definition within the framing algorithm, the
resulting term will be associated with a JSON array.
3. Lists of lists are not allowed for JSON-LD 1.0. If a list
of lists is detected, the JSON-LD processor MUST throw an
exception.
Chair:
Manu Sporny
Scribe:
Niklas Lindström
Present:
Niklas Lindström, Manu Sporny, Markus Lanthaler, Gregg Kellogg,
Ted Thibodeau Jr., David I. Lehn
Audio:
http://json-ld.org/minutes/2012-03-06/audio.ogg
Niklas Lindström is scribing.
Manu Sporny: Issues for today are 44, 52, 74, 76 - any updates
or changes to the agenda?
Niklas Lindström: Issue 76 now references
https://github.com/json-ld/json-ld.org/issues/84
Niklas Lindström: Covers support for controlled probing of
unlinked objects
Niklas Lindström: In short, this is a way to parse values of
things referenced by null terms (terms that are not bound to
anything in the context) [scribe assist by Manu Sporny]
Niklas Lindström: This is more to allow terms to be null, but
still allow their contents to be parsed. [scribe assist by Manu
Sporny]
Manu Sporny: We'll keep this in mind today but might not have
time to discuss it (84)
Topic: ISSUE-44: Support for @set coercion
Ted Thibodeau Jr.:
https://github.com/json-ld/json-ld.org/issues/44
Manu Sporny: this has been having out the for quite a while
... josh wanted to process data structures and have a
consistent way of parsing each item
... for instance, if you encounter a telephone number, you
always want to know the value is a list
... we already have @container: @list, we can add @container:
@set as well
Markus Lanthaler: I think he initially wanted this in framing
Manu Sporny: he found this to be wider than only for framing
Niklas Lindström: I'm not sure if he widened it to more than
framing, but I think this is related to general context
definitions. [scribe assist by Manu Sporny]
Niklas Lindström: I think it originated in framing, that's where
he takes a graph and creates JSON from it - in his case, he
applies a frame. In my case, I don't apply a frame, I just apply
a context to my graph data. I have this same need. [scribe assist
by Manu Sporny]
Niklas Lindström: The need I have is to define a context that
ensures that I have a predictable shape for the data. [scribe
assist by Manu Sporny]
Niklas Lindström: My primary data view is part of my construct -
I have a predefinied view of a resource - I know how many nodes
down there is. I have a limited graph. I apply the JSON-LD
context to that limited graph. Then I know what the data looks
like. [scribe assist by Manu Sporny]
Markus Lanthaler: We could make it possible if we say that a
list or a set always has to be an array. [scribe assist by Manu
Sporny]
Manu Sporny: ack: lanthaler
Markus Lanthaler: I think that the thing you're using @context
for something they're not really used for. [scribe assist by Manu
Sporny]
... discussion about how predictable json you can get from
graphs
Markus Lanthaler: I think you're translating RDF data to JSON
using the @context - that's usually used to transform JSON to
RDF. [scribe assist by Manu Sporny]
Niklas Lindström: I don't need frames for this. [scribe assist
by Manu Sporny]
Markus Lanthaler: How do you tell your customers what the shape
of the data is? [scribe assist by Manu Sporny]
Markus Lanthaler: How do you tell your customers what the
structure of the JSON-LD document is? Are they really using
JSON-LD or are they just using the JSON part of JSON-LD? [scribe
assist by Manu Sporny]
Niklas Lindström: They're just using the JSON I give them.
[scribe assist by Manu Sporny]
Markus Lanthaler: So, there is external documentation? [scribe
assist by Manu Sporny]
Niklas Lindström: There isn't - the customers just look at the
service and use the record - if properties are missing, there is
no problem - if they see a list, they know it's a list. If they
see one value, they see one value. [scribe assist by Manu Sporny]
Markus Lanthaler: If you don't specify that in JSON-LD, but you
generate the JSON-LD in a particular way, then it would be
compliant to the spec, right? [scribe assist by Manu Sporny]
Niklas Lindström: Yes. However, it would be nice to just
generate this from the JSON-LD processor. [scribe assist by Manu
Sporny]
Manu Sporny: You could just use a JSON-LD frame for this, right?
[scribe assist by Manu Sporny]
Niklas Lindström: Going from a simple context to JSON-LD frames
would require me to write some 20-odd frames.... It would be more
complexity for me to handle. We could just use @container: @set
and be done with it. [scribe assist by Manu Sporny]
Gregg Kellogg: I do see value in "@container": "@set" in
JSON-LD. [scribe assist by Manu Sporny]
Gregg Kellogg: It's not clear where other than in framing
@container: @set would be applied
Manu Sporny: if @container: @set is specified in the context,
key values in the document that match that term much be given in
an array
Gregg Kellogg: It's not clear to me where the proposal is - we
could look at expansion/compaction - the only place we could
really apply this is framing. My RDF to JSON-LD translator could
frame the data with that algorithm - where do we want this?
[scribe assist by Manu Sporny]
Manu makes a proposal... introduce @set, it only has an effect
during compaction. If used in compaction in the context, the
result is an array.
Niklas Lindström: If you use @container: @set - you should use
an array to encapsulate the data. [scribe assist by Manu Sporny]
Niklas Lindström: I see no harm in parsing it anyway... [scribe
assist by Manu Sporny]
Markus Lanthaler: Would it be possible to say @container: @set
maps to empty frames? [scribe assist by Manu Sporny]
Niklas Lindström: You mean that @container: @set would only be
meaningful in frames? [scribe assist by Manu Sporny]
Markus Lanthaler: Yes... [scribe assist by Manu Sporny]
Niklas Lindström: I think that solves it for me. [scribe assist
by Manu Sporny]
Manu Sporny: that would mean that any algorithm should through
an exception if single values for container-set terms are
encountered?
... we don't want to put unnecessary restrictions on regular
JSON-LD with @set
Gregg Kellogg: I agree, we should keep constraints on @container:
@set to Framing.
Manu Sporny: the other option would be to add a new API call,
e.g. "jsonld.listify()", which would turn every value in a
document into a list
Niklas Lindström: Just want to make sure that if you have this -
"references": {"@container" :"@set"}
Niklas Lindström: Then this - "references": "iri-1"
Niklas Lindström: Will be turned into this - "references":
["iri-1"]
Manu Sporny: it seems we have consensus on adopting @set in this
manner. The other question is if we like this syntax proposed by
Markus:
"@context": {
"property1": { "@id": "something1", "@type": "@list" },
"property2": { "@id": "something2", "@type": [ "@list",
"xsd:date" ] }
}
... this context only applies when we frame the data
Gregg Kellogg: we have discussed this before, and came to the
conclusion that @container was more consistent with the rest of
json-ld
Markus Lanthaler: so @type cannot take arrays in contexts?
Manu Sporny: yes, remember that @type means something different
Manu Sporny: @type in the context is used to set the datatype of
the property
Ted Thibodeau Jr.: perhaps put them onscreen?
… discussion on if framing has to go normalization
PROPOSAL: Adopt the "@container"; "@set" syntax when used in a
JSON-LD context to specify that a term is associated with a set
of values.
Niklas Lindström: +1
Markus Lanthaler: +1
Manu Sporny: +1
David I. Lehn: +1
Ted Thibodeau Jr.: +1
Gregg Kellogg: +1
RESOLUTION: Adopt the "@container": "@set" syntax when used in a
JSON-LD context to specify that a term is associated with a set
of values.
Clarification that at this point this is merely annotational -
i.e. introduces the @set keyword
PROPOSAL: When the "@container"; "@set" syntax is used in a
JSON-LD context for a term definition within the framing
algorithm, the resulting term will be associated with a JSON
array.
Niklas Lindström: +1
Ted Thibodeau Jr.: +1
Manu Sporny: +1
Markus Lanthaler: +1
David I. Lehn: +1
Gregg Kellogg: +1
RESOLUTION: When the "@container": "@set" syntax is used in a
JSON-LD context for a term definition within the framing
algorithm, the resulting term will be associated with a JSON
array.
Topic: ISSUE-52: Lists of lists
Ted Thibodeau Jr.:
https://github.com/json-ld/json-ld.org/issues/52
Manu Sporny: Dave Longley's suggestion is to disallow lists in
lists for the time being (throw exception), and revisit this in
the future if needed
Manu Sporny: anyone in need of lists of lists?
Markus Lanthaler: no, I'm fine without it
Gregg Kellogg: we haven't found any good use cases, and it would
add a lot of complexity
PROPOSAL: Lists of lists are not allowed for JSON-LD 1.0. If a
list of lists is detected, the JSON-LD processor MUST throw an
exception.
Markus Lanthaler: +1
Niklas Lindström: +1
Ted Thibodeau Jr.: +1
Gregg Kellogg: +1
Manu Sporny: +1
David I. Lehn: +1
RESOLUTION: Lists of lists are not allowed for JSON-LD 1.0. If a
list of lists is detected, the JSON-LD processor MUST throw an
exception.
Topic: ISSUE-74: IRI compaction/expansion conflicts
Ted Thibodeau Jr.:
https://github.com/json-ld/json-ld.org/issues/74
Gregg Kellogg: the issue is if you have to terms which map to
the same IRI, when you expand, you know have one key where there
used to be two; when you compact, it is unclear what to do
Markus Lanthaler: the problem can also occur since you can use
full IRIs as keys in documents even if there is a term for it in
the context
Markus Lanthaler: on compaction, values with different datatypes
should be divided between two terms with different coercion
Manu Sporny: we can't do "last key" wins (json keys aren't
ordered)
Manu Sporny: we could use the more specific rule
... the problem is when we have e.g. one xsd:integer and one
xsd:decimal
Gregg Kellogg: there is no problem with e.g. xsd types; we
already have specific types for values at this time
Manu Sporny: we currently have a non-determinism
... we can make the decision based on specificity
David I. Lehn: agenda did say 120 mins :)
Manu Sporny: The intent for how IRI conflicts are resolved when
compacting/expanding: any conflicts between terms that use the
same IRI will use the most specific solution when compacting (for
example, when compacting "foo": "5" and having to pick between a
term that specifies "xsd:integer" as the type and one that
doesn't, the one that specifies "xsd:integer" is selected)
Manu Sporny: If there is no solution that is more specific than
the other, then a lexicographical comparison is made between the
terms in the @context and the lexicographically least term and
it's associated @type and other information is used to expand the
data.
Manu Sporny: When expanding multiple keys that resolve to the
same IRI, the expanded value will have all of the values
associated with the IRI merged into a single JSON array.
Manu Sporny: (the order of the values in the resulting JSON array
is undefined)
Niklas Lindström: +1 on the intent ;)
Gregg Kellogg: +1 on the intent too
Markus Lanthaler: +1
Manu Sporny: +1 on the intent
David I. Lehn: Good call, bye.
(we should also take @container into account regarding
specificity)
Gregg Kellogg: +1 to @container as part of selection
--
Manu Sporny (skype: msporny, twitter: manusporny)
President/CEO - Digital Bazaar, Inc.
blog: PaySwarm Website for Developers Launched
http://digitalbazaar.com/2012/02/22/new-payswarm-alpha/
Received on Tuesday, 6 March 2012 16:44:16 UTC