Skip to end of metadata
Go to start of metadata

RS-1472
RS-305

Intro

Various RS objects can be linked into free text (annotation text or forum post). The user can paste any Data Basket item using the editor toolbar, and we want to track all Item Types except:

  • Forum: forum post linking is handled by jForum
  • Image: We currently don't have a display of image alone
  • Text Snippet which: pasted itself, has no URI
  • Web Link: represented as a normal URL in the text, doesn't need to be tracked
  • Search: doesn't need to be tracked

Use Case

In the first tab of a Museum Object (Object Details), we want to show all related annotations and forum posts. Related annotations/posts for an object are the ones that mention it, or one of its fields

Link Types

Links are represented in text like this:

CSS Class Item Type Sample URL Note
linkMO rso:FC70_Thing http://collection.britishmuseum.org/id/object/RFI41407 Museum Object
linkStatement rdf:Statement http://www.researchspace.org/st/2 Annotation Point
linkDataAnnotation rso:DataAnnotation http://collection.britishmuseum.org/id/object/RFI41407/annot/1 Data Annotaton
linkImageAnnotation rso:ImageAnnotation http://www.researchspace.org/DT219363.tif/annot/1 Image Annotation

Linked Object

An annotation/post Links to an object ?obj iff: there is an ?uri in the free-text such that:

Link to Conditions Notes
object itself ?uri a rso:FC70_Thing. ?uri=?obj
annotation point ?uri a rdf:Statement; dcterms:isPartOf ?obj See Open Annotation Collaboration (OAC)#Annotation with OAC and Reification
data annotation {?uri a rso:DataAnnotation; oac:hasTarget ?obj} UNION
{?uri a rso:DataAnnotation; oac:hasTarget ?st. ?st a rdf:Statement; dcterms:isPartOf ?obj}
See same

Link Data Model

Since Links are pasted from the Data Basket, they are similar to the Bookmark Data Model

Property Notes
rdf:type rso:Link (new class)
oac:hasBody rso:DataAnnotation or rso:ImageAnnotation or rso:Forum
  • For annotation: the free text linking the object is in in oac:hasBody/oac:hasBody/rso:P3_has_description.
  • For forum post: they are stored in jForum, not OWLIM. We generate URIs like http://www.researchspace.com/forum/123 (where 123 is the forum ID), mark the URI with rso:Forum (new class), and put the ID in dcterms:identifier
oac:hasTarget rso:FC70_Thing matching one of the conditions in Linked Object

Link Data Example

Here is a comprehensive example involving 3 links:

  1. Data annotation <object/123/annot/23> mentions <object/456>
  2. Forum post 321 mentions data annotation <object/456/annot/45> of <object/456>
  3. Image annotation <pic.tif/annot/67> mentions annotation point <st/56> of <object/456>
<link/1> a rso:Link;
  oac:hasBody <object/123/annot/23>;
  oac:hasTarget <object/456>.

<forum/123> a rso:Forum;
  dcterms:identifier "123".

<link/2> a rso:Link;
  oac:hasBody <forum/123>;
  oac:hasTarget <object/456>.

<link/3> a rso:Link;
  oac:hasBody <pic.tif/annot/67/body>;
  oac:hasTarget <object/456>.

All these statements (including "a rso:Forum") need to be created

Link Data Illustration

The figure above shows the same example, plus the extra statements that make the link to <object/456>.

Link API

Extract Links

  • The annotation/forum text should be parsed to find all links (see patterns in Link Types)
  • Each link is processed to find the linked object rso:root (see conditions in Definition of Link)
  • If the link in text point to an Annotation Point (that is, it is "linkStatement"), then we need to load the rdf:Statement and get the object it is part of.

Update Links

To implement this below for posts, we need to hook into the jForum API for create/update/delete.

  • On create of annotation or post: extract and store the links.
    Do this after the annotation/post is saved, so that we have the new annotation's URI
  • On edit of annotation body or post: reparse and recreate the Links for that annotation/post
    I.e. delete any existing links, extract and store new links
  • On delete of annotation/post: delete the corresponding links

Links are stored using a method in the DMS2RDF class.

Retrieve Links

There will be 2 methods in DMS2RDF:

Jana, don't you also need to list the data annotations of the object, even if they don't mention the object?
Labels:
None
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
  1. Feb 08, 2013

    I think it would be better to link to the annotation, not the body - as this is what we work with in UI (that is, annotation's URI is used as parameter etc.)

    Annotations of the object are listed in the Annotations tab - we won't list them in Object Details tab.

    How do we form URIs of the rso:Forum instances? Will they have the post's ID explicitly attached as a property?

    1. Feb 11, 2013

      1. If Svetlio also agrees, I'll change it to point to Annotation
      2. ok, so just edit the red box above to say so (and remove the {warn} macro, turn it into a simple bullet)
      3. Using the jForum ID. We could have ID property if it's easier for you that way (methodologically is better, since URIs are not supposed to be parsed)