How to model annotations of both entities and activities

Dear all,

I'm trying to model the annotation of something with something by someone using PROV concepts.

The problem I am facing is that whatever I want to annotate might be an entity or an activity and similarly the annotation might be an entity or an activity.
The only solution I have so far is to introduce new terms but I wonder if it is possible to only rely on PROV concepts and still model the annotations in a single consistent way.

Consider the example where

1.       Alice wants to annotate a report with two keywords and the order matters

2.       Bob wants to annotate a project with two keywords and the order matters

3.       Carol wants to annotate a report with two related projects and the order matters
Each such annotation could have more metadata like the time period where the annotation existed.

# keywords as entities as they are created by someone at some point in time
ex:keyword1 a ex:Entity .
ex:keyword2 a ex:Entity .

ex:report1 a ex:Entity .

ex:project1 a prov:Activity .
ex:project2 a prov:Activity .

ex:alice a prov:Agent .
ex:bob a prov:Agent .
ex:carol a prov:Agent .


# solution 1: Annotation activity "using" annotations
# problem: the annotation might not be an entity, the third example with Carol is not possible. Also not entirely PROV as a new predicate 'ex:annotate' is used
ex:annotationActivity1 a prov:Activity ;
  prov:wasAssociatedWith ex:alice ;
  ex:annotate ex:report1 ;
  prov:qualifiedUsage [
       a prov:Usage ;
       prov:entity ex:keyword1 ;
       ex:rank 1
  ] ;
  prov:qualifiedUsage [
      a prov:Usage ;
      prov:entity ex:keyword1 ;
      ex:rank 2
  ] .


# solution 2: introducing new terms, one annotation activity for each annotation
# problem: Not entirely PROV as new predicates are used
ex:annotationActivity1 a prov:Activity ;
  prov:wasAssociatedWith ex:alice ;
  ex:annotate ex:project1 ;
  ex:annotateWith ex:keyword1 ;
  ex:rank 1 .


# solution 3: the annotation as entity
# problem: how to link to the annotated thing and to the annotation?
ex:annotationAliceReport1Keyword1 a prov:Entity
  prov:wasGeneratedBy ex:someActivity ;
  prov:wasAttributedTo ex:alice .


# solution 4: prov entities to represent activities
# problem: how to link the activity to its entity representation? More in general I also wonder how one is supposed to express the provenance of activities since they are disjoint with entities
ex:annotationActivity2 a prov:Activity ;
  prov:wasAssociatedWith ex:bob ;
  prov:qualifiedUsage [
      prov:entity ex:project1Entity ;
      prov:hadRole ex:annotated
  ] ;
  prov:qualifiedUsage [
      prov:entity ex:keyword1 ;
      prov:hadRole ex:annotation ;
      ex:rank 1
  ] .


Of course the solution shouldn't be overly complex so in worst case I would just go with solution 2.

Thanks for any insight,

Sven

Kind regards,

SVEN LIEBER
PhD researcher semantic intelligence
IDLab<http://idlab.technology/>,  imec<https://imec.be/> research group at Ghent University<https://www.ugent.be/en>
AA-tower | Technologiepark Zwijnaarde 122 | 9052 Ghent, Belgium

t: +32 9 331 49 59
[iconmonstr-globe-5-24]<https://sven-lieber.org/> [iconmonstr-twitter-5-24] <https://twitter.com/SvenLieber>  [iconmonstr-linkedin-5-24] <https://www.linkedin.com/in/sven-lieber-1b2b70131/>  [iconmonstr-key-11-24] <https://sven-lieber.org/pgp-key>

Received on Wednesday, 29 April 2020 16:15:02 UTC