Warning:
This wiki has been archived and is now read-only.

Expressing Role in Multi-Body Annotations

From Web Annotation Wiki
Jump to: navigation, search

THE ISSUE: While the FPWD Web Annotation Data Model allows for multiple bodies and/or targets in a single annotation (Section 3.2.9) and provides multiplicity semantics (Section 5) to address a subset of multi-Body/Target use cases, it does not provide a means to express other (i.e., non-multiplicity) kinds of roles played by individual Bodies and Targets in multi-Body/Target Annotations. This page illustrates proposed ways to describe (and thereby differentiate) the non-multiplicity roles played by individual Bodies/Targets included in a multi-Body/Target Annotation. Please augment, edit, comment and critique.
 

List of Approaches

For each annotation example we describe the annotating scenario and provide graphs in Turtle and JSON (an appropriate context document turns the JSON into JSON-LD) illustrating:

  • Current Model (i.e., no roles included);
  • Role Assignment;
  • Role Attached to, e.g., oa:SpecificResource;
  • Role as Subproperty of hasBody/hasTarget;
  • Role as Class/Typed Body and Targets (similar pattern to oa:Composite and oa:SemanticTag).

Not illustrated (since it is obvious how to construct) is the approach of creating separate annotations, each with a single Body/Target and its own distinct oa:Motivation. This approach is and will continue to be available.

If you have suggestions of additional approaches the WG should consider for dealing with this issue, please add your suggested approach here and then add below graphs that illustrate your suggested approach for one or more of the annotation scenarios. You can also add an annotation scenario if the ones so far included fail to well enough represent an important use case.

Constraints/Criteria for evaluating approaches

(please augment, edit, elaborate, comment, clarify, disagree as warranted)

  1. In order to associate a role with a Body it must be possible to identify that Body; this means that it is not possible to associate a role with a Simple Textual Body because Simple Textual Bodies have no identifiers nor any other way by which properties may be attached. Note that "identification" may mean using blank nodes in the RDF sense, ie, it does not necessarily involvle minting new URLs.
  2. The approach selected should draw on our current list of oa:Motivations and allow for extension of this list as described in Appendix E of the Data Model.
  3. Generally the role of a Body or Target Resource in an Annotation is contextual, i.e., is specific to the particular Annotation; in general it is incorrect to assume that a Body or Target Resource has the same role (or any role for that matter) elsewhere. In RDF, the triple (<Resource1> hasRole oa:Commenting) means that Resource1, even as used elsewhere, is invariably a comment as defined in the OA ontology. Because this cannot be assumed correct for Resources created outside the context of the particular Annotation in which they have a role, this triple should not be asserted. Similar situation may arise in one of the alternatives below for a (<Resource1> rdf:type oa:Description) which should not be asserted for similar reasons.
  4. Using special and local objects, e.g., oa:SpecificResources do not fall under the previous issue. These Resources are derived from a (typically) pre-existing Web Resource for use in a specific Annotation and are often used using a blank node, whose identifier is not used elsewhere. They are created for and described in this Annotation. Therefore they are allowed to have Annotation-specific properties. Care must be taken when referencing or re-using in another Annotation a SpecificResource that was assigned a role when created. Such reuse must not contradict the role given to the SpecificResource when instantiated. Similar situation occur with other forms of embedded resources (e.g., oa:EmbeddedContent)

The examples below do not include some features that may be necessary in the final usage, like the @context, Turtle prefix definitions, or the object types when their presence or not would not change the structure, nor would they provide additional information, of the examples. (Note, in this respect, the open issue on when to use typing.)

Scenario 1: Bookmarking (with multiple, heterogeneous Bodies)

Description
A user wants to bookmark an image of the Arc de Triomphe (Paris, France), including in her Annotation 3 Bodies (as reminders of why she bookmarked the image) that variously tag, describe, and comment on the landmark.
Current Model (no role descriptions)
JSON Turtle
{
  "id": "http://example.org/Anno1",
  "motivation": "bookmarking",
  "body": [ 
    "This image is worth viewing on my desktop.",
    {  
      "type"   : "SemanticTag",
      "related": "http://dbpedia.org/page/Arc_de_Triomphe"
    },{  
      "id": "https://www.youtube.com/watch?v=BZLZyX3JdEM",
   }],
  "target": { 
      "id"  : "http://tinyurl.com/ParisLandmark2-jpg",
      "type": "Image"
  }
}
<http://example.org/Anno1> 
  oa:motivatedBy oa:bookmarking ;
  oa:hasBody 
    "This image is worth viewing on my desktop.", 
    [ 
      a oa:SemanticTag ;
      skos:related <http://dbpedia.org/page/Arc_de_Triomphe>
    ],
    <https://www.youtube.com/watch?v=BZLZyX3JdEM> ;
  oa:hasTarget <http://tinyurl.com/ParisLandmark2-jpg> .

<http://tinyurl.com/ParisLandmark2-jpg> a dctypes:StillImage .
Role Assignment

Assumes a new class, e.g., oa:RoleAssignment, and 3 new predicates.

  1. oa:hasRoles (Domain is oa:Annotation, Range is new class, i.e., oa:RoleAssignment),
  2. oa:role (Domain is oa:RoleAssignment, Range is oa:Motivation);
  3. <code>oa:roleFor (Domain is oa:RoleAssignment, Range is Resource, more specifically any Resource appearing in the Annotation as objects of oa:hasBody or oa:hasTarget)

All label choices still open for discussion.

JSON Turtle
{
  "id": "http://example.org/Anno1",
  "motivation": "bookmarking",
  "body": [{
      "id"   : "_:Body1",
      "value": "This image is worth viewing on my desktop.",
    },{  
      "id"     : "_:Body2",
      "type"   : "SemanticTag",
      "related": "http://dbpedia.org/page/Arc_de_Triomphe"
    },{ 
      "id": "https://www.youtube.com/watch?v=BZLZyX3JdEM",
    }],
  "target": { 
      "id"  : "http://tinyurl.com/ParisLandmark2-jpg",
      "type": "Image"
    },
  "roles": [ 
      { "role": "commenting", "for": "_:Body1" },
      { "role": "tagging",    "for": "_:Body2" },
      { "role": "describing", "for": "https://www.youtube.com/watch?v=BZLZyX3JdEM" }
    ]
}
<http://example.org/Anno1>
  oa:motivatedBy oa:bookmarking ;
  oa:hasBody _:Body1, _:Body2, <https://www.youtube.com/watch?v=BZLZyX3JdEM> ;
  oa:hasTarget <http://tinyurl.com/ParisLandmark2-jpg> ;
  oa:hasRoles 
    [ oa:role oa:commenting; oa:roleFor _:Body1 ],
    [ oa:role oa:tagging;    oa:roleFor _:Body2 ],
    [ oa:role oa:describing; oa:roleFor <https://www.youtube.com/watch?v=BZLZyX3JdEM> ] .

_:Body1 rdf:value "This image is worth viewing on my desktop." .
_:Body2 a oa:SemanticTag; skos:related <http://dbpedia.org/page/Arc_de_Triomphe> .
<http://tinyurl.com/ParisLandmark2-jpg> a dctypes:StillImage .
Role Attached to SpecificResource

Assumes a new predicate: oa:hasRole which has a Range oa:Motivation and is used to express the role of instances of oa:SpecificResource appearing in the Annotation as objects of oa:hasBody or oa:hasTarget.

JSON Turtle
{
  "id": "http://example.org/Anno1",
  "motivation": "bookmarking",
  "body": [{
      "role" : "commenting",
      "source" : { "value": "This image is worth viewing on my desktop." }
    },{  
      "role" : "tagging",
      "source" : "http://dbpedia.org/page/Arc_de_Triomphe"
    },{  
      "role"  : "describing",
      "source": "https://www.youtube.com/watch?v=BZLZyX3JdEM"
    }],
  "target": { 
      "id"  : "http://tinyurl.com/ParisLandmark2-jpg",
      "type": "Image"
    }
}
<http://example.org/Anno1> 
  oa:motivatedBy oa:bookmarking ;
  oa:hasBody [
      oa:hasRole oa:commenting ;
      oa:hasSource [ rdf:value  "This image is worth viewing on my desktop." ]
    ],[ 
      oa:hasRole   oa:tagging ;
      oa:hasSource <http://dbpedia.org/page/Arc_de_Triomphe> ]
    ],[
      oa:hasRole   oa:describing ;
      oa:hasSource <https://www.youtube.com/watch?v=BZLZyX3JdEM>
    ];
  oa:hasTarget <http://tinyurl.com/ParisLandmark2-jpg> .

<http://tinyurl.com/ParisLandmark2-jpg> a dctypes:StillImage .
Role Attached to EmbeddedContent or SpecificResource

Assumes a new predicate: oa:hasRole which has a Range oa:Motivation and is used to express the role of instances of oa:SpecificResource appearing in the Annotation as objects of oa:hasBody or oa:hasTarget, OR on oa:EmbeddedContent. Types added for clarity of which is which.

JSON Turtle
{
  "id": "http://example.org/Anno1",
  "motivation": "bookmarking",
  "body": [{
      "type" : "Embedded",
      "role" : "commenting",
      "value": "This image is worth viewing on my desktop."
    },{  
      "type" : "Specific",
      "role" : "tagging",
      "source" : "http://dbpedia.org/page/Arc_de_Triomphe"
    },{  
      "type" : "Specific",
      "role"  : "describing",
      "source": "https://www.youtube.com/watch?v=BZLZyX3JdEM"
    }],
  "target": { 
      "id"  : "http://tinyurl.com/ParisLandmark2-jpg",
      "type": "Image"
    }
}
<http://example.org/Anno1> 
  oa:motivatedBy oa:bookmarking ;
  oa:hasBody [
      a oa:EmbeddedContent ;
      oa:hasRole oa:commenting ;
      rdf:value  "This image is worth viewing on my desktop."
    ],[ 
      a oa:SpecificResource ;
      oa:hasRole   oa:tagging ;
      oa:hasSource <http://dbpedia.org/page/Arc_de_Triomphe> ]
    ],[
      a oa:SpecificResource ;
      oa:hasRole   oa:describing ;
      oa:hasSource <https://www.youtube.com/watch?v=BZLZyX3JdEM>
    ];
  oa:hasTarget <http://tinyurl.com/ParisLandmark2-jpg> .

<http://tinyurl.com/ParisLandmark2-jpg> a dctypes:StillImage .
Role as Subproperty of hasBody/hasTarget

Assumes new sub-properties of oa:hasBody (and potentially oa:asTarget), one for each role we might want to express. Because these are attributes of the Annotation, not the Resource serving as Body, the role implications remain local to the annotation.

(For non-Semantic Web affectionados: if p is a subproperty of q then the triple (A p B) would automatically yield the (A q B). Ie, using a subproperty of oa:hasBody would automatically yield that property as well.)

JSON Turtle
{
  "id": "http://example.org/Anno1",
  "motivation": "bookmarking",
  "commentBody"    : "This image is worth viewing on my desktop.",
  "semanticTagBody": {  
      "type": "SemanticTag",
      "related": "http://dbpedia.org/page/Arc_de_Triomphe"
    },
  "descriptionBody": {  
      "id": "https://www.youtube.com/watch?v=BZLZyX3JdEM",
    },
  "target": { 
      "id"  : "http://tinyurl.com/ParisLandmark2-jpg",
      "type": "Image"
    }
}
<http://example.org/Anno1> 
  oa:motivatedBy oa:bookmarking ;
  oa:hasCommentBody "This image is worth viewing on my desktop." ; 
  oa:hasSemanticTagBody [ 
      a oa:SemanticTag ;
      skos:related <http://dbpedia.org/page/Arc_de_Triomphe>
    ] ;
  oa:hasDescriptionBody <https://www.youtube.com/watch?v=BZLZyX3JdEM> ;
  oa:hasTarget <http://tinyurl.com/ParisLandmark2-jpg> .

<http://tinyurl.com/ParisLandmark2-jpg> a dctypes:StillImage .
Role as Class/Typed Bodies and Targets

Assumes new Class for each role we might want to express. List of classes could be easily extended in other namespaces. Follows a pattern similar to oa:SemanticTag and oa:Composite.

Note that the entry for the youtube video must change to a specific resource, otherwise the type information would be added to the youtube video itself.

JSON Turtle
{
  "id": "http://example.org/Anno1",
  "motivation": "bookmarking",
  "body": [{
      "type" : "Comment",
      "value": "This image is worth viewing on my desktop."
    },{  
      "type"   : ["SemanticTag", "Tagging"],
      "related": "http://dbpedia.org/page/Arc_de_Triomphe"
    },{  
      "type"  : ["Specific", "Description"],
      "source": "https://www.youtube.com/watch?v=BZLZyX3JdEM",
    }],
  "target": { 
      "id": "http://tinyurl.com/ParisLandmark2-jpg",
      "type": "Image"
    }
}
<http://example.org/Anno1> 
  oa:motivatedBy oa:bookmarking ;
  oa:hasBody [ a oa:Comment ;
      rdf:value "This image is worth viewing on my desktop." 
    ],[ 
      a oa:SemanticTag, oa:Tagging;
      skos:related <http://dbpedia.org/page/Arc_de_Triomphe>
    ],[
      a oa:SpecificResource, oa:Description ;
      oa:source <https://www.youtube.com/watch?v=BZLZyX3JdEM> 
    ] ;
  oa:hasTarget <http://tinyurl.com/ParisLandmark2-jpg> .

<http://tinyurl.com/ParisLandmark2-jpg> a dctypes:StillImage .

Scenario 2: Copy-edit Annotation with two textual bodies

Description

A user annotates a passage in a Web page, commenting that the passage is poorly written and needs to be changed in one Body, and proposing an edit, i.e., replacement text, that would improve the writing quality of the passage, in a second Body.

Current Model (no role descriptions)
JSON Turtle
{  
  "id": "http://example.org/Anno2",
  "body": [
    "This sentence is an example of an amphibology and needs to be changed.",
    "Piloting an airplane can be a dangerous thing to do."
  ],
  "target": {
    "type"    : "Specific",
    "source"  : "https://en.wikipedia.org/wiki/Syntactic_ambiguity",
    "selector": { 
      "type"  : "TextQuoteSelector",
      "exact" : "Flying planes can be dangerous.",
      "prefix": "mountain?",
      "suffix": "Either th" 
    }  
  }
}
<http://example.org/Anno2>
  oa:hasBody 
     "This sentence is an example of an amphibology and needs to be changed." ,
     "Piloting an airplane can be a dangerous thing to do." ; 
  oa:hasTarget [
    a oa:SpecificResource ;
    oa:hasSource <https://en.wikipedia.org/wiki/Syntactic_ambiguity> ;  
    oa:hasSelector [ 
      a oa:TextQuoteSelector ;
      oa:exact "Flying planes can be dangerous." ;
      oa:prefix "mountain?" ;
      oa:suffix "Either th" 
    ] 
  ] .
Role Assignment
JSON Turtle
{  
  "id": "http://example.org/Anno2",
  "body": [{
      "id"   : "_:Body1",
      "value": "This sentence is an example of an amphibology and needs to be changed."
    },{
      "id"   : "_:Body2",
      "value": "Piloting an airplane can be a dangerous thing to do."    
    }],
  "target": {
    "type"    : "Specific",
    "source"  : "https://en.wikipedia.org/wiki/Syntactic_ambiguity",
    "selector": { 
      "type"  : "TextQuoteSelector",
      "exact" : "Flying planes can be dangerous.",
      "prefix": "mountain?",
      "suffix": "Either th" 
    }
  },
  "roles": [ 
      { "role": "commenting", "for": "_:Body1" },
      { "role": "editing",    "for": "_:Body2" }
  ]
}
<http://example.org/Anno2>
  oa:hasBody _:Body1, :Body2;
  oa:hasTarget [
    a oa:SpecificResource ;
    oa:hasSource <https://en.wikipedia.org/wiki/Syntactic_ambiguity> ;  
    oa:hasSelector [ 
      a oa:TextQuoteSelector ;
      oa:exact "Flying planes can be dangerous." ;
      oa:prefix "mountain?" ;
      oa:suffix "Either th" 
    ] 
  ] ;
  oa:hasRoles 
    [ oa:role oa:commenting; oa:roleFor _:Body1 ],
    [ oa:role oa:editing;    oa:roleFor _:Body2 ] .

_:Body1 rdf:value "This sentence is an example of an amphibology and needs to be changed." .
_:Body1 rdf:value "Piloting an airplane can be a dangerous thing to do." .
Role Attached to SpecificResource
JSON Turtle
{  
  "id": "http://example.org/Anno2",
  "body": [{
      "role" : "commenting",
      "source": { "value": "This sentence is an example of an amphibology and needs to be changed." }
    },{
      "role" : "editing",
      "source": { "value": "Piloting an airplane can be a dangerous thing to do." }
    }],
  "target": {
    "type"    : "Specific",
    "source"  : "https://en.wikipedia.org/wiki/Syntactic_ambiguity",
    "selector": { 
      "type"  : "TextQuoteSelector",
      "exact" : "Flying planes can be dangerous.",
      "prefix": "mountain?",
      "suffix": "Either th" 
    }
  },
}
<http://example.org/Anno2>
  oa:hasBody [
      oa:hasRole oa:commenting ;
      oa:hasSource [ rdf:value "This sentence is an example of an amphibology and needs to be changed." ]
    ],[
      oa:hasRole oa:editing ;
      oa:hasSource [ rdf:value "Piloting an airplane can be a dangerous thing to do." ]
    ] ;
  oa:hasTarget [
    a oa:SpecificResource ;
    oa:hasSource <https://en.wikipedia.org/wiki/Syntactic_ambiguity> ;  
    oa:hasSelector [ 
      a oa:TextQuoteSelector ;
      oa:exact "Flying planes can be dangerous." ;
      oa:prefix "mountain?" ;
      oa:suffix "Either th" 
    ] 
  ]  .
Role Attached to SpecificResource or EmbeddedContent

Types not added, as both are EmbeddedContent in this particular case.

JSON Turtle
{  
  "id": "http://example.org/Anno2",
  "body": [{
      "value": "This sentence is an example of an amphibology and needs to be changed.",
      "role" : "commenting"
    },{
      "value": "Piloting an airplane can be a dangerous thing to do.",
      "role" : "editing"    
    }],
  "target": {
    "type"    : "Specific",
    "source"  : "https://en.wikipedia.org/wiki/Syntactic_ambiguity",
    "selector": { 
      "type"  : "TextQuoteSelector",
      "exact" : "Flying planes can be dangerous.",
      "prefix": "mountain?",
      "suffix": "Either th" 
    }
  },
}
<http://example.org/Anno2>
  oa:hasBody [
      rdf:value "This sentence is an example of an amphibology and needs to be changed." ;
      oa:hasRole oa:commenting
    ],[
      rdf:value "Piloting an airplane can be a dangerous thing to do." ;
      oa:hasRole oa:editing
    ] ;
  oa:hasTarget [
    a oa:SpecificResource ;
    oa:hasSource <https://en.wikipedia.org/wiki/Syntactic_ambiguity> ;  
    oa:hasSelector [ 
      a oa:TextQuoteSelector ;
      oa:exact "Flying planes can be dangerous." ;
      oa:prefix "mountain?" ;
      oa:suffix "Either th" 
    ] 
  ]  .
Role as Subproperty
JSON Turtle
{  
  "id": "http://example.org/Anno2",
  "commentBody": "This sentence is an example of an amphibology and needs to be changed.",
  "editBody"   : "Piloting an airplane can be a dangerous thing to do.",
  "target": {
    "type"    : "Specific",
    "source"  : "https://en.wikipedia.org/wiki/Syntactic_ambiguity",
    "selector": { 
      "type"  : "TextQuoteSelector",
      "exact" : "Flying planes can be dangerous.",
      "prefix": "mountain?",
      "suffix": "Either th" 
    }  
  }
}
<http://example.org/Anno2>
  oa:hasCommentBody "This sentence is an example of an amphibology and needs to be changed." ;
  oa:hadEditBody    "Piloting an airplane can be a dangerous thing to do." ; 
  oa:hasTarget [
    a oa:SpecificResource ;
    oa:hasSource <https://en.wikipedia.org/wiki/Syntactic_ambiguity> ;  
    oa:hasSelector [ 
      a oa:TextQuoteSelector ;
      oa:exact "Flying planes can be dangerous." ;
      oa:prefix "mountain?" ;
      oa:suffix "Either th" 
    ] 
  ]  .
Role as Class / Typed Bodies and Targets
JSON Turtle
{  
  "id": "http://example.org/Anno2",
  "body": [{
      "type" : "Comment",
      "value": "This sentence is an example of an amphibology and needs to be changed."
    },{
      "type" : "Edit",
      "value": "Piloting an airplane can be a dangerous thing to do."
    }],
  "target": {
    "type"    : "Specific",
    "source"  : "https://en.wikipedia.org/wiki/Syntactic_ambiguity",
    "selector": { 
      "type"  : "TextQuoteSelector",
      "exact" : "Flying planes can be dangerous.",
      "prefix": "mountain?",
      "suffix": "Either th" 
    }
  },
}
<http://example.org/Anno2>
  oa:hasBody [
      a oa:Comment ;
      rdf:value "This sentence is an example of an amphibology and needs to be changed." ;
    ],[
      a oa:Edit ;
      rdf:value "Piloting an airplane can be a dangerous thing to do." ;
    ] ;
  oa:hasTarget [
    a oa:SpecificResource ;
    oa:hasSource <https://en.wikipedia.org/wiki/Syntactic_ambiguity> ;  
    oa:hasSelector [ 
      a oa:TextQuoteSelector ;
      oa:exact "Flying planes can be dangerous." ;
      oa:prefix "mountain?" ;
      oa:suffix "Either th" 
    ] 
  ] .

Scenario 3: Classification Annotation with two Targets

Description

In this multi-Target Annotation scenario, the Targets are two pre-event news stories about the first US Presidential Debate of the 2016 campaign cycle. One news story describes the then upcoming debate, the other asks a question about the validity of way candidates were selected for the debate. The annotator in this scenario wants to classify both news stories as being about "Campaign Debates—United States," a Library of Congress Subject Heading, while also recording in the Annotation the different ways each story relates to its subject. Note that the oa:Motivation sub-classes enumerated in the Data Model (Section 3.4) are currently defined in terms of how an Annotation and its Body relate to an Annotation Target. This results here in a somewhat forced example; however, it is reasonable to assume that if additional Motivations are added to our base ontology there could be more natural multi-Target Annotation use cases where it would be useful differentiate the roles of the various Targets and/or how each Target relates to the Body of an Annotation. If so, this may be a signal that we need to revise and potentially extend our oa:Motivation ontology. Alternatively, it may be that a way to express role for Targets in a multi-Target Annotation is not needed.

  Current Model (no role descriptions)
JSON Turtle
{ 
  "id": "http://example.org/Anno3",
  "motivation": "classifying",
  "body"      : { "id" : "http://id.loc.gov/authorities/subjects/sh2009118189" },
  "target"    : [{
    "id" : "http://tinyurl.com/Debate2AirThurs", 
    "type" : "Text"
  },{ 
    "id" : "http://tinyurl.com/NoWay2PickDebate", 
    "type" : "Text" 
  }]  
}
<http://example.org/Anno3>  ;
  oa:motivatedBy oa:classifying ;
  oa:hasBody <http://id.loc.gov/authorities/subjects/sh2009118189> ;
  oa:hasTarget 
     <http://tinyurl.com/Debate2AirThurs> ,
     <http://tinyurl.com/NoWay2PickDebate> .

<http://tinyurl.com/Debate2AirThurs> a dctypes:Text .
<http://tinyurl.com/NoWay2PickDebate> a dctypes:Text .
Role Assignment
JSON Turtle
{ 
  "id": "http://example.org/Anno3",
  "motivation": "classifying",
  "body"      : { "id" : "http://id.loc.gov/authorities/subjects/sh2009118189" },
  "target"    : [{
    "id" : "http://tinyurl.com/Debate2AirThurs", 
    "type" : "Text"
  },{ 
    "id" : "http://tinyurl.com/NoWay2PickDebate", 
    "type" : "Text" 
  }],  
  "roles": [ 
    { "role": "describing",  "for": "http://tinyurl.com/Debate2AirThur" },
    { "role": "questioning", "for": "http://tinyurl.com/NoWay2PickDebate" }
  ]
}
<http://example.org/Anno3>  ;
  oa:motivatedBy oa:classifying ;
  oa:hasBody <http://id.loc.gov/authorities/subjects/sh2009118189> ;
  oa:hasTarget 
     <http://tinyurl.com/Debate2AirThurs> ,
     <http://tinyurl.com/NoWay2PickDebate> ;
  oa:hasRoles 
    [ oa:role oa:commenting;  oa:roleFor <http://tinyurl.com/Debate2AirThurs>  ],
    [ oa:role oa:questioning; oa:roleFor <http://tinyurl.com/NoWay2PickDebate> ] .

<http://tinyurl.com/Debate2AirThurs> a dctypes:Text .
<http://tinyurl.com/NoWay2PickDebate> a dctypes:Text .
Role Attached to SpecificResource
JSON Turtle
{ 
  "id": "http://example.org/Anno3",
  "motivation": "classifying",
  "body"      : { "id" : "http://id.loc.gov/authorities/subjects/sh2009118189" },
  "target"    : [{
    "type"   : "Specific",
    "source" : { 
      "http://tinyurl.com/Debate2AirThurs", 
      "type"   : "Text"
    },
    "role"   : "describing"
  },{ 
    "type"   : "Specific",
    "source" : {
      "id"   : http://tinyurl.com/NoWay2PickDebate",
      "type" : "Text" 
    },
    "role"   : "questioning" 
  }]
}
<http://example.org/Anno3>  ;
  oa:motivatedBy oa:classifying ;
  oa:hasBody <http://id.loc.gov/authorities/subjects/sh2009118189> ;
  oa:hasTarget [
      a oa:SpecificResource ;
      oa:hasSource <http://tinyurl.com/Debate2AirThurs> ;
      oa:hasRole oa:describing
    ],[
      a oa:SpecificResource ;
      oa:hasSource <http://tinyurl.com/NoWay2PickDebate> ;
      oa:hasRole oa:questioning
    ] .

<http://tinyurl.com/Debate2AirThurs> a dctypes:Text .
<http://tinyurl.com/NoWay2PickDebate> a dctypes:Text .
Role Attached to SpecificResource or EmbeddedContent

As previously, as there are no EmbeddedContent resources in this scenario.

Role as Subproperty
JSON Turtle
{ 
  "id": "http://example.org/Anno3",
  "motivation": "classifying",
  "body"      : { "id" : "http://id.loc.gov/authorities/subjects/sh2009118189" },
  "descriptionTarget" : {
    "id" : "http://tinyurl.com/Debate2AirThurs", 
    "type" : "Text"
  },
  "questionTarget" : { 
    "id" : "http://tinyurl.com/NoWay2PickDebate", 
    "type" : "Text" 
  }
}
<http://example.org/Anno3>  ;
  oa:motivatedBy oa:classifying ;
  oa:hasBody <http://id.loc.gov/authorities/subjects/sh2009118189> ;
  oa:hasDescriptionTarget <http://tinyurl.com/Debate2AirThurs> ;
  oa:hasQuestionTarget    <http://tinyurl.com/NoWay2PickDebate> .

<http://tinyurl.com/Debate2AirThurs> a dctypes:Text .
<http://tinyurl.com/NoWay2PickDebate> a dctypes:Text .
Role as Class / Typed Bodies and Targets
JSON Turtle
{ 
  "id": "http://example.org/Anno3",
  "motivation": "classifying",
  "body"      : { "id" : "http://id.loc.gov/authorities/subjects/sh2009118189" },
  "target"    : [{
    "type"   : "Description",
    "source" : {
      "id"  : "http://tinyurl.com/Debate2AirThurs", 
      "type": "Text"
    }
  },{ 
    "type"   : "Question",
    "source" : {
      "id"  : "http://tinyurl.com/NoWay2PickDebate", 
      "type": "Text"
    }
  }]
}
<http://example.org/Anno3>  ;
  oa:motivatedBy oa:classifying ;
  oa:hasBody <http://id.loc.gov/authorities/subjects/sh2009118189> ;
  oa:hasTarget [
      a oa:Description ;
      oa:item <http://tinyurl.com/Debate2AirThurs> 
    ],[
      a oa:Question ;
      oa:item <http://tinyurl.com/NoWay2PickDebate> 
    ] .

<http://tinyurl.com/Debate2AirThurs> a dctypes:Text .
<http://tinyurl.com/NoWay2PickDebate> a dctypes:Text .