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

Ray (et al.)-

 

I combined Rob's first strawman and second specificResource examples to generate the following illustrative Annotation scenario and candidate serializations in Turtle. Please verify that I have captured the essence of your proposed Role Assignment approach correctly. Note, I favored Rob's proposed labels (more recent in email thread) over your original suggestions, so oa:hasRoles instead of oa:hasRoleAssignment and oa:roleFor instead of oa:assignedTo (you both agreed on the oa:role predicate label). If you prefer I can revert to your labels for predicates, please let me know.  I also did not include your proposed oa:forAnnotation triple.  As discussed on the list, since each pair of oa:role and oa:for predicate triples as used here share a common blank node subject which in turn is the object of an oa:hasRoles triple having the Annotation as its subject, adding oa:forAnnotation triples would be redundant (and would still be redundant even if the blank nodes were subsequently given de-referenceable identities).  If the oa:hasRoles triple is subsequently discarded, all the oa:role + oa:for pairs of triples would tell a consumer is that the Resources involved once served particular roles in the context of an annotation (invariably true once the annotation has been created). The pair of triples could not be interpreted to assert an invariant role for the Resources in all contexts (which is what happens if you attach a role directly to each Resource).   

 

***Annotation Scenario: A user wants to bookmark an image of the Arc de Triomphe (Paris, France) for later perusal and in doing so wants to remind herself of why she is interested in this image by including 3 Bodies in her Annotation that variously tag, describe and comment on the landmark.

 

***Baseline serialization assuming no body-level role assignments (current model):

 

@prefix dc: <http://purl.org/dc/elements/1.1/> .

@prefix dcterms: <http://purl.org/dc/terms/> .

@prefix oa: <http://www.w3.org/ns/oa#> .

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

@prefix skos: <http://www.w3.org/2004/02/skos/core#> .

<http://example.org/Anno1> a oa:Annotation ;

   oa:motivatedBy oa:bookmarking ;

   oa:hasBody "Come back and view this image on a larger screen.", _:Body2, _:Body3;

   oa:hasTarget <https://commons.wikimedia.org/wiki/File:Paris_arc_de_Triomphe_place_de_l%27Etoile_la_nuit.JPG> .

   _:Body2 a  oa:SemanticTag ;

                                skos:related <http://dbpedia.org/page/Arc_de_Triomphe> .

   _:Body3 a  oa:SpecificResource;

                                oa:hasSource <https://www.youtube.com/watch?v=BZLZyX3JdEM>;

                                oa:hasSelector [ 

                                                a oa:FragmentSelector ;

                                                dcterms:conformsTo <http://www.w3.org/TR/media-frags/> ;

                                                rdf:value "t=247,280" ] .

                                                

***New serialization to allow users to assign a role to each Body independently (proposed update to model): 

 

@prefix dc: <http://purl.org/dc/elements/1.1/> .

@prefix dcterms: <http://purl.org/dc/terms/> .

@prefix oa: <http://www.w3.org/ns/oa#> .

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

@prefix skos: <http://www.w3.org/2004/02/skos/core#> .

<http://example.org/Anno1> a oa:Annotation ;

   oa:motivatedBy oa:bookmarking ;

   oa:hasBody _:Body1, <http://dbpedia.org/page/Arc_de_Triomphe>, _:Body3;

   oa:hasTarget <https://commons.wikimedia.org/wiki/File:Paris_arc_de_Triomphe_place_de_l%27Etoile_la_nuit.JPG> ;

   oa:hasRoles     

                                [ oa:role oa:commenting;

                                  oa:roleFor _:Body1 ],

                                [ oa:role oa:tagging;

                                  oa:roleFor <http://dbpedia.org/page/Arc_de_Triomphe> ],

                                [ oa:role oa:describing;

                                  oa:roleFor _:Body3 ] .

   _:Body1 a  oa:EmbeddedContent ;

                                rdf:value "Come back and view this image on a larger screen.";

                                dc:format "text/plain";

                                dc:language "en".

   _:Body3 a  oa:SpecificResource;

                                oa:hasSource <https://www.youtube.com/watch?v=BZLZyX3JdEM>;

                                oa:hasSelector [ 

                                                a oa:FragmentSelector ;

                                                dcterms:conformsTo <http://www.w3.org/TR/media-frags/> ;

                                                rdf:value "t=247,280" ] .

                                                

This proposal assumes a new class, e.g., oa:RoleAssignment, and 3 new predicates.

1. oa:hasRoles (range is oa:RoleAssignment),

2. oa:role (range is oa:Motivation);

3. oa:roleFor (range is Resource, including oa:EmbeddedContent and oa:SpecificResource classes)

 

Note the necessity to change from Simple Textual Body to Embedded Textual Body in order to have an identifiable Resource to which to connect the role assigned to the Textual Body.  On the other side of the ledger, we no longer need to use a blank node for tagging, although we may want to consider an additional Motivation, oa:semanticTagging as distinct from oa:tagging. 

 

I'll have a draft wiki page with this and other illustrations in both Turtle and JSON ready to share soon. 

 

Thanks,

 

Tim Cole

 

From: Robert Sanderson [mailto:azaroth42@gmail.com] 
Sent: Wednesday, August 05, 2015 3:33 PM
To: Paolo Ciccarese <paolo.ciccarese@gmail.com>
Cc: t-cole3 <t-cole3@illinois.edu>; W3C Public Annotation List <public-annotation@w3.org>
Subject: Re: Roles, multiple bodies, and creating wiki page of potential solution

 

 

And, for Specific Resource bodies, for example:

 

{

  "@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=XmmZBX9DfwHM-3kQkzlH1sX3zbqXnV9l6YbUMHJ4EXg&s=RC3DWVT5SxuTBq7OAhcmj5fxBYKuEvWgwQSePx7kAjE&e=> ",

  "@type": "Annotation",

  "motivation": "bookmarking",

  "body": [

    {

      "@id": "_:b1",

      "@type": "SpecificResource",

      "source": "http://example.org/image.jpg <https://urldefense.proofpoint.com/v2/url?u=http-3A__example.org_image.jpg&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=zjI0r-H6xRs5fYf2_jJkju6US9ijk0nLw4ns2nuwU2k&m=XmmZBX9DfwHM-3kQkzlH1sX3zbqXnV9l6YbUMHJ4EXg&s=JoBu1wPC8zNWI_mIwDPVjpc7SKLSSUOvMwA5SujMw3M&e=> ",

      "selector": {

        "@type": "FragmentSelector",

        "value": "xywh=1,1,100,100"

      }

    },

    {

      "@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=XmmZBX9DfwHM-3kQkzlH1sX3zbqXnV9l6YbUMHJ4EXg&s=qk_aPz9pg0_JWqjiHlHI9mxzfFK5b8yXswICnvnMyok&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=XmmZBX9DfwHM-3kQkzlH1sX3zbqXnV9l6YbUMHJ4EXg&s=v5Tl0JX775sDWGFPupzkahoiJvF1xJniR2PMYm9RZL0&e=> ",

      "@type": "EmbeddedContent",

      "value": "MustRead"

    }

  ],

  "target":  "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=XmmZBX9DfwHM-3kQkzlH1sX3zbqXnV9l6YbUMHJ4EXg&s=25DYgPAccxutOj-0rVkJByBo0MrFTXDvwfrViwximyg&e=> ",

  "roles": [

    {"role": "commenting", "for": "_:b1"},

    {"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=XmmZBX9DfwHM-3kQkzlH1sX3zbqXnV9l6YbUMHJ4EXg&s=qk_aPz9pg0_JWqjiHlHI9mxzfFK5b8yXswICnvnMyok&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=XmmZBX9DfwHM-3kQkzlH1sX3zbqXnV9l6YbUMHJ4EXg&s=v5Tl0JX775sDWGFPupzkahoiJvF1xJniR2PMYm9RZL0&e=> "}

  ]

}

 

 

Note that it must be the @id of the SpecificResource, not of the image, as different selectors could be used on the same resource to pull out different segments.

 

….

 

 

-- 

Rob Sanderson

Information Standards Advocate

Digital Library Systems and Services

Stanford, CA 94305

Received on Friday, 7 August 2015 17:49:00 UTC