SlideShare a Scribd company logo
STANFORD UNIVERSITY LIBRARIES
Annotations as Linked Data
with Fedora4 and Triannon
(A Real Use Case for RDF!)
C O D E 4 L I B 2015
PO R T L A N D , OR
FE B R U A R Y 11
Rob Sanderson / azaroth@stanford.edu / @azaroth42
Naomi Dushay / ndushay@stanford.edu
STANFORD UNIVERSITY LIBRARIES
Annotations as Linked Data
with Fedora4 and Triannon
(A Real Use Case for RDF!)
C O D E 4 L I B 2015
PO R T L A N D , OR
FE B R U A R Y 11
Rob Sanderson / azaroth@stanford.edu / @azaroth42
Naomi Dushay / ndushay@stanford.edu
Annotations as Linked Data with Fedora4 and Triannon
Annotations as Linked Data with Fedora4 and Triannon
Annotations as Linked Data with Fedora4 and Triannon
Annotations as Linked Data with Fedora4 and Triannon
Annotations as Linked Data with Fedora4 and Triannon
Annotations as Linked Data with Fedora4 and Triannon
Annotations as Linked Data with Fedora4 and Triannon
Annotations as Linked Data with Fedora4 and Triannon
Where are the Dragons?
:(
Triannon:
Putting the Dragons Back in Portland
since sometime last week
Requirements:
•  Create and manage tags/annotations in any client or environment
•  Retrieve tags/annotations to display in any client
•  With the identifiers of Works, not of catalog views
Need:
•  A model for annotations
•  A format to serialize them into
•  A protocol to transfer the serializations between systems
•  Implementations!
JSON Annotation Format
{!
"@context": "http://www.w3.org/ns/oa-context-20130208.json",!
"@id": "http://www.example.org/annotations/1",!
"@type": "oa:Annotation”,!
"motivatedBy":"oa:commenting",!
"hasBody": {!
"@type": "cnt:ContentAsText",!
"chars": "Portland is somewhere here. Also Dragons",!
"format": "text/plain"!
},!
"hasTarget": "http://purl.stanford.edu/bd136jk4522#xywh=..."!
} !
JSON-LD Annotation Format
{!
"@context": "http://www.w3.org/ns/oa-context-20130208.json",!
"@id": "http://www.example.org/annotations/1",!
"@type": "oa:Annotation”,!
"motivatedBy":"oa:commenting",!
"hasBody": {!
"@type": "cnt:ContentAsText",!
"chars": "Portland is somewhere here. Also Dragons",!
"format": "text/plain"!
},!
"hasTarget": "http://purl.stanford.edu/bd136jk4522#xywh=..."!
} !
JSON-LD Annotation Format
{!
"@context": "http://www.w3.org/ns/oa-context-20130208.json",!
"@id": "http://www.example.org/annotations/1",!
"@type": "oa:Annotation”,!
"motivatedBy":"oa:commenting",!
"hasBody": {!
"@type": "cnt:ContentAsText",!
"chars": "Portland is somewhere here. Also Dragons",!
"format": "text/plain"!
},!
"hasTarget": "http://purl.stanford.edu/bd136jk4522#xywh=..."!
} !
Dirty not-so-secret time...
RDF Annotation Format
{!
"@context": "http://www.w3.org/ns/oa-context-20130208.json",!
"@id": "http://www.example.org/annotations/1",!
"@type": "oa:Annotation”,!
"motivatedBy":"oa:commenting",!
"hasBody": {!
"@type": "cnt:ContentAsText",!
"chars": "Portland is somewhere here. Also Dragons",!
"format": "text/plain"!
},!
"hasTarget": "http://purl.stanford.edu/bd136jk4522#xywh=..."!
} !
It's actually RDF, following the Open Annotation model
Open Annotation
http://www.openannotation.org/spec/core/
http://www.w3.org/TR/annotation-model/ (beta)
Annotation Management: LDP
Reality is More Complex
In Reality ...
•  Multiple resources to manage, each requires a POST
•  Binary or external resources with descriptions tricky
•  Multiple JSON-LD contexts complex (IIIF, OA, ...)
Want:
•  Ease of use/implementation for annotation client
•  Ability to swap back-end to other LDP system
•  Integration with Rails environment
•  Search with Solr (easy) not SPARQL (less easy)
Triannon
Triannon plus Solr
Triannon: Implementation Goals
•  Rapid Development
•  Modular
•  Re-Usable
•  Deployable
•  Maintainable
Triannon: Rails Engine Gem
REST over HTTP
Create POST jsonld, turtle, rdfxml
Read GET "
Update PUT/PATCH "
Delete DELETE (id)
Model ActiveRecord ActiveModel LDP
View (for apps and developers) jsonld, turtle, rdfxml
Controller
http://github.com/sul-dlss/triannon
Annotations as Linked Data with Fedora4 and Triannon
It’s the Graph, Baby!
Rails App (SearchWorks)
ActiveTriples
ld4l-open_annotation_rdf
triple store
(in memory)
RDF
SearchWorks: Create, Update, Delete
Triannon
id
html
form
jsonld from
RDF::Graph
Client App: Search and Display
Triannon SolrClient App
http://triannon-solr/by_target?url=purl.stanford.edu/bd136jk4522
'response'=>{'numFound'=>3,'start'=>0,'maxScore'=>1.0,'docs'=>[
{
'id'=>'98206ec8-4def-44b8-b190-648d8224ce1c’,
'anno_jsonld'=>'{"@context":"http://www.w3.org/ns/oa.jsonld","@graph":
[{"@id":"_:g70038924372700","@type":["dctypes:Text","cnt:ContentAsText"], "format":"text/plain”,
"chars":"Portland is somewhere here. Also Dragons”},{"@id":"https://
triannon-dev.stanford.edu/annotations/98206ec8-4def-44b8-
b190-648d8224ce1c","@type":"oa:Annotation","hasBody":"_:g70038924372700","hasTarget":"http://
purl.stanford.edu/bd136jk4522","motivatedBy":"oa:commenting"}]}',
...},
{
'id'=>'f691b921-6f54-415b-9dfb-0d017f0d8ada',
...
Rails App (SearchWorks)
ActiveTriples
ld4l-open_annotation_rdf
triple store
(in memory)
RDF
SearchWorks: Read and Display
•  Easy Access to Relevant Info from jsonld
•  Rapid Development
•  Modular
•  Maintainable
Triannon Solr
jsonld as
RDF::Graph
Search for
annos
LDP API
Fedora 4Solr
CRUD
Search /
Read
CRUDCUD
Client
Application
Client
Application
Client Application
Triannon
STANFORD UNIVERSITY LIBRARIES
Thank You!
February 11th, 2015
azaroth@stanford.edu
ndushay@stanford.edu

More Related Content

What's hot (20)

PDF
Introduction to RDF
Dr Sukhpal Singh Gill
 
PPTX
Developing Linked Data and Semantic Web-based Applications (Expotec 2015)
Ig Bittencourt
 
PDF
New member webinar 052418
Crossref
 
PPTX
The Semantic Web #10 - SPARQL
Myungjin Lee
 
PDF
Todd davis facebook sourcing
Talent42
 
PPT
Dublin Core In Practice
Marcia Zeng
 
PPTX
Federated Query Formulation and Processing through BioFed
Syed Muhammad Ali Hasnain
 
PPT
A Semantic Data Model for Web Applications
Armin Haller
 
PPTX
DLF 2015 Presentation, "RDF in the Real World."
Avalon Media System
 
PPTX
Fedora Migration Considerations
Avalon Media System
 
PPT
Re-using Media on the Web: Media fragment re-mixing and playout
MediaMixerCommunity
 
PPTX
Usage of Linked Data: Introduction and Application Scenarios
EUCLID project
 
PPTX
RDFa Tutorial
Ivan Herman
 
PDF
Matt Grove - Sourcing Round Table - Talent42 2015
Talent42
 
PPT
Linked Data Tutorial
Sören Auer
 
PDF
Crossref XML and tools for small publishers (EASE Conference 2018)
Crossref
 
PPTX
Get on the Linked Data Web!
Armin Haller
 
PPTX
Linked Data for Czech Legislation
Martin Necasky
 
PPT
Semantic Web
hardchiu
 
PPTX
Saveface - Save your Facebook content as RDF data
Fuming Shih
 
Introduction to RDF
Dr Sukhpal Singh Gill
 
Developing Linked Data and Semantic Web-based Applications (Expotec 2015)
Ig Bittencourt
 
New member webinar 052418
Crossref
 
The Semantic Web #10 - SPARQL
Myungjin Lee
 
Todd davis facebook sourcing
Talent42
 
Dublin Core In Practice
Marcia Zeng
 
Federated Query Formulation and Processing through BioFed
Syed Muhammad Ali Hasnain
 
A Semantic Data Model for Web Applications
Armin Haller
 
DLF 2015 Presentation, "RDF in the Real World."
Avalon Media System
 
Fedora Migration Considerations
Avalon Media System
 
Re-using Media on the Web: Media fragment re-mixing and playout
MediaMixerCommunity
 
Usage of Linked Data: Introduction and Application Scenarios
EUCLID project
 
RDFa Tutorial
Ivan Herman
 
Matt Grove - Sourcing Round Table - Talent42 2015
Talent42
 
Linked Data Tutorial
Sören Auer
 
Crossref XML and tools for small publishers (EASE Conference 2018)
Crossref
 
Get on the Linked Data Web!
Armin Haller
 
Linked Data for Czech Legislation
Martin Necasky
 
Semantic Web
hardchiu
 
Saveface - Save your Facebook content as RDF data
Fuming Shih
 

Viewers also liked (20)

PPTX
IIIF: The Advantages of APIs
Robert Sanderson
 
PDF
IIIF: Discovery of Resources
Robert Sanderson
 
PDF
Introduction to IIIF
Robert Sanderson
 
PDF
Linked Data Best Practices and BibFrame
Robert Sanderson
 
PPTX
Brief Introduction to Linked Data
Robert Sanderson
 
PDF
W3C Web Annotation WG Update (I Annotate 2016)
Robert Sanderson
 
PDF
IIIF Overview for Linked Data Exhibitions
Robert Sanderson
 
PPTX
Community Challenges for Practical Linked Open Data - Linked Pasts keynote
Robert Sanderson
 
PDF
Poster RDAP13: A Workflow for Depositing to a Research Data Repository: A Cas...
ASIS&T
 
PDF
Open Repositories 2014: Crowdsourced Transcription via IIIF
Robert Sanderson
 
PDF
IIIF: Shared Canvas 2.0
Robert Sanderson
 
PDF
IIIF and JSON-LD: LODLAM Training Day
Robert Sanderson
 
PDF
Niso Annotation Webinar
Robert Sanderson
 
PDF
Erika Pricyla Cerino HernáNdez
guest1cc234
 
PDF
SharedCanvas: A Collaborative Model for Medieval Manuscript Layout Dissemina...
Robert Sanderson
 
PPS
Dit Heb Je Nog Nooit Gezien
guest6964ce
 
PDF
Python Web Interaction
Robert Sanderson
 
PDF
NLLC 2011: Memento, Open Annotation, SharedCanvas
Robert Sanderson
 
PDF
W3C Open Annotation: Status and Use Cases
Robert Sanderson
 
PPTX
IIIF Foundational Specifications
Robert Sanderson
 
IIIF: The Advantages of APIs
Robert Sanderson
 
IIIF: Discovery of Resources
Robert Sanderson
 
Introduction to IIIF
Robert Sanderson
 
Linked Data Best Practices and BibFrame
Robert Sanderson
 
Brief Introduction to Linked Data
Robert Sanderson
 
W3C Web Annotation WG Update (I Annotate 2016)
Robert Sanderson
 
IIIF Overview for Linked Data Exhibitions
Robert Sanderson
 
Community Challenges for Practical Linked Open Data - Linked Pasts keynote
Robert Sanderson
 
Poster RDAP13: A Workflow for Depositing to a Research Data Repository: A Cas...
ASIS&T
 
Open Repositories 2014: Crowdsourced Transcription via IIIF
Robert Sanderson
 
IIIF: Shared Canvas 2.0
Robert Sanderson
 
IIIF and JSON-LD: LODLAM Training Day
Robert Sanderson
 
Niso Annotation Webinar
Robert Sanderson
 
Erika Pricyla Cerino HernáNdez
guest1cc234
 
SharedCanvas: A Collaborative Model for Medieval Manuscript Layout Dissemina...
Robert Sanderson
 
Dit Heb Je Nog Nooit Gezien
guest6964ce
 
Python Web Interaction
Robert Sanderson
 
NLLC 2011: Memento, Open Annotation, SharedCanvas
Robert Sanderson
 
W3C Open Annotation: Status and Use Cases
Robert Sanderson
 
IIIF Foundational Specifications
Robert Sanderson
 
Ad

Similar to Annotations as Linked Data with Fedora4 and Triannon (20)

PDF
Linked Open Data
Laura Hollink
 
PDF
web-of-dddddddddddddddddddddddddddddddddata-intro.pdf
testaccount387216
 
PPTX
Aall denver 2010
Diane Hillmann
 
PPT
Linked Open Data for Libraries
Lukas Koster
 
PDF
2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs
Josef Petrák
 
PPTX
Ld4 l triannon
Naomi Dushay
 
PPTX
Introduction to RDF Data Model
Cesar Augusto Nogueira
 
ODP
Semantic Web introduction
Graphity
 
PDF
An introduction to Semantic Web and Linked Data
Gabriela Agustini
 
PDF
An introduction to Semantic Web and Linked Data
Gabriela Agustini
 
PDF
W3C Tutorial on Semantic Web and Linked Data at WWW 2013
Fabien Gandon
 
PDF
Creating Web APIs with JSON-LD and RDF
donaldlsmithjr
 
PPTX
Sem webmaubeuge
Jose Emilio Labra Gayo
 
PPT
SemanticWeb Nuts 'n Bolts
Rinke Hoekstra
 
PPT
ontology.ppt
Prerak10
 
PPTX
Making Use of the Linked Open Data Services for OpenAIRE (DI4R 2016 tutorial ...
OpenAIRE
 
KEY
RDFa Introductory Course Session 2/4 How RDFa
Platypus
 
KEY
How RDFa works
JISC Netskills
 
PPT
Publishing data on the Semantic Web
Peter Mika
 
PDF
Bio ontologies and semantic technologies
Prof. Wim Van Criekinge
 
Linked Open Data
Laura Hollink
 
web-of-dddddddddddddddddddddddddddddddddata-intro.pdf
testaccount387216
 
Aall denver 2010
Diane Hillmann
 
Linked Open Data for Libraries
Lukas Koster
 
2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs
Josef Petrák
 
Ld4 l triannon
Naomi Dushay
 
Introduction to RDF Data Model
Cesar Augusto Nogueira
 
Semantic Web introduction
Graphity
 
An introduction to Semantic Web and Linked Data
Gabriela Agustini
 
An introduction to Semantic Web and Linked Data
Gabriela Agustini
 
W3C Tutorial on Semantic Web and Linked Data at WWW 2013
Fabien Gandon
 
Creating Web APIs with JSON-LD and RDF
donaldlsmithjr
 
Sem webmaubeuge
Jose Emilio Labra Gayo
 
SemanticWeb Nuts 'n Bolts
Rinke Hoekstra
 
ontology.ppt
Prerak10
 
Making Use of the Linked Open Data Services for OpenAIRE (DI4R 2016 tutorial ...
OpenAIRE
 
RDFa Introductory Course Session 2/4 How RDFa
Platypus
 
How RDFa works
JISC Netskills
 
Publishing data on the Semantic Web
Peter Mika
 
Bio ontologies and semantic technologies
Prof. Wim Van Criekinge
 
Ad

More from Robert Sanderson (20)

PPTX
Understanding Linked Art
Robert Sanderson
 
PDF
LUX - Cross Collections Cultural Heritage at Yale
Robert Sanderson
 
PDF
Zoom as a Paradigm for Linked Open Usable Data
Robert Sanderson
 
PPTX
Provenance and Uncertainty in Linked Art
Robert Sanderson
 
PPTX
Data is our Product: Thoughts on LOD Sustainability
Robert Sanderson
 
PPTX
A Perspective on Wikidata: Ecosystems, Trust, and Usability
Robert Sanderson
 
PPTX
Linked Art: Sustainable Cultural Knowledge through Linked Open Usable Data
Robert Sanderson
 
PPTX
Illusions of Grandeur: Trust and Belief in Cultural Heritage Linked Open Data
Robert Sanderson
 
PPTX
Structural Metadata in RDF (IS575)
Robert Sanderson
 
PPTX
Sanderson CNI 2020 Keynote - Cultural Heritage Research Data Ecosystem
Robert Sanderson
 
PPTX
Tiers of Abstraction and Audience in Cultural Heritage Data Modeling
Robert Sanderson
 
PPTX
The Importance of being LOUD
Robert Sanderson
 
PPTX
Introduction to Linked Art Model
Robert Sanderson
 
PPTX
Standards and Communities: Connected People, Consistent Data, Usable Applicat...
Robert Sanderson
 
PDF
Strong Opinions, Weakly Held
Robert Sanderson
 
PDF
IIIF Discovery Walkthrough
Robert Sanderson
 
PPTX
Linked Art: An Art Museum Profile for CIDOC-CRM
Robert Sanderson
 
PDF
Euromed2018 Keynote: Usability over Completeness, Community over Committee
Robert Sanderson
 
PDF
Linked Art - Our Linked Open Usable Data Model
Robert Sanderson
 
PPTX
EuropeanaTech Keynote: Shout it out LOUD
Robert Sanderson
 
Understanding Linked Art
Robert Sanderson
 
LUX - Cross Collections Cultural Heritage at Yale
Robert Sanderson
 
Zoom as a Paradigm for Linked Open Usable Data
Robert Sanderson
 
Provenance and Uncertainty in Linked Art
Robert Sanderson
 
Data is our Product: Thoughts on LOD Sustainability
Robert Sanderson
 
A Perspective on Wikidata: Ecosystems, Trust, and Usability
Robert Sanderson
 
Linked Art: Sustainable Cultural Knowledge through Linked Open Usable Data
Robert Sanderson
 
Illusions of Grandeur: Trust and Belief in Cultural Heritage Linked Open Data
Robert Sanderson
 
Structural Metadata in RDF (IS575)
Robert Sanderson
 
Sanderson CNI 2020 Keynote - Cultural Heritage Research Data Ecosystem
Robert Sanderson
 
Tiers of Abstraction and Audience in Cultural Heritage Data Modeling
Robert Sanderson
 
The Importance of being LOUD
Robert Sanderson
 
Introduction to Linked Art Model
Robert Sanderson
 
Standards and Communities: Connected People, Consistent Data, Usable Applicat...
Robert Sanderson
 
Strong Opinions, Weakly Held
Robert Sanderson
 
IIIF Discovery Walkthrough
Robert Sanderson
 
Linked Art: An Art Museum Profile for CIDOC-CRM
Robert Sanderson
 
Euromed2018 Keynote: Usability over Completeness, Community over Committee
Robert Sanderson
 
Linked Art - Our Linked Open Usable Data Model
Robert Sanderson
 
EuropeanaTech Keynote: Shout it out LOUD
Robert Sanderson
 

Recently uploaded (20)

PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
Python basic programing language for automation
DanialHabibi2
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PDF
July Patch Tuesday
Ivanti
 
PDF
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
Python basic programing language for automation
DanialHabibi2
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
July Patch Tuesday
Ivanti
 
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 

Annotations as Linked Data with Fedora4 and Triannon

  • 1. STANFORD UNIVERSITY LIBRARIES Annotations as Linked Data with Fedora4 and Triannon (A Real Use Case for RDF!) C O D E 4 L I B 2015 PO R T L A N D , OR FE B R U A R Y 11 Rob Sanderson / [email protected] / @azaroth42 Naomi Dushay / [email protected]
  • 2. STANFORD UNIVERSITY LIBRARIES Annotations as Linked Data with Fedora4 and Triannon (A Real Use Case for RDF!) C O D E 4 L I B 2015 PO R T L A N D , OR FE B R U A R Y 11 Rob Sanderson / [email protected] / @azaroth42 Naomi Dushay / [email protected]
  • 11. Where are the Dragons? :(
  • 12. Triannon: Putting the Dragons Back in Portland since sometime last week Requirements: •  Create and manage tags/annotations in any client or environment •  Retrieve tags/annotations to display in any client •  With the identifiers of Works, not of catalog views Need: •  A model for annotations •  A format to serialize them into •  A protocol to transfer the serializations between systems •  Implementations!
  • 13. JSON Annotation Format {! "@context": "http://www.w3.org/ns/oa-context-20130208.json",! "@id": "http://www.example.org/annotations/1",! "@type": "oa:Annotation”,! "motivatedBy":"oa:commenting",! "hasBody": {! "@type": "cnt:ContentAsText",! "chars": "Portland is somewhere here. Also Dragons",! "format": "text/plain"! },! "hasTarget": "http://purl.stanford.edu/bd136jk4522#xywh=..."! } !
  • 14. JSON-LD Annotation Format {! "@context": "http://www.w3.org/ns/oa-context-20130208.json",! "@id": "http://www.example.org/annotations/1",! "@type": "oa:Annotation”,! "motivatedBy":"oa:commenting",! "hasBody": {! "@type": "cnt:ContentAsText",! "chars": "Portland is somewhere here. Also Dragons",! "format": "text/plain"! },! "hasTarget": "http://purl.stanford.edu/bd136jk4522#xywh=..."! } !
  • 15. JSON-LD Annotation Format {! "@context": "http://www.w3.org/ns/oa-context-20130208.json",! "@id": "http://www.example.org/annotations/1",! "@type": "oa:Annotation”,! "motivatedBy":"oa:commenting",! "hasBody": {! "@type": "cnt:ContentAsText",! "chars": "Portland is somewhere here. Also Dragons",! "format": "text/plain"! },! "hasTarget": "http://purl.stanford.edu/bd136jk4522#xywh=..."! } ! Dirty not-so-secret time...
  • 16. RDF Annotation Format {! "@context": "http://www.w3.org/ns/oa-context-20130208.json",! "@id": "http://www.example.org/annotations/1",! "@type": "oa:Annotation”,! "motivatedBy":"oa:commenting",! "hasBody": {! "@type": "cnt:ContentAsText",! "chars": "Portland is somewhere here. Also Dragons",! "format": "text/plain"! },! "hasTarget": "http://purl.stanford.edu/bd136jk4522#xywh=..."! } ! It's actually RDF, following the Open Annotation model
  • 19. Reality is More Complex
  • 20. In Reality ... •  Multiple resources to manage, each requires a POST •  Binary or external resources with descriptions tricky •  Multiple JSON-LD contexts complex (IIIF, OA, ...) Want: •  Ease of use/implementation for annotation client •  Ability to swap back-end to other LDP system •  Integration with Rails environment •  Search with Solr (easy) not SPARQL (less easy)
  • 23. Triannon: Implementation Goals •  Rapid Development •  Modular •  Re-Usable •  Deployable •  Maintainable
  • 24. Triannon: Rails Engine Gem REST over HTTP Create POST jsonld, turtle, rdfxml Read GET " Update PUT/PATCH " Delete DELETE (id) Model ActiveRecord ActiveModel LDP View (for apps and developers) jsonld, turtle, rdfxml Controller http://github.com/sul-dlss/triannon
  • 27. Rails App (SearchWorks) ActiveTriples ld4l-open_annotation_rdf triple store (in memory) RDF SearchWorks: Create, Update, Delete Triannon id html form jsonld from RDF::Graph
  • 28. Client App: Search and Display Triannon SolrClient App http://triannon-solr/by_target?url=purl.stanford.edu/bd136jk4522 'response'=>{'numFound'=>3,'start'=>0,'maxScore'=>1.0,'docs'=>[ { 'id'=>'98206ec8-4def-44b8-b190-648d8224ce1c’, 'anno_jsonld'=>'{"@context":"http://www.w3.org/ns/oa.jsonld","@graph": [{"@id":"_:g70038924372700","@type":["dctypes:Text","cnt:ContentAsText"], "format":"text/plain”, "chars":"Portland is somewhere here. Also Dragons”},{"@id":"https:// triannon-dev.stanford.edu/annotations/98206ec8-4def-44b8- b190-648d8224ce1c","@type":"oa:Annotation","hasBody":"_:g70038924372700","hasTarget":"http:// purl.stanford.edu/bd136jk4522","motivatedBy":"oa:commenting"}]}', ...}, { 'id'=>'f691b921-6f54-415b-9dfb-0d017f0d8ada', ...
  • 29. Rails App (SearchWorks) ActiveTriples ld4l-open_annotation_rdf triple store (in memory) RDF SearchWorks: Read and Display •  Easy Access to Relevant Info from jsonld •  Rapid Development •  Modular •  Maintainable Triannon Solr jsonld as RDF::Graph Search for annos
  • 30. LDP API Fedora 4Solr CRUD Search / Read CRUDCUD Client Application Client Application Client Application Triannon