W3C home > Mailing lists > Public > public-openannotation@w3.org > December 2019

AW: Expressing relations between targets?

From: Simon Rainer <Rainer.Simon@ait.ac.at>
Date: Tue, 10 Dec 2019 07:28:20 +0000
To: Bridget Almas <balmas@gmail.com>, Benjamin Young <byoung@bigbluehat.com>, "public-openannotation@w3.org" <public-openannotation@w3.org>
Message-ID: <8c8210697c3345d8bf703383b899e8fa@ait.ac.at>
Hi Bridget,

interesting. It's certainly a bit of a different approach to my original thoughts, but could be pretty applicable... (And actually it might be closer to what we are doing now internally right now, although in a proprietary way). To summarize how I understand this (and how I'd apply it to my case) - please correct me if I'm wrong: you are essentially creating an annotation that's attached to "one end of the arrow", as it were. And then there's a single body in there, that essentially models the "arrow" (link relation + target).

In terms of mechanics, I think that would totally work for us, too. I wonder what people's views are on the body structure, though. I.e. the body being a graph that works like a target :-) In any case: IMO a good pattern.

Cheers & thanks,


Von: Bridget Almas <balmas@gmail.com>
Gesendet: Montag, 9. Dezember 2019 22:45
An: Benjamin Young; public-openannotation@w3.org
Betreff: Re: Expressing relations between targets?

Hi Benjamin,

Sure. The use case is not exactly the same as Rainer's but I think it has some similarities.  Note that this was done with the OA data model before it became the W3C model, so it's a little out of date that way as well.

But anyway, the following is an annotation which reflects a user annotating a bibliographic entry in a bibliographic dictionary. The target of the annotation is the selection of the name Rhea in the entry for the person entity named Cronus. The body of the annotation is a graph which describes the bond between the resource identified by the text "Rhea" with a Person entity with the uri for the Cronus person entity (http://data.perseus.org/people/smith:cronus-1#this").

To be more complete, under this model there would ideally be

(1) an annotation which associated the text entry itself with the person entity identifier for Cronus

(2) an annotation which annotates the "Rhea" text with a uri for the person entity for Rhea,

(3) an annotation whose target is text selector for "He was married to Rhea" and whose body is the graph of the relationship between the Rhea entity and the Cronus entity

But we never got that far :-)



  "@context": "http://www.w3.org/ns/oa-context-20130208.json"<http://www.w3.org/ns/oa-context-20130208.json>,
  "@id": "urn:cite:perseus:pdljann.18IJy7d0QG2ztppbX3CCeg.1.1",
  "annotatedBy": {
    "@type": "foaf:Group",
    "@id": "http://data.perseus.org/sosol/users/Andrew"<http://data.perseus.org/sosol/users/Andrew>,
    "foaf:member": [
        "foaf:name": "Jane Doe",
        "@type": "foaf:person"
  "@type": "oa:Annotation",
  "dcterms:source": "https://hypothes.is/api/annotations/18IJy7d0QG2ztppbX3CCeg"<https://hypothes.is/api/annotations/18IJy7d0QG2ztppbX3CCeg>,
  "dcterms:title": "http://data.perseus.org/people/smith:cronus-1#this identifies Rhea as object of snap:IntimateRelationship relationship in urn:cts:pdlrefwk:viaf88890045.003.perseus-eng1:C.cronus_1"<http://data.perseus.org/people/smith:cronus-1#thisidentifiesRheaasobjectofsnap:IntimateRelationshiprelationshipinurn:cts:pdlrefwk:viaf88890045.003.perseus-eng1:C.cronus_1>,
  "annotatedAt": "2015-10-07T15:30:27.211185+00:00",
  "motivatedBy": "oa:identifying",
  "serializedBy": {
    "@id": "https://hypothes.is"<https://hypothes.is>,
    "@type": "prov:SoftwareAgent"
  "hasTarget": {
    "@id": "urn:cite:perseus:pdljann.18IJy7d0QG2ztppbX3CCeg.1.1#target-1",
    "@type": "oa:SpecificResource",
    "hasSelector": {
      "@id": "urn:cite:perseus:pdljann.18IJy7d0QG2ztppbX3CCeg.1.1#target-1-sel-1",
      "@type": "oa:TextQuoteSelector",
      "exact": "Rhea",
      "prefix": "g the Titans. He was married to ",
      "suffix": ",\n                  by whom he b"
    "hasSource": {
      "@id": "urn:cts:pdlrefwk:viaf88890045.003.perseus-eng1:C.cronus_1"
  "hasBody": {
    "@context": {
      "snap": "http://onto.snapdrgn.net/snap#"<http://onto.snapdrgn.net/snap#>,
    "@graph": [
        "@id": "urn:cite:perseus:pdljann.18IJy7d0QG2ztppbX3CCeg.1.1#rel-target",
        "@type": "http://www.w3.org/ns/oa#SpecificResource"<http://www.w3.org/ns/oa#SpecificResource>,
        "http://www.w3.org/ns/oa#hasSelector"<http://www.w3.org/ns/oa#hasSelector>: {
          "@id": "urn:cite:perseus:pdljann.18IJy7d0QG2ztppbX3CCeg.1.1#target-1-sel-1",
          "@type": "http://www.w3.org/ns/oa#TextQuoteSelector"<http://www.w3.org/ns/oa#TextQuoteSelector>,
          "http://www.w3.org/ns/oa#exact"<http://www.w3.org/ns/oa#exact>: "Rhea",
          "http://www.w3.org/ns/oa#prefix"<http://www.w3.org/ns/oa#prefix>: "g the Titans. He was married to ",
          "http://www.w3.org/ns/oa#suffix"<http://www.w3.org/ns/oa#suffix>: ",\n                  by whom he b"
        "hasSource": {
          "@id": "urn:cts:pdlrefwk:viaf88890045.003.perseus-eng1:C.cronus_1"
        "@id": "http://data.perseus.org/people/smith:cronus-1#this"<http://data.perseus.org/people/smith:cronus-1#this>,
        "snap:has-bond": [
        "@id": "urn:cite:perseus:pdljann.18IJy7d0QG2ztppbX3CCeg.1.1#bond-1-1",
        "@type": "snap:IntimateRelationship",
        "snap:bond-with": {
          "@id": "urn:cite:perseus:pdljann.18IJy7d0QG2ztppbX3CCeg.1.1#rel-target"

On 12/9/19 3:54 PM, Benjamin Young wrote:
Hey Bridget,

I'd love to see an example of how y'all structured that annotation...legal or not. ;)





From: Bridget Almas <balmas@gmail.com><mailto:balmas@gmail.com>
Sent: Monday, December 9, 2019 1:09 PM
To: public-openannotation@w3.org<mailto:public-openannotation@w3.org> <public-openannotation@w3.org><mailto:public-openannotation@w3.org>
Subject: Re: Expressing relations between targets?

To add to this -- in Perseids (first with Hypothes.is and then with Plokamos) we did something similar, setting the annotation body to a graph that encoded the relationship using the SNAP ontology.  It wasn't perfect, particularly because we embedded the graph directly in the annotation body rather than referencing it via URI, which wasn't really legal, but it did allow us to express the nature of the relationship.  Happy to provide more details if you're interested.


On 12/9/19 12:14 PM, Benjamin Young wrote:
Thanks for writing, Simon!

At this point, I'd suggest being careful not to reinvent RDF inside Web Annotation. Something like "A is the father of B" or similar is already better expressed via much simpler RDF (assuming you have identifiers for the things. Mixing that into the annotation model starts to create all kinds of painful indirection. 😕

That said, I'm noting a lack of "directionality" when targeting resources in Web Annotation. I'm not (yet) certain it's Web Annotation's job to record that, just noting that it currently isn't possible. Appendix D has the things that get close: https://www.w3.org/TR/annotation-model/#sets-of-bodies-and-targets But even so, I don't think there's a way to turn "Orestes killed Aegisthus" into an annotation per se.

It might be best to narrow in on the "textual editing part" and explore potential needs in that context. Otherwise, RDF proper would likely do a much cleaner job of expressing the things you note below.

Happy to discuss further!




From: Simon Rainer <Rainer.Simon@ait.ac.at><mailto:Rainer.Simon@ait.ac.at>
Sent: Monday, December 9, 2019 8:28 AM
To: James Smith <jgsmith@gmail.com><mailto:jgsmith@gmail.com>
Cc: public-openannotation@w3.org<mailto:public-openannotation@w3.org> <public-openannotation@w3.org><mailto:public-openannotation@w3.org>
Subject: AW: Expressing relations between targets?

Hi James,

I agree - we'd ideally want to identify the people via URIs. And then the assertion "is father of" would be a statement between those two entities.

However, within the annotation environment, the scenario is that this would be like a note, made a human editor, on the text. So I'm inclined to say that, we are indeed talking about a statement about two strings of text - at least at this point in the workflow.

I guess the example is also not ideal here. The annotations might just as well be highlighting two different text paragraphs, and the annotator would drag an arrow between them saying "the author is repeating him/herself here", or whatever. I.e. irrespective of what ever "real world meaning" might be behind the arrow eventually, I'm primarily interested in using WebAnno/Open Annotation to model the textual editing part.



Von: James Smith <jgsmith@gmail.com><mailto:jgsmith@gmail.com>
Gesendet: Montag, 9. Dezember 2019 14:18
An: Simon Rainer
Cc: public-openannotation@w3.org<mailto:public-openannotation@w3.org>
Betreff: Re: Expressing relations between targets?

How do we know who the text "Aegisthus" refers to? It's a name, so it's identifying something, but who/what is the identity we associate with the string "Aegisthus"?

While we might all agree on whom we link the text to in our minds, it might be helpful to add some context for the computer. I'd add another property on the body that points to a dbpedia entry or other unique URI that is useful in asserting the identity of the person referenced in the text as "Aegisthus". Let's say it's <dbpedia:Aegisthus>. The same could be done for "Orestes" with a link (for the purposes of discussion) of <dbpedia:Orestes>.

Once this is done, then it's a matter of asserting the <dbpedia:Aegisthus> is related to <dbpedia:Orestes>. It's not about the string "Aegisthus" having a familial relationship with the string "Orestes", or that one annotation has a familial relationship with another annotation, but about the person <dbpedia:Aegisthus> having such a relationship with the person <dbpedia:Orestes>. They just happen to be referenced as "Aegisthus" and "Orestes" in this particular text.

If we did make the relationship about the strings in the text, then that relationship wouldn't be true for any other instances of the strings "Aegisthus" and "Orestes" in this or any other text. It would be about the two instances already highlighted.

-- Jim

On Mon, Dec 9, 2019 at 8:03 AM Simon Rainer <Rainer.Simon@ait.ac.at<mailto:Rainer.Simon@ait.ac.at>> wrote:

Dear list,

I have a question regarding the possible use of the WebAnno model for expressing a relationship between two targets.

My scenario is the following:

*) I have two text annotations that identify people. Each annotation has a single target (the person name in a TextQuoteSelector, and character offset in a TextPositionSelector); and a single body (with purpose "identifying").

*) I now want to create a third annotation that expresses a relation between person A and B. (E.g. "A is the father of B" or similar.)


My approach would be to model this third annotation like the sample below. I.e. with:

*) two targets, each holding the ID of one person annotation

*) a body with the relation tag ("is the father of")

*) a motivation of "linking"

According to the definition for "linking", that's not correct though. "Linking" is supposed to express a link between body and all targets, rather than a link between the targets. In addition, there's also no way to express directionality.

Does anyone have recommendations on how to tackle such a use case with WebAnno? I realize that (some of) this may actually be out of scope for the spec as such. In this case, I'd appreciate any thoughts, opinions, and possible recommendations on a custom extension pattern, if needed.

Cheers & thanks in advance,



  "@context": "http://www.w3.org/ns/anno.jsonld",
  "id": "#9ba844a7-e8ec-4127-ad12-1f7f16a240c6",
  "type": "Annotation",
  "motivation": "linking",
  "body": [{
    "type": "TextualBody",
    "value": "isRelatedTo"
  "target": [{
    "id": "#ce0ed291-766b-4763-8e91-90ce1d04e706"
  }, {
    "id": "#447d4bea-08dc-4bd0-ae51-31f5ed7a95a0"

(image/png attachment: pastedImage.png)

Received on Tuesday, 10 December 2019 07:28:31 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 16:38:32 UTC