W3C home > Mailing lists > Public > public-annotation@w3.org > August 2015

Re: Roles, multiple bodies, and creating wiki page of potential solution

From: Benjamin Young <bigbluehat@hypothes.is>
Date: Wed, 12 Aug 2015 17:57:29 -0400
Message-ID: <CAE3H5FK_OQ60DVK82P+c8GN4YM28qf468vWcngCjeC89b5eWfQ@mail.gmail.com>
To: Paolo Ciccarese <paolo.ciccarese@gmail.com>
Cc: Robert Sanderson <azaroth42@gmail.com>, t-cole3 <t-cole3@illinois.edu>, W3C Public Annotation List <public-annotation@w3.org>
So...finally catching up on this thread and the surrounding ephemera...

Given the example with the "roles" object (presented by Tim below), the
code "plain JSON" developer code to extract just the "tagging" bodies or
just the "commenting" body would be non-trivial to say the least and would
(as Paolo, iirc, pointed out on the list) require caching identifiers and
such.

That, I think, is where the tension comes in.

As a developer, I want to write the least amount of code possible to find
all the "tagging" annotations.

With that user story, what would a restructuring of Tim's proposal look
like?

Or, conversely, anyone want to take a hack at the code to solve for that
user story on that format? :)

Maybe that helps narrow in on the problem space at hand. I hope it does...

Cheers!
Benjamin

On Wed, Aug 5, 2015 at 2:41 PM, Paolo Ciccarese <paolo.ciccarese@gmail.com>
wrote:

> I honestly really like this solution!
> Paolo
>
> On Wed, Aug 5, 2015 at 2:31 PM, Robert Sanderson <azaroth42@gmail.com>
> wrote:
>
>>
>> Yes, that's right :)
>>
>> Rob
>>
>> On Wed, Aug 5, 2015 at 11:11 AM, Timothy Cole <t-cole3@illinois.edu>
>> wrote:
>>
>>> Posting my reply to the list as you suggested (I was initially focused
>>> on the administrivia of getting the wiki page going, not the details of
>>> Ray's solution).
>>>
>>>
>>>
>>> To continue on with your strawman illustrating Ray's role assignment
>>> approach -- If I wanted to use a blank node for the Embedded Textual
>>> Resource in your example, would this be the JSON?
>>>
>>>
>>>
>>> {
>>>
>>>   "@id": "http://example.org/anno1
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_anno1&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=DmFqIJtEzhqkaDeDwf6E9PYx-7GLfzTUCq9-ZWq4FC0&e=>
>>> ",
>>>
>>>   "@type": "Annotation",
>>>
>>>   "motivation": "bookmarking",
>>>
>>>   "body": [
>>>
>>>     {
>>>
>>>       "@id": "_:n1",
>>>
>>>       "@type": "EmbeddedContent",
>>>
>>>       "value": "Come back and read this page about Paris."
>>>
>>>     },
>>>
>>>     {
>>>
>>>       "@id": "http://example.org/tag1",
>>>
>>>       "@type": "EmbeddedContent",
>>>
>>>       "value": "paris"
>>>
>>>     },
>>>
>>>     {
>>>
>>>       "@id": "http://example.org/tag2
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_tag2&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=VSOMbmuGR41XHMJ5xpJJpxSGDgoi0WzTXC22Q7wg_rc&e=>
>>> ",
>>>
>>>       "@type": "EmbeddedContent",
>>>
>>>       "value": "MustRead"
>>>
>>>     }
>>>
>>>   ],
>>>
>>>   "target":  "@id": "http://example.org/paris.html
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_paris.html&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=5w8OVOI-tWa9ONYZqozWv0FlDWxM6W8hHvg10fSR9_o&e=>
>>> ",
>>>
>>>   "roles": [
>>>
>>>     {"role": "commenting", "for": "_:n1"},
>>>
>>>     {"role": "tagging", "for": "http://example.org/tag1
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_tag1&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=wAyNglO23dQpoSvolgABgz7hAVHB8O7AeVPohr98ee4&e=>
>>> "},
>>>
>>>     {"role": "tagging", "for": "http://example.org/tag2
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_tag2&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=VSOMbmuGR41XHMJ5xpJJpxSGDgoi0WzTXC22Q7wg_rc&e=>
>>> "}
>>>
>>>   ]
>>>
>>> }
>>>
>>> -Tim Cole
>>>
>>>
>>>
>>> *From:* Robert Sanderson [mailto:azaroth42@gmail.com]
>>> *Sent:* Wednesday, August 05, 2015 12:19 PM
>>> *To:* t-cole3 <t-cole3@illinois.edu>; Ivan Herman <ivan@w3.org>
>>> *Cc:* Denenberg, Ray <rden@loc.gov>; Frederick Hirsch <w3c@fjhirsch.com>
>>> *Subject:* Re: Web Annotation -- New Wiki page
>>>
>>>
>>>
>>> On Wed, Aug 5, 2015 at 9:29 AM, Timothy Cole <t-cole3@illinois.edu>
>>> wrote (edited/updated):
>>>
>>> My take away from today's WG call  is that we need:
>>>
>>> 1)  a complete, concrete annotation example or 2 based on Ray's proposed
>>> solution in Turtle as well as JSON-LD, and
>>>
>>>
>>>
>>> Yup, I propose the simple bookmark export use case, rather than the
>>> edits with custom motivations.
>>>
>>>
>>>
>>>
>>>
>>>  2) a wiki page that integrates this/these examples (adding
>>> JSON/JSON-LD) with representative examples of currently supported approach
>>> and other proposed solutions still under discussion.
>>>
>>>
>>>
>>> Yep, and the priority being 1 then 2.
>>>
>>>
>>>
>>>  All examples on the wiki page would be serialized in both JSON/JSON-LD
>>> and Turtle.
>>>
>>>  Am I right that I should take the lead on 2 (creating the wiki page)?
>>>
>>>
>>>
>>> As a strawperson for 1:
>>>
>>>
>>>
>>> {
>>>
>>>   "@id": "http://example.org/anno1
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_anno1&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=DmFqIJtEzhqkaDeDwf6E9PYx-7GLfzTUCq9-ZWq4FC0&e=>
>>> ",
>>>
>>>   "@type": "Annotation",
>>>
>>>   "motivation": "bookmarking",
>>>
>>>   "body": [
>>>
>>>     {
>>>
>>>       "@id": "http://example.org/comment1
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_comment1&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=_oibSjDeFz1gR9uFc6RosvefyN_DZ3CZZL3dJzclHDQ&e=>
>>> ",
>>>
>>>       "@type": "EmbeddedContent",
>>>
>>>       "value": "Come back and read this page about Paris."
>>>
>>>     },
>>>
>>>     {
>>>
>>>       "@id": "http://example.org/tag1
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_tag1&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=wAyNglO23dQpoSvolgABgz7hAVHB8O7AeVPohr98ee4&e=>
>>> ",
>>>
>>>       "@type": "EmbeddedContent",
>>>
>>>       "value": "paris"
>>>
>>>     },
>>>
>>>     {
>>>
>>>       "@id": "http://example.org/tag2
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_tag2&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=VSOMbmuGR41XHMJ5xpJJpxSGDgoi0WzTXC22Q7wg_rc&e=>
>>> ",
>>>
>>>       "@type": "EmbeddedContent",
>>>
>>>       "value": "MustRead"
>>>
>>>     }
>>>
>>>   ],
>>>
>>>   "target":  "@id": "http://example.org/paris.html
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_paris.html&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=5w8OVOI-tWa9ONYZqozWv0FlDWxM6W8hHvg10fSR9_o&e=>
>>> ",
>>>
>>>   "roles": [
>>>
>>>     {"role": "commenting", "for": "http://example.org/comment1
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_comment1&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=_oibSjDeFz1gR9uFc6RosvefyN_DZ3CZZL3dJzclHDQ&e=>
>>> "},
>>>
>>>     {"role": "tagging", "for": "http://example.org/tag1
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_tag1&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=wAyNglO23dQpoSvolgABgz7hAVHB8O7AeVPohr98ee4&e=>
>>> "},
>>>
>>>     {"role": "tagging", "for": "http://example.org/tag2
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_tag2&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=VSOMbmuGR41XHMJ5xpJJpxSGDgoi0WzTXC22Q7wg_rc&e=>
>>> "}
>>>
>>>   ]
>>>
>>> }
>>>
>>>
>>>
>>> Turtle (hand written, please verify)
>>>
>>>
>>>
>>> <http://example.org/anno1
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_anno1&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=DmFqIJtEzhqkaDeDwf6E9PYx-7GLfzTUCq9-ZWq4FC0&e=>>
>>> a oa:Annotation ;
>>>
>>>   oa:motivatedBy oa:bookmarking ;
>>>
>>>   oa:hasTarget <http://example.org/paris.html
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_paris.html&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=5w8OVOI-tWa9ONYZqozWv0FlDWxM6W8hHvg10fSR9_o&e=>>
>>> ;
>>>
>>>   oa:hasBody <http://example.org/comment1
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_comment1&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=_oibSjDeFz1gR9uFc6RosvefyN_DZ3CZZL3dJzclHDQ&e=>>,
>>> <http://example.org/tag1
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_tag1&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=wAyNglO23dQpoSvolgABgz7hAVHB8O7AeVPohr98ee4&e=>>,
>>> <http://example.org.tag2
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org.tag2&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=yNA7EnbXC05mh2eXtBr6jIOP4LyLayVx5uiO6yUBRxM&e=>>
>>> ;
>>>
>>>   oa:hasRole [
>>>
>>>     oa:role oa:commenting ;
>>>
>>>     oa:roleFor <http://example.org/comment1
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_comment1&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=_oibSjDeFz1gR9uFc6RosvefyN_DZ3CZZL3dJzclHDQ&e=>>
>>> ],
>>>
>>>     [
>>>
>>>     oa:role oa:tagging ;
>>>
>>>     oa:roleFor <http://example.org/tag1
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_tag1&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=wAyNglO23dQpoSvolgABgz7hAVHB8O7AeVPohr98ee4&e=>>
>>> ],
>>>
>>>     [
>>>
>>>     oa:role oa:tagging ;
>>>
>>>     oa:roleFor <http://example.org/tag2
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_tag2&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=VSOMbmuGR41XHMJ5xpJJpxSGDgoi0WzTXC22Q7wg_rc&e=>>
>>> ] .
>>>
>>>
>>>
>>> <http://example.org/comment1
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_comment1&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=_oibSjDeFz1gR9uFc6RosvefyN_DZ3CZZL3dJzclHDQ&e=>>
>>> a oa:EmbeddedResource ;
>>>
>>>   rdf:value "Come back and read this page about Paris" .
>>>
>>>
>>>
>>> <http://example.org/tag1
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_tag1&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=wAyNglO23dQpoSvolgABgz7hAVHB8O7AeVPohr98ee4&e=>>
>>> a oa:EmbeddedResource ;
>>>
>>>   rdf:value "paris" .
>>>
>>>
>>>
>>> <http://example.org/tag1
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_tag1&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=cJqARgr41lCItdetoau46NrfOtmYXb1XEdEOItktpAs&s=wAyNglO23dQpoSvolgABgz7hAVHB8O7AeVPohr98ee4&e=>>
>>> a oa:EmbeddedResource ;
>>>
>>>   rdf:value "MustRead" .
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> Some initial observations:
>>>
>>> * All bodies need URIs to be referred to from the role.  Meaning that
>>> clients creating the annotation would have to assign, for example, a UUID
>>> or blank node identifier.
>>>
>>> * There's no need to have the Tag class and the role :) So if we're
>>> adopting this we can drop Tag and SemanticTag :)
>>>
>>> * I don't think we have a use case where the exact same resource is both
>>> a body AND a target, but it would be potentially ambiguous if that were
>>> true, and the same role could be used as both a body role and target role.
>>>
>>>
>>>
>>> R
>>>
>>>
>>>
>>> --
>>>
>>> Rob Sanderson
>>>
>>> Information Standards Advocate
>>>
>>> Digital Library Systems and Services
>>>
>>> Stanford, CA 94305
>>>
>>
>>
>>
>> --
>> Rob Sanderson
>> Information Standards Advocate
>> Digital Library Systems and Services
>> Stanford, CA 94305
>>
>
>
>
> --
> Dr. Paolo Ciccarese
> Principal Knowledge and Software Engineer at PerkinElmer Innovation Lab
> Assistant Professor of Neurology at Harvard Medical School
>
> Assistant in Neuroscience at Mass General Hospital
> ORCID: http://orcid.org/0000-0002-5156-2703
>
Received on Wednesday, 12 August 2015 21:57:59 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 18:54:39 UTC