- From: Manu Sporny <msporny@digitalbazaar.com>
- Date: Wed, 05 Dec 2012 20:27:41 -0500
- To: Linked JSON <public-linked-json@w3.org>
- CC: RDF WG <public-rdf-wg@w3.org>
The minutes from today's telecon are now available. I haven't been able
to clean up and upload the audio yet.
http://json-ld.org/minutes/2012-12-04/
Full text of the discussion follows including a link to the audio
transcript:
--------------------
JSON-LD Community Group Telecon Minutes for 2012-12-04
Agenda:
http://lists.w3.org/Archives/Public/public-linked-json/2012Dec/0004.html
Topics:
1. Algorithm updates
2. ISSUE-157: JSON-LD mapping to RDF terminology
3. ISSUE-184: Definition of JSON-LD processor in the API spec
4. ISSUE-153: Define error handler behavior
5. ISSUE-182: Graph vs. DataSet
Resolutions:
1. The JSON-LD API specification will define two products: 1)
A JSON-LD Implementation, and 2) A JSON-LD Processor, which is
dependent on a valid JSON-LD Implementation and implements the
asynchronous API.
2. Simplify the error handling mechanism by passing an error
object to the callbacks which only consists of an error code and
an optional error message containing additional information for
debugging.
3. State in the syntax spec that JSON-LD can be used as a RDF
graph source. A consumer would just use the default graph and
ignore all named graphs in that case. This would allow a server
to use, e.g., both Turtle and JSON-LD in content negotiation.
Chair:
Manu Sporny
Scribe:
Manu Sporny
Present:
Manu Sporny, Markus Lanthaler, Niklas Lindström, François Daoust,
Gregg Kellogg
Audio:
http://json-ld.org/minutes/2012-12-04/audio.ogg
Manu Sporny is scribing.
Topic: Algorithm updates
Manu Sporny: The algorithms need to be revised.
Manu Sporny: Dave Longley and I are going to go through and
clean up the algorithms near Dec. 15th
Markus Lanthaler: I'm going to update my JSON-LD processor this
week, I hope to update the algorithms as well.
Niklas Lindström: Hopefully, I'm going to have time to get back
to the RDFa Labs stuff (which is JSON-LD under the hood)
François Daoust: [one thing to clean up: remove statements such
as "If context is a string, it must have a lexical form of IRI"
since that's a syntax consideration (and it's defined in the
syntax spec), not a processing step]
Niklas Lindström: I copied some of the JSON-LD implementation
stuff as a result, if I have time I will be able to read through
it and comment on it. I'd really like to be able to factor out
the framing stuff.
Topic: ISSUE-157: JSON-LD mapping to RDF terminology
https://github.com/json-ld/json-ld.org/issues/157
Manu Sporny: Richard was going to write this section, was too
busy, Markus is going to write this up.
Markus Lanthaler:
http://json-ld.org/spec/latest/json-ld-syntax/#data-model
Markus Lanthaler: I took an action to take over the RDF
re-write, I put something in the syntax spec which is
more-or-less what Richard has in his draft. It has a few
clarifications and some things he misunderstood.
Markus Lanthaler:
http://json-ld.org/spec/latest/json-ld-syntax/#relationship-to-rdf
Markus Lanthaler: That should explain the whole data model in
all of it's detail and make it easy to map it to RDF. The
relationship to RDF section is quite short at the moment, there
are not many differences.
Markus Lanthaler: We need some reviews of those two sections,
don't know if they're happy with it yet.
Manu Sporny: We strongly advise against using bnodes for
properties, right?
Markus Lanthaler: yes.
François Daoust: Just one comment - we had removed MAY SHOULD or
MUST from the data model. There should be constraints on the
syntax itself, but not the data model.
François Daoust: It's fine to say that the data model will be an
IRI... but the grammar section should say SHOULD NOT use a bnode.
Discussion about data model section, relationship to RDF, and
ensuring that we address all of the issues brought up by the RDF
WG. The group believes that the changes will address everything
raised by the RDF WG.
Topic: ISSUE-184: Definition of JSON-LD processor in the API spec
https://github.com/json-ld/json-ld.org/issues/184
Markus Lanthaler: In general, I introduced a product which is a
JSON-LD processor, which is the only product that the spec
defines.
Markus Lanthaler: I didn't say anything about parsing because a
processor normally uses a JSON parser for parsing.
Markus Lanthaler: I didn't say anything about transforming data
to a dataset or anything else - it just transforms the document.
I'm not sure if that's enough.
Manu Sporny: I thought we'd have two classes of product: A
"JSON-LD processor" and a "JSON-LD API implementation" (or some
other name). [scribe assist by François Daoust]
Niklas Lindström: Could you say something like: your JSON-LD
processor must be compliant with the algorithms, it can also be
be compliant with the API
Manu Sporny: I think we should have two products, seems like two
different things.
Markus Lanthaler: Why would you want to do one and not the
other?
Niklas Lindström: Some programming languages make it difficult
to implement the asynchronous API.
Manu Sporny: Some developers would rather have a synchronous
API, which we're not going to spec out. We also want to leave
room for people to innovate on the API portion, as we may not
provide something that is the best API for certain use cases.
François Daoust: This is a way to defend the API - it's a way to
keep the API in the spec, having two products. Not having two
products will create a wall in the RDF working group - only need
algorithms, don't need the API. Not having the API tied to a
product diminishes its value in the spec.
Markus Lanthaler: Could we have two levels of implementation?
Level 1 and Level 2.
Niklas Lindström: This is like having a processor supporting XML
Infoset... and then having a DOM implementation on top of that.
PROPOSAL: The JSON-LD API specification will define two products:
1) A JSON-LD Processor, and 2) An Implementation of the JSON-LD
API, which is dependent on a valid JSON-LD Processor
implementation.
Niklas Lindström: .. 1) A JSON-LD Processor, and 2) A JSON-LD API
compliant Processor…?
Manu Sporny: What about 1) A JSON-LD Processor, and 2) A JSON-LD
Processor and API ?
Markus Lanthaler: maybe, a "JSON-LD Processor conformant to the
JSON-LD API" or a "JSON-LD Processor implementing the JSON-LD
API"
Niklas Lindström: 1) A JSON-LD Processor, and 2) A JSON-LD API
implementation, which is a JSON-LD Processor
PROPOSAL: The JSON-LD API specification will define two products:
1) A JSON-LD Implementation, and 2) A JSON-LD Processor, which is
dependent on a valid JSON-LD Implementation.
Markus Lanthaler: +1
Manu Sporny: +1
Gregg Kellogg: +0.5
Niklas Lindström: +1
François Daoust: +1 (equally happy with other terms)
RESOLUTION: The JSON-LD API specification will define two
products: 1) A JSON-LD Implementation, and 2) A JSON-LD
Processor, which is dependent on a valid JSON-LD Implementation
and implements the asynchronous API.
Topic: ISSUE-153: Define error handler behavior
https://github.com/json-ld/json-ld.org/issues/153
Manu Sporny: Initially I had wanted us to try and figure out a
way that a developer could signal that they wanted certain
recoverable errors to be recovered automatically, or they'd
provide the proper interpretation, or they would signal that
processing should stop. A number of folks felt that was overkill,
so the proposal on the table is to simplify the error mechanism
to just a simple error callback mechanism with an error code and
a message.
PROPOSAL: Simplify the error handling by passing an error object
to the callbacks which only consists of an error code and an
optional error message containing additional information for
debugging.
Markus Lanthaler: +1
Niklas Lindström: +1
Manu Sporny: +1
François Daoust: +1
Gregg Kellogg: +1
RESOLUTION: Simplify the error handling mechanism by passing an
error object to the callbacks which only consists of an error
code and an optional error message containing additional
information for debugging.
Manu Sporny: Do we halt on recoverable errors?
Markus Lanthaler: if it's recoverable, is it an error?
Gregg Kellogg: Yes, for example - list_of_lists is recoverable,
but it's also an error.
Gregg Kellogg: I have a feature in my processor which is a
'validate' mode.
Niklas Lindström: Should the processor stop processing the local
object, but continue on error?
Gregg Kellogg: I feel like we should process as much as you can,
so you can find as many errors as you can.
Gregg Kellogg: A way to say 'stop processing' when you encounter
an error is useful.
Gregg Kellogg: We can have a runtime flag to say "stop when you
hit an error" or "continue if you can, on error"
Manu Sporny: I have a problem if we're going to start halting on
errors that should be recoverable. If the XHTML vs. HTML5 debate
has taught us anything, it's that processors should try to go as
far as they reasonably can, sometimes changing the output
drastically in order to not throw an error and "fix" the input to
be something reasonable.
Markus Lanthaler: Yes, but if we do that, the algorithms are
going to get far more complex... we have to cover every error
case and how to recover from it.
Manu Sporny: I see your point, but I think that would be better
than halting.
Gregg Kellogg: I think we need at least two levels of errors -
errors and fatal errors. We want to give folks warnings that
their input is broken in some way and we "fixed" it.
Markus Lanthaler: At the moment, the algorithms are defined for
well-formed documents only. It's up to the processors to produce
warnings if they want to, but they can do that however they want
to.
Manu Sporny: I think that we should use this error/issue
mechanism to report both warnings and errors.
Markus Lanthaler: Then we risk having this issue drawn out for a
much longer time - this issue has already taken a long time to
deal with.
Markus Lanthaler: The reason this issue has been open for such a
long time is that it's difficult to define error behavior for
each of these cases.
Gregg Kellogg: I think the reason is the complexity of the API
callback, not having error recovery conditions.
Niklas Lindström: We need something like: "it is an error to use
@type and @language in the same element. If that happens, a
processor should ignore [one of them] and issue a warning." I.e.
that is a usage error but doesn't result in a processor error,
only a warning? What are the fatal errors?
Niklas Lindström: I'm wondering where we're going here - the
second proposal seems like it may or may not prohibit "Processing
MUST be stopped after an error is triggered".
Gregg Kellogg: in RDFa, we recently agreed to describe the
redefinition of a prefix as a warning. This may come up in
JSON-LD as a warning.
Gregg Kellogg: malformed IRIs can also be warnings.
Gregg Kellogg: A processor should be able to classify that as an
error, but a non-fatal error.
Niklas Lindström: I'm thinking of the two different situations,
where you have a JSON-LD processor (one is during development -
you may have odd data - raise a warning and continue on
errors)... in production mode, you might want to halt on the
first warning/error. I wouldn't want to define something in the
spec where one of these cases is excluded.
Markus Lanthaler: In development, you want more debug output -
it's not just about warnings/errors. I don't think we need to
specify that in the spec.
Markus Lanthaler: It's dependent on implementations - some might
want to debug, do warnings and errors.
more discussion on how to get warnings to developers.
Gregg Kellogg: I think we need 'warnings', 'errors', and 'fatal
errors'
Niklas Lindström: You could just deal with this in the error
callback - throw an error if you want to stop, don't do it if you
don't.
Gregg Kellogg: The issue here is we need some way of saying
'warnings', 'errors', or 'fatal errors'.
Markus Lanthaler: What would need to be added?
Gregg Kellogg: We just need a flag on the 'error', stating
whether it's a 'warning', 'error', or 'fatal error'.
Manu Sporny: We've burned a lot of call time discussing this.
Let's go back to the issue tracker and get some concrete
proposals down, straw-poll those through the issue tracker, and
revisit this issue when we have something solid we can propose.
Topic: ISSUE-182: Graph vs. DataSet
https://github.com/json-ld/json-ld.org/issues/182
Manu Sporny: The RDF WG has kicked this issue back to us and
told us that we need to drive the issue. I think we're all in
agreement here on what needs to be done. So, let's see if we have
consensus here, and if we do, we'll tell the RDF WG that this is
where we have consensus.
PROPOSAL: State in the syntax spec that JSON-LD can be used as a
RDF graph source. A consumer would just use the default graph and
ignore all named graphs in that case. This would allow a server
to use, e.g., both Turtle and JSON-LD in content negotiation.
Manu Sporny: +1
Markus Lanthaler: +1
Gregg Kellogg: +1
Niklas Lindström: +1
Gregg Kellogg:
https://github.com/json-ld/json-ld.org/issues/182#issuecomment-10973315
François Daoust: +1
RESOLUTION: State in the syntax spec that JSON-LD can be used as
a RDF graph source. A consumer would just use the default graph
and ignore all named graphs in that case. This would allow a
server to use, e.g., both Turtle and JSON-LD in content
negotiation.
Gregg Kellogg: This resolution is still a bit problematic. For
example, in many of the named graphs cases, the default graph
would only contain provenance information... the actual data
would be contained in a named graph. This is problematic, so
maybe servers would have to serve their data in a different way.
Niklas Lindström: The issue with named graphs is that you use
them in a different way when you manage your data internally.
That's how you handle the quoting of the dataset stuff...
Niklas Lindström: When you ask the system for the JSON-LD
document for a named graph, you would get the information from
that back in a default graph.
Gregg Kellogg: Well, another proposal I put forward was [scribe
missed]
Manu Sporny: I think the problem here is that there are many
ways to use named graphs and we can't suggest something that is
going to work across the board. What we might do is tell people
the following: If the top-most JSON Object contains a '@graph'
keyword, use that as the 'default graph', if it doesn't contain a
'@graph' keyword, use the top-most JSON Object as the default
graph. If we do that, then we don't hit the issue that Gregg
mentions above.
-- manu
--
Manu Sporny (skype: msporny, twitter: manusporny)
President/CEO - Digital Bazaar, Inc.
blog: HTML5 and RDFa 1.1
http://manu.sporny.org/2012/html5-and-rdfa/
Received on Thursday, 6 December 2012 01:28:46 UTC