Skip to content
This repository has been archived by the owner on Jun 22, 2023. It is now read-only.

feat(schema): Add Web Annotations #100

Merged
merged 1 commit into from
Mar 15, 2021

Conversation

alastair
Copy link
Member

@alastair alastair commented Mar 11, 2020

This replaces #38

In the previous attempt at annotations, we found that it was very difficult to develop a schema that could allow us to define types, add semantic annotations, and then automatically render to json-ld.
As a result, we came up with this new solution, which defines a graphql-specific schema, and then we'll create a specific json-ld serialiser which can convert this schema into json-ld output.

With @musicog, we believe that this schema fits all required annotation types within Trompa. I'm in the process of documenting the schema, and we'll add this to official documentation soon.

Some items are still pending and need further discussion. I'll mark these in review.

src/schema/type/Annotation.graphql Outdated Show resolved Hide resolved
src/schema/type/Annotation.graphql Outdated Show resolved Hide resolved
src/schema/type/Annotation.graphql Outdated Show resolved Hide resolved
src/schema/type/Annotation.graphql Outdated Show resolved Hide resolved
src/schema/type/Annotation.graphql Outdated Show resolved Hide resolved
src/schema/type/Annotation.graphql Outdated Show resolved Hide resolved
@alastair alastair mentioned this pull request Mar 11, 2020
@alastair
Copy link
Member Author

This is ready for review.

I've managed to create each type of annotation that we need to store. The client demos at https://github.com/trompamusic/trompace-client/tree/master/demo/annotation do each of these types of annotations

  • A describing or commenting annotation with a text body
  • An annotation of a freeform tag ('tagging' motivation)
  • A tag annotation from a fixed list of options (DefinedTermSet)
  • An annotation with a custom palette of motivations (DefinedTermSet with skos:broader relation on DefinedTerms)
  • A ranking annotation ('assessing' motivation)
  • An annotation that targets the URL at a given field of an existing node (e.g. the contentUrl field of an AudioObject node)
  • An annotation that targets a node in the CE (e.g. annotating an existing annotation)
  • An annotation that targets an external URL
  • An annotation whose body is text
  • An annotation whose body is an existing node in the CE (e.g. a DefinedTerm or a Rating)
  • An annotation whose body is an external URL

Annotations are also ThingInterfaces, and so can be used in an ItemList, to create the concept of an "Annotation session"

@ChristiaanScheermeijer
Copy link
Collaborator

Nice work!

Copy link
Collaborator

@ChristiaanScheermeijer ChristiaanScheermeijer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎉

@ChristiaanScheermeijer ChristiaanScheermeijer merged commit 8cec4aa into staging Mar 15, 2021
@ChristiaanScheermeijer ChristiaanScheermeijer deleted the feat/annotationsnew branch March 15, 2021 15:13
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants