Sword v2 at UKCoRR

SWORD Project
SWORD ProjectSWORD Project
SWORD 2.0 Supporting Full Deposit Lifecycles Richard Jones Cottage Labs richard@cottagelabs.com  http://cottagelabs.com
SWORD is a: Simple Web service Offering Repository Deposit What is SWORD? During the development of SWORD it was decided to keep the protocol as simple and lightweight  as possible.
SWORD is a: Simple Web service Offering Repository Deposit What is SWORD? A software interface that is accessible using http
SWORD is a: Simple Web service Offering Repository Deposit What is SWORD?
SWORD is a: Simple Web service Offering Repository Deposit What is SWORD? Agnostic: DSpace EPrints Fedora Intralibrary Zentity ???
SWORD is a: Simple Web service Offering Repository Deposit What is SWORD? Putting things INTO a repository
The purpose of SWORD is to: Provide an  interoperable   interface  that allows  deposits  to be  easily  made  into repositories . What is the purpose of SWORD?
Out of scope: Packaging Metadata Authentication Authorization The SWORD project
Deposit from a desktop client SWORD use cases e.g. DepositMO
Deposit to multiple repositories SWORD use cases e.g. OA-RJ Institutional repository Funder repository Subject-based repository
Deposit by lab equipment SWORD use cases
Repository to repository deposit SWORD use cases Institutional repository National repository
Publishing system / publisher to repository deposit SWORD use cases e.g. OJS client Bibapp client Publishing system (e.g. OJS) Long term storage repository
Research Information System to repository deposit SWORD use cases e.g. Bibapp client RePosit project Research Information System Long term storage repository
How does SWORD work?
There are different methods / verbs that we use when interacting with the web: GET ,[object Object],POST ,[object Object],PUT ,[object Object],DELETE ,[object Object],HTTP basics
SWORD is a  profile  of an existing standard Atom Publishing Protocol (AtomPub) AtomPub is for publishing content to the web AtomPub is designed to be extended AtomPub is used by other systems: GData (used by Google Docs etc), CMIS SWORD foundations
SWORD is a  profile  of an existing standard Atom Publishing Protocol (AtomPub) What does this mean? SWORD isn’t re-inventing the wheel AtomPub clients / APIs can be re-used SWORD foundations
[object Object]
Use that information to prepare and make a deposit Two step process
Ask the repository’s SWORD interface to describe itself This is done using a  Service Document A service document describes the contract between a user and a repository: what you must provide and what the repository will do in return Introducing: The Service Document
Request a service document from the repository HTTP GET  a service document ,[object Object]
Tells you what formats are supported for deposit
Tells you what will happen to your content How to request a Service Document
We have  retrieved  the Service Document We know  where  we can deposit We know  what   we can deposit We know  what will happen  to our deposit We have  created  a deposit package We perform the deposit… The second step
To perform a deposit: HTTP POST  a file to the deposit URL ,[object Object]
Content-Type: application/zip
Content-Disposition: filename=MyItem.zip
Packaging: http://purl.org/net/sword/packages/default  Performing a deposit
<entry xmlns=&quot;http://www.w3.org/2005/Atom&quot; xmlns:sword=http://purl.org/net/sword/> <title>My Deposit</title> <id>info:something:1</id> <updated>2008-08-18T14:27:08Z</updated> <summary type=&quot;text&quot;>A summary</summary> <generator uri=&quot;http://myrepository.ac.uk/engine&quot; version=&quot;1.0&quot;/> <content  type=&quot;application/zip&quot;   src=&quot;http://myrepository.ac.uk/geography-collection/deposit1.zip&quot;/> <sword:packaging>http://purl.org/net/sword/package/default</sword:packaging> <link rel=&quot;edit&quot;  href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit.atom&quot; /> <link rel=&quot;edit-media&quot;  href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit&quot; /> <link rel=&quot;http://purl.net/sword/terms/statement&quot;  href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit.rdf&quot; /> </entry>  Introducing: The Deposit Receipt
Is there anything else we can do? YES! Where SWORD 1.3 leaves off SWORD 2.0 begins… The deposit lifecycle is more complicated that fire-and-forget...
<entry xmlns=&quot;http://www.w3.org/2005/Atom&quot; xmlns:sword=http://purl.org/net/sword/> <title>My Deposit</title> <id>info:something:1</id> <updated>2008-08-18T14:27:08Z</updated> <summary type=&quot;text&quot;>A summary</summary> <generator uri=&quot;http://myrepository.ac.uk/engine&quot; version=&quot;1.0&quot;/> <content  type=&quot;application/zip&quot;   src=&quot;http://myrepository.ac.uk/geography-collection/deposit1.zip&quot;/> <sword:packaging>http://purl.org/net/sword/package/default</sword:packaging> <link rel=&quot;edit&quot;  href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit.atom&quot; /> <link rel=&quot;edit-media&quot;  href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit&quot; /> <link rel=&quot;http://purl.net/sword/terms/statement&quot;  href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit.rdf&quot; /> </entry>  Get a package of the item's entire content in our favourite format
<entry xmlns=&quot;http://www.w3.org/2005/Atom&quot; xmlns:sword=http://purl.org/net/sword/> <title>My Deposit</title> <id>info:something:1</id> <updated>2008-08-18T14:27:08Z</updated> <summary type=&quot;text&quot;>A summary</summary> <generator uri=&quot;http://myrepository.ac.uk/engine&quot; version=&quot;1.0&quot;/> <content  type=&quot;application/zip&quot;   src=&quot;http://myrepository.ac.uk/geography-collection/deposit1.zip&quot;/> <sword:packaging>http://purl.org/net/sword/package/default</sword:packaging> <link rel=&quot;edit&quot;  href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit.atom&quot; /> <link rel=&quot;edit-media&quot;  href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit&quot; /> <link rel=&quot;http://purl.net/sword/terms/statement&quot;  href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit.rdf&quot; /> </entry>  Add more content to the item by POSTing more files
<entry xmlns=&quot;http://www.w3.org/2005/Atom&quot; xmlns:sword=http://purl.org/net/sword/> <title>My Deposit</title> <id>info:something:1</id> <updated>2008-08-18T14:27:08Z</updated> <summary type=&quot;text&quot;>A summary</summary> <generator uri=&quot;http://myrepository.ac.uk/engine&quot; version=&quot;1.0&quot;/> <content  type=&quot;application/zip&quot;   src=&quot;http://myrepository.ac.uk/geography-collection/deposit1.zip&quot;/> <sword:packaging>http://purl.org/net/sword/package/default</sword:packaging> <link rel=&quot;edit&quot;  href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit.atom&quot; /> <link rel=&quot;edit-media&quot;  href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit&quot; /> <link rel=&quot;http://purl.net/sword/terms/statement&quot;  href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit.rdf&quot; /> </entry>  PUT new content over the old, or DELETE all the content
<entry xmlns=&quot;http://www.w3.org/2005/Atom&quot; xmlns:sword=http://purl.org/net/sword/> <title>My Deposit</title> <id>info:something:1</id> <updated>2008-08-18T14:27:08Z</updated> <summary type=&quot;text&quot;>A summary</summary> <generator uri=&quot;http://myrepository.ac.uk/engine&quot; version=&quot;1.0&quot;/> <content  type=&quot;application/zip&quot;   src=&quot;http://myrepository.ac.uk/geography-collection/deposit1.zip&quot;/> <sword:packaging>http://purl.org/net/sword/package/default</sword:packaging> <link rel=&quot;edit&quot;  href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit.atom&quot; /> <link rel=&quot;edit-media&quot;  href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit&quot; /> <link rel=&quot;http://purl.net/sword/terms/statement&quot;  href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit.rdf&quot; /> </entry>  Ask the repository to describe the item, and the state it is in
You Deposit your money You get a Receipt Your Statement tells you what happened to your money since A Banking Analogy
Introducing: The SWORD Statement It tells you what files were produced when the repository unpackaged your deposit It tells you what new files have been added to your deposit (e.g. via format migration, mediated deposit, etc) It tells you where to get the package(s) you originally uploaded It tells you where in the workflow your item is (or any other state that it might be in).  For example, “under review” or “deleted”
<rdf:RDF xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;  xmlns:ore=&quot;http://www.openarchives.org/ore/terms/&quot;> <rdf:Description rdf:about=&quot;http://localhost/edit-uri/43/d0&quot;> <ore:describes rdf:resource=&quot;http://localhost/agg-uri/43/d0&quot;/> </rdf:Description> <rdf:Description rdf:about=&quot;http://localhost/agg-uri/43/d0&quot;> <ore:isDescribedBy rdf:resource=&quot;http://localhost/edit-uri/43/d0&quot;/> <ore:aggregates rdf:resource=&quot;http://localhost/part-uri/43/d0/example.zip&quot;/> <sword:originalDeposit rdf:resource=&quot;http://localhost/part-uri/43/d0/example.zip&quot;/> <sword:state rdf:resource=&quot;http://purl.org/net/sword/state/archived&quot;/> </rdf:Description> <rdf:Description rdf:about=&quot;http://localhost/part-uri/43/d0/example.zip&quot;> <sword:packaging rdf:resource=&quot;http://purl.org/net/sword/package/default&quot;/> <sword:depositedOn>2011-02-24T19:50:04Z</sword:depositedOn> <sword:depositedBy>sword</sword:depositedBy> </rdf:Description> <rdf:Description rdf:about=&quot;http://purl.org/net/sword/state/archived&quot;> <sword:stateDescription> The work has passed through review and is now in the archive </sword:stateDescription> </rdf:Description> </rdf:RDF> Can be an OAI-ORE Resource Map
<rdf:RDF xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;  xmlns:ore=&quot;http://www.openarchives.org/ore/terms/&quot;> <rdf:Description rdf:about=&quot;http://localhost/edit-uri/43/d0&quot;> <ore:describes rdf:resource=&quot;http://localhost/agg-uri/43/d0&quot;/> </rdf:Description> <rdf:Description rdf:about=&quot;http://localhost/agg-uri/43/d0&quot;> <ore:isDescribedBy rdf:resource=&quot;http://localhost/edit-uri/43/d0&quot;/> <ore:aggregates rdf:resource=&quot;http://localhost/part-uri/43/d0/example.zip&quot;/> <sword:originalDeposit rdf:resource=&quot;http://localhost/part-uri/43/d0/example.zip&quot;/> <sword:state rdf:resource=&quot;http://purl.org/net/sword/state/archived&quot;/> </rdf:Description> <rdf:Description rdf:about=&quot;http://localhost/part-uri/43/d0/example.zip&quot;> <sword:packaging rdf:resource=&quot;http://purl.org/net/sword/package/default&quot;/> <sword:depositedOn>2011-02-24T19:50:04Z</sword:depositedOn> <sword:depositedBy>sword</sword:depositedBy> </rdf:Description> <rdf:Description rdf:about=&quot;http://purl.org/net/sword/state/archived&quot;> <sword:stateDescription> The work has passed through review and is now in the archive </sword:stateDescription> </rdf:Description> </rdf:RDF> Tells me where to get my original package
<rdf:RDF xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;  xmlns:ore=&quot;http://www.openarchives.org/ore/terms/&quot;> <rdf:Description rdf:about=&quot;http://localhost/edit-uri/43/d0&quot;> <ore:describes rdf:resource=&quot;http://localhost/agg-uri/43/d0&quot;/> </rdf:Description> <rdf:Description rdf:about=&quot;http://localhost/agg-uri/43/d0&quot;> <ore:isDescribedBy rdf:resource=&quot;http://localhost/edit-uri/43/d0&quot;/> <ore:aggregates rdf:resource=&quot;http://localhost/part-uri/43/d0/example.zip&quot;/> <sword:originalDeposit rdf:resource=&quot;http://localhost/part-uri/43/d0/example.zip&quot;/> <sword:state rdf:resource=&quot;http://purl.org/net/sword/state/archived&quot;/> </rdf:Description> <rdf:Description rdf:about=&quot;http://localhost/part-uri/43/d0/example.zip&quot;> <sword:packaging rdf:resource=&quot;http://purl.org/net/sword/package/default&quot;/> <sword:depositedOn>2011-02-24T19:50:04Z</sword:depositedOn> <sword:depositedBy>sword</sword:depositedBy> </rdf:Description> <rdf:Description rdf:about=&quot;http://purl.org/net/sword/state/archived&quot;> <sword:stateDescription> The work has passed through review and is now in the archive </sword:stateDescription> </rdf:Description> </rdf:RDF> Tells me what state my item is in
Interaction with SWORD is via XML documents XML is good for machine to machine interfaces Do users want to read / write XML? User friendly?
User friendly?
SWORD clients The answer?
Using the web: Do we read and write HTML? No! We use a web browser. An analogy
Three types of SWORD client: ,[object Object],SWORD clients
Online demo client
Desktop demo client
The Facebook SWORD deposit tool http://apps.facebook.com/swordapp/ Another example
Facebook client
Facebook client
1 of 50

Recommended

Module 3 - How SWORD Works by
Module 3 - How SWORD WorksModule 3 - How SWORD Works
Module 3 - How SWORD WorksSWORD Project
6.1K views36 slides
SWORD v2 at JISC Depo meeting by
SWORD v2 at JISC Depo meetingSWORD v2 at JISC Depo meeting
SWORD v2 at JISC Depo meetingSWORD Project
1.9K views18 slides
Module 6 - introducing sword v2 by
Module 6 - introducing sword v2Module 6 - introducing sword v2
Module 6 - introducing sword v2SWORD Project
1.2K views21 slides
Module 4 - SWORD clients by
Module 4 - SWORD clientsModule 4 - SWORD clients
Module 4 - SWORD clientsSWORD Project
7.1K views34 slides
Simple Web service Offering Repository Deposit (SWORD)‏ by
Simple Web service Offering Repository Deposit (SWORD)‏Simple Web service Offering Repository Deposit (SWORD)‏
Simple Web service Offering Repository Deposit (SWORD)‏Julie Allinson
1.4K views16 slides
Module 5 - Create your own SWORD client by
Module 5 - Create your own SWORD clientModule 5 - Create your own SWORD client
Module 5 - Create your own SWORD clientSWORD Project
3.3K views25 slides

More Related Content

What's hot

SWORD: An Overview by
SWORD: An OverviewSWORD: An Overview
SWORD: An OverviewAdrian Stevenson
2.6K views39 slides
Interoperability Fundamentals: SWORD 2 by
Interoperability Fundamentals: SWORD 2Interoperability Fundamentals: SWORD 2
Interoperability Fundamentals: SWORD 2Adrian Stevenson
825 views32 slides
Linux Administration Tutorial | Configuring A DNS Server In 10 Simple Steps |... by
Linux Administration Tutorial | Configuring A DNS Server In 10 Simple Steps |...Linux Administration Tutorial | Configuring A DNS Server In 10 Simple Steps |...
Linux Administration Tutorial | Configuring A DNS Server In 10 Simple Steps |...Edureka!
1.3K views18 slides
Securing Apache Web Servers by
Securing Apache Web ServersSecuring Apache Web Servers
Securing Apache Web Serverswebhostingguy
1.5K views58 slides
HTTP/3 for everyone by
HTTP/3 for everyoneHTTP/3 for everyone
HTTP/3 for everyoneDaniel Stenberg
1.1K views66 slides
curl better by
curl bettercurl better
curl betterDaniel Stenberg
393 views58 slides

What's hot(18)

Interoperability Fundamentals: SWORD 2 by Adrian Stevenson
Interoperability Fundamentals: SWORD 2Interoperability Fundamentals: SWORD 2
Interoperability Fundamentals: SWORD 2
Adrian Stevenson825 views
Linux Administration Tutorial | Configuring A DNS Server In 10 Simple Steps |... by Edureka!
Linux Administration Tutorial | Configuring A DNS Server In 10 Simple Steps |...Linux Administration Tutorial | Configuring A DNS Server In 10 Simple Steps |...
Linux Administration Tutorial | Configuring A DNS Server In 10 Simple Steps |...
Edureka!1.3K views
Securing Apache Web Servers by webhostingguy
Securing Apache Web ServersSecuring Apache Web Servers
Securing Apache Web Servers
webhostingguy1.5K views
Minerva: Drill Storage Plugin for IPFS by BowenDing4
Minerva: Drill Storage Plugin for IPFSMinerva: Drill Storage Plugin for IPFS
Minerva: Drill Storage Plugin for IPFS
BowenDing41.4K views
Adobe AEM Maintenance - Customer Care Office Hours by Andrew Khoury
Adobe AEM Maintenance - Customer Care Office HoursAdobe AEM Maintenance - Customer Care Office Hours
Adobe AEM Maintenance - Customer Care Office Hours
Andrew Khoury2.4K views
Oracle Database on Docker by Franck Pachot
Oracle Database on DockerOracle Database on Docker
Oracle Database on Docker
Franck Pachot1.3K views

Similar to Sword v2 at UKCoRR

Introduction to SDshare by
Introduction to SDshareIntroduction to SDshare
Introduction to SDshareLars Marius Garshol
1.5K views41 slides
Sword Crig 2007 12 06 by
Sword Crig 2007 12 06Sword Crig 2007 12 06
Sword Crig 2007 12 06Julie Allinson
543 views36 slides
Getting Started With The Talis Platform by
Getting Started With The Talis PlatformGetting Started With The Talis Platform
Getting Started With The Talis PlatformLeigh Dodds
811 views101 slides
RESTful design by
RESTful designRESTful design
RESTful designRobert MacLean
353 views39 slides
Making sense of users' Web activities by
Making sense of users' Web activitiesMaking sense of users' Web activities
Making sense of users' Web activitiesMathieu d'Aquin
3.3K views29 slides
Cocoon OSGi CocoonGT2007 by
Cocoon OSGi CocoonGT2007Cocoon OSGi CocoonGT2007
Cocoon OSGi CocoonGT2007Daniel Fagerstrom
658 views29 slides

Similar to Sword v2 at UKCoRR(20)

Getting Started With The Talis Platform by Leigh Dodds
Getting Started With The Talis PlatformGetting Started With The Talis Platform
Getting Started With The Talis Platform
Leigh Dodds811 views
Making sense of users' Web activities by Mathieu d'Aquin
Making sense of users' Web activitiesMaking sense of users' Web activities
Making sense of users' Web activities
Mathieu d'Aquin3.3K views
REST Introduction (PHP London) by Paul James
REST Introduction (PHP London)REST Introduction (PHP London)
REST Introduction (PHP London)
Paul James6.1K views
Adriano Di Luzio - Davvy - PyconSEI Talk by aldur999
Adriano Di Luzio - Davvy - PyconSEI TalkAdriano Di Luzio - Davvy - PyconSEI Talk
Adriano Di Luzio - Davvy - PyconSEI Talk
aldur999632 views
GTLAB Installation Tutorial for SciDAC 2009 by marpierc
GTLAB Installation Tutorial for SciDAC 2009GTLAB Installation Tutorial for SciDAC 2009
GTLAB Installation Tutorial for SciDAC 2009
marpierc635 views
Catacomb Apachecon Fast Feather 2008 by Markus Litz
Catacomb Apachecon Fast Feather 2008Catacomb Apachecon Fast Feather 2008
Catacomb Apachecon Fast Feather 2008
Markus Litz603 views
Spring Boot and REST API by 07.pallav
Spring Boot and REST APISpring Boot and REST API
Spring Boot and REST API
07.pallav671 views
CrossRef How-to: A Technical Introduction to the Basics of CrossRef, Chuck Ko... by Crossref
CrossRef How-to: A Technical Introduction to the Basics of CrossRef, Chuck Ko...CrossRef How-to: A Technical Introduction to the Basics of CrossRef, Chuck Ko...
CrossRef How-to: A Technical Introduction to the Basics of CrossRef, Chuck Ko...
Crossref3.8K views

Recently uploaded

The Role of Patterns in the Era of Large Language Models by
The Role of Patterns in the Era of Large Language ModelsThe Role of Patterns in the Era of Large Language Models
The Role of Patterns in the Era of Large Language ModelsYunyao Li
80 views65 slides
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue by
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlueVNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlueShapeBlue
163 views54 slides
KVM Security Groups Under the Hood - Wido den Hollander - Your.Online by
KVM Security Groups Under the Hood - Wido den Hollander - Your.OnlineKVM Security Groups Under the Hood - Wido den Hollander - Your.Online
KVM Security Groups Under the Hood - Wido den Hollander - Your.OnlineShapeBlue
181 views19 slides
Confidence in CloudStack - Aron Wagner, Nathan Gleason - Americ by
Confidence in CloudStack - Aron Wagner, Nathan Gleason - AmericConfidence in CloudStack - Aron Wagner, Nathan Gleason - Americ
Confidence in CloudStack - Aron Wagner, Nathan Gleason - AmericShapeBlue
88 views9 slides
Why and How CloudStack at weSystems - Stephan Bienek - weSystems by
Why and How CloudStack at weSystems - Stephan Bienek - weSystemsWhy and How CloudStack at weSystems - Stephan Bienek - weSystems
Why and How CloudStack at weSystems - Stephan Bienek - weSystemsShapeBlue
197 views13 slides
Cencora Executive Symposium by
Cencora Executive SymposiumCencora Executive Symposium
Cencora Executive Symposiummarketingcommunicati21
139 views14 slides

Recently uploaded(20)

The Role of Patterns in the Era of Large Language Models by Yunyao Li
The Role of Patterns in the Era of Large Language ModelsThe Role of Patterns in the Era of Large Language Models
The Role of Patterns in the Era of Large Language Models
Yunyao Li80 views
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue by ShapeBlue
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlueVNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue
ShapeBlue163 views
KVM Security Groups Under the Hood - Wido den Hollander - Your.Online by ShapeBlue
KVM Security Groups Under the Hood - Wido den Hollander - Your.OnlineKVM Security Groups Under the Hood - Wido den Hollander - Your.Online
KVM Security Groups Under the Hood - Wido den Hollander - Your.Online
ShapeBlue181 views
Confidence in CloudStack - Aron Wagner, Nathan Gleason - Americ by ShapeBlue
Confidence in CloudStack - Aron Wagner, Nathan Gleason - AmericConfidence in CloudStack - Aron Wagner, Nathan Gleason - Americ
Confidence in CloudStack - Aron Wagner, Nathan Gleason - Americ
ShapeBlue88 views
Why and How CloudStack at weSystems - Stephan Bienek - weSystems by ShapeBlue
Why and How CloudStack at weSystems - Stephan Bienek - weSystemsWhy and How CloudStack at weSystems - Stephan Bienek - weSystems
Why and How CloudStack at weSystems - Stephan Bienek - weSystems
ShapeBlue197 views
State of the Union - Rohit Yadav - Apache CloudStack by ShapeBlue
State of the Union - Rohit Yadav - Apache CloudStackState of the Union - Rohit Yadav - Apache CloudStack
State of the Union - Rohit Yadav - Apache CloudStack
ShapeBlue253 views
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha... by ShapeBlue
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...
ShapeBlue138 views
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue by ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlueCloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
ShapeBlue94 views
Initiating and Advancing Your Strategic GIS Governance Strategy by Safe Software
Initiating and Advancing Your Strategic GIS Governance StrategyInitiating and Advancing Your Strategic GIS Governance Strategy
Initiating and Advancing Your Strategic GIS Governance Strategy
Safe Software140 views
Business Analyst Series 2023 - Week 4 Session 8 by DianaGray10
Business Analyst Series 2023 -  Week 4 Session 8Business Analyst Series 2023 -  Week 4 Session 8
Business Analyst Series 2023 - Week 4 Session 8
DianaGray1086 views
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R... by ShapeBlue
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...
ShapeBlue132 views
DRBD Deep Dive - Philipp Reisner - LINBIT by ShapeBlue
DRBD Deep Dive - Philipp Reisner - LINBITDRBD Deep Dive - Philipp Reisner - LINBIT
DRBD Deep Dive - Philipp Reisner - LINBIT
ShapeBlue140 views
Extending KVM Host HA for Non-NFS Storage - Alex Ivanov - StorPool by ShapeBlue
Extending KVM Host HA for Non-NFS Storage -  Alex Ivanov - StorPoolExtending KVM Host HA for Non-NFS Storage -  Alex Ivanov - StorPool
Extending KVM Host HA for Non-NFS Storage - Alex Ivanov - StorPool
ShapeBlue84 views
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or... by ShapeBlue
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
ShapeBlue158 views
NTGapps NTG LowCode Platform by Mustafa Kuğu
NTGapps NTG LowCode Platform NTGapps NTG LowCode Platform
NTGapps NTG LowCode Platform
Mustafa Kuğu365 views
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And... by ShapeBlue
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...
ShapeBlue63 views
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda... by ShapeBlue
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...
ShapeBlue120 views
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit... by ShapeBlue
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...
ShapeBlue117 views

Sword v2 at UKCoRR

  • 1. SWORD 2.0 Supporting Full Deposit Lifecycles Richard Jones Cottage Labs richard@cottagelabs.com http://cottagelabs.com
  • 2. SWORD is a: Simple Web service Offering Repository Deposit What is SWORD? During the development of SWORD it was decided to keep the protocol as simple and lightweight as possible.
  • 3. SWORD is a: Simple Web service Offering Repository Deposit What is SWORD? A software interface that is accessible using http
  • 4. SWORD is a: Simple Web service Offering Repository Deposit What is SWORD?
  • 5. SWORD is a: Simple Web service Offering Repository Deposit What is SWORD? Agnostic: DSpace EPrints Fedora Intralibrary Zentity ???
  • 6. SWORD is a: Simple Web service Offering Repository Deposit What is SWORD? Putting things INTO a repository
  • 7. The purpose of SWORD is to: Provide an interoperable interface that allows deposits to be easily made into repositories . What is the purpose of SWORD?
  • 8. Out of scope: Packaging Metadata Authentication Authorization The SWORD project
  • 9. Deposit from a desktop client SWORD use cases e.g. DepositMO
  • 10. Deposit to multiple repositories SWORD use cases e.g. OA-RJ Institutional repository Funder repository Subject-based repository
  • 11. Deposit by lab equipment SWORD use cases
  • 12. Repository to repository deposit SWORD use cases Institutional repository National repository
  • 13. Publishing system / publisher to repository deposit SWORD use cases e.g. OJS client Bibapp client Publishing system (e.g. OJS) Long term storage repository
  • 14. Research Information System to repository deposit SWORD use cases e.g. Bibapp client RePosit project Research Information System Long term storage repository
  • 15. How does SWORD work?
  • 16.
  • 17. SWORD is a profile of an existing standard Atom Publishing Protocol (AtomPub) AtomPub is for publishing content to the web AtomPub is designed to be extended AtomPub is used by other systems: GData (used by Google Docs etc), CMIS SWORD foundations
  • 18. SWORD is a profile of an existing standard Atom Publishing Protocol (AtomPub) What does this mean? SWORD isn’t re-inventing the wheel AtomPub clients / APIs can be re-used SWORD foundations
  • 19.
  • 20. Use that information to prepare and make a deposit Two step process
  • 21. Ask the repository’s SWORD interface to describe itself This is done using a Service Document A service document describes the contract between a user and a repository: what you must provide and what the repository will do in return Introducing: The Service Document
  • 22.
  • 23. Tells you what formats are supported for deposit
  • 24. Tells you what will happen to your content How to request a Service Document
  • 25. We have retrieved the Service Document We know where we can deposit We know what we can deposit We know what will happen to our deposit We have created a deposit package We perform the deposit… The second step
  • 26.
  • 30. <entry xmlns=&quot;http://www.w3.org/2005/Atom&quot; xmlns:sword=http://purl.org/net/sword/> <title>My Deposit</title> <id>info:something:1</id> <updated>2008-08-18T14:27:08Z</updated> <summary type=&quot;text&quot;>A summary</summary> <generator uri=&quot;http://myrepository.ac.uk/engine&quot; version=&quot;1.0&quot;/> <content type=&quot;application/zip&quot; src=&quot;http://myrepository.ac.uk/geography-collection/deposit1.zip&quot;/> <sword:packaging>http://purl.org/net/sword/package/default</sword:packaging> <link rel=&quot;edit&quot; href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit.atom&quot; /> <link rel=&quot;edit-media&quot; href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit&quot; /> <link rel=&quot;http://purl.net/sword/terms/statement&quot; href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit.rdf&quot; /> </entry> Introducing: The Deposit Receipt
  • 31. Is there anything else we can do? YES! Where SWORD 1.3 leaves off SWORD 2.0 begins… The deposit lifecycle is more complicated that fire-and-forget...
  • 32. <entry xmlns=&quot;http://www.w3.org/2005/Atom&quot; xmlns:sword=http://purl.org/net/sword/> <title>My Deposit</title> <id>info:something:1</id> <updated>2008-08-18T14:27:08Z</updated> <summary type=&quot;text&quot;>A summary</summary> <generator uri=&quot;http://myrepository.ac.uk/engine&quot; version=&quot;1.0&quot;/> <content type=&quot;application/zip&quot; src=&quot;http://myrepository.ac.uk/geography-collection/deposit1.zip&quot;/> <sword:packaging>http://purl.org/net/sword/package/default</sword:packaging> <link rel=&quot;edit&quot; href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit.atom&quot; /> <link rel=&quot;edit-media&quot; href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit&quot; /> <link rel=&quot;http://purl.net/sword/terms/statement&quot; href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit.rdf&quot; /> </entry> Get a package of the item's entire content in our favourite format
  • 33. <entry xmlns=&quot;http://www.w3.org/2005/Atom&quot; xmlns:sword=http://purl.org/net/sword/> <title>My Deposit</title> <id>info:something:1</id> <updated>2008-08-18T14:27:08Z</updated> <summary type=&quot;text&quot;>A summary</summary> <generator uri=&quot;http://myrepository.ac.uk/engine&quot; version=&quot;1.0&quot;/> <content type=&quot;application/zip&quot; src=&quot;http://myrepository.ac.uk/geography-collection/deposit1.zip&quot;/> <sword:packaging>http://purl.org/net/sword/package/default</sword:packaging> <link rel=&quot;edit&quot; href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit.atom&quot; /> <link rel=&quot;edit-media&quot; href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit&quot; /> <link rel=&quot;http://purl.net/sword/terms/statement&quot; href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit.rdf&quot; /> </entry> Add more content to the item by POSTing more files
  • 34. <entry xmlns=&quot;http://www.w3.org/2005/Atom&quot; xmlns:sword=http://purl.org/net/sword/> <title>My Deposit</title> <id>info:something:1</id> <updated>2008-08-18T14:27:08Z</updated> <summary type=&quot;text&quot;>A summary</summary> <generator uri=&quot;http://myrepository.ac.uk/engine&quot; version=&quot;1.0&quot;/> <content type=&quot;application/zip&quot; src=&quot;http://myrepository.ac.uk/geography-collection/deposit1.zip&quot;/> <sword:packaging>http://purl.org/net/sword/package/default</sword:packaging> <link rel=&quot;edit&quot; href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit.atom&quot; /> <link rel=&quot;edit-media&quot; href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit&quot; /> <link rel=&quot;http://purl.net/sword/terms/statement&quot; href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit.rdf&quot; /> </entry> PUT new content over the old, or DELETE all the content
  • 35. <entry xmlns=&quot;http://www.w3.org/2005/Atom&quot; xmlns:sword=http://purl.org/net/sword/> <title>My Deposit</title> <id>info:something:1</id> <updated>2008-08-18T14:27:08Z</updated> <summary type=&quot;text&quot;>A summary</summary> <generator uri=&quot;http://myrepository.ac.uk/engine&quot; version=&quot;1.0&quot;/> <content type=&quot;application/zip&quot; src=&quot;http://myrepository.ac.uk/geography-collection/deposit1.zip&quot;/> <sword:packaging>http://purl.org/net/sword/package/default</sword:packaging> <link rel=&quot;edit&quot; href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit.atom&quot; /> <link rel=&quot;edit-media&quot; href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit&quot; /> <link rel=&quot;http://purl.net/sword/terms/statement&quot; href=&quot;http://www.myrepository.ac.uk/geography-collection/my_deposit.rdf&quot; /> </entry> Ask the repository to describe the item, and the state it is in
  • 36. You Deposit your money You get a Receipt Your Statement tells you what happened to your money since A Banking Analogy
  • 37. Introducing: The SWORD Statement It tells you what files were produced when the repository unpackaged your deposit It tells you what new files have been added to your deposit (e.g. via format migration, mediated deposit, etc) It tells you where to get the package(s) you originally uploaded It tells you where in the workflow your item is (or any other state that it might be in). For example, “under review” or “deleted”
  • 38. <rdf:RDF xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot; xmlns:ore=&quot;http://www.openarchives.org/ore/terms/&quot;> <rdf:Description rdf:about=&quot;http://localhost/edit-uri/43/d0&quot;> <ore:describes rdf:resource=&quot;http://localhost/agg-uri/43/d0&quot;/> </rdf:Description> <rdf:Description rdf:about=&quot;http://localhost/agg-uri/43/d0&quot;> <ore:isDescribedBy rdf:resource=&quot;http://localhost/edit-uri/43/d0&quot;/> <ore:aggregates rdf:resource=&quot;http://localhost/part-uri/43/d0/example.zip&quot;/> <sword:originalDeposit rdf:resource=&quot;http://localhost/part-uri/43/d0/example.zip&quot;/> <sword:state rdf:resource=&quot;http://purl.org/net/sword/state/archived&quot;/> </rdf:Description> <rdf:Description rdf:about=&quot;http://localhost/part-uri/43/d0/example.zip&quot;> <sword:packaging rdf:resource=&quot;http://purl.org/net/sword/package/default&quot;/> <sword:depositedOn>2011-02-24T19:50:04Z</sword:depositedOn> <sword:depositedBy>sword</sword:depositedBy> </rdf:Description> <rdf:Description rdf:about=&quot;http://purl.org/net/sword/state/archived&quot;> <sword:stateDescription> The work has passed through review and is now in the archive </sword:stateDescription> </rdf:Description> </rdf:RDF> Can be an OAI-ORE Resource Map
  • 39. <rdf:RDF xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot; xmlns:ore=&quot;http://www.openarchives.org/ore/terms/&quot;> <rdf:Description rdf:about=&quot;http://localhost/edit-uri/43/d0&quot;> <ore:describes rdf:resource=&quot;http://localhost/agg-uri/43/d0&quot;/> </rdf:Description> <rdf:Description rdf:about=&quot;http://localhost/agg-uri/43/d0&quot;> <ore:isDescribedBy rdf:resource=&quot;http://localhost/edit-uri/43/d0&quot;/> <ore:aggregates rdf:resource=&quot;http://localhost/part-uri/43/d0/example.zip&quot;/> <sword:originalDeposit rdf:resource=&quot;http://localhost/part-uri/43/d0/example.zip&quot;/> <sword:state rdf:resource=&quot;http://purl.org/net/sword/state/archived&quot;/> </rdf:Description> <rdf:Description rdf:about=&quot;http://localhost/part-uri/43/d0/example.zip&quot;> <sword:packaging rdf:resource=&quot;http://purl.org/net/sword/package/default&quot;/> <sword:depositedOn>2011-02-24T19:50:04Z</sword:depositedOn> <sword:depositedBy>sword</sword:depositedBy> </rdf:Description> <rdf:Description rdf:about=&quot;http://purl.org/net/sword/state/archived&quot;> <sword:stateDescription> The work has passed through review and is now in the archive </sword:stateDescription> </rdf:Description> </rdf:RDF> Tells me where to get my original package
  • 40. <rdf:RDF xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot; xmlns:ore=&quot;http://www.openarchives.org/ore/terms/&quot;> <rdf:Description rdf:about=&quot;http://localhost/edit-uri/43/d0&quot;> <ore:describes rdf:resource=&quot;http://localhost/agg-uri/43/d0&quot;/> </rdf:Description> <rdf:Description rdf:about=&quot;http://localhost/agg-uri/43/d0&quot;> <ore:isDescribedBy rdf:resource=&quot;http://localhost/edit-uri/43/d0&quot;/> <ore:aggregates rdf:resource=&quot;http://localhost/part-uri/43/d0/example.zip&quot;/> <sword:originalDeposit rdf:resource=&quot;http://localhost/part-uri/43/d0/example.zip&quot;/> <sword:state rdf:resource=&quot;http://purl.org/net/sword/state/archived&quot;/> </rdf:Description> <rdf:Description rdf:about=&quot;http://localhost/part-uri/43/d0/example.zip&quot;> <sword:packaging rdf:resource=&quot;http://purl.org/net/sword/package/default&quot;/> <sword:depositedOn>2011-02-24T19:50:04Z</sword:depositedOn> <sword:depositedBy>sword</sword:depositedBy> </rdf:Description> <rdf:Description rdf:about=&quot;http://purl.org/net/sword/state/archived&quot;> <sword:stateDescription> The work has passed through review and is now in the archive </sword:stateDescription> </rdf:Description> </rdf:RDF> Tells me what state my item is in
  • 41. Interaction with SWORD is via XML documents XML is good for machine to machine interfaces Do users want to read / write XML? User friendly?
  • 43. SWORD clients The answer?
  • 44. Using the web: Do we read and write HTML? No! We use a web browser. An analogy
  • 45.
  • 48. The Facebook SWORD deposit tool http://apps.facebook.com/swordapp/ Another example
  • 51. Facebook client The application performs the packaging (metadata + file)
  • 53.
  • 54. SWORD 2.0 Clients/Servers Clients PHP (+ Facebook) Java Python Ruby (+ Bibapp) Servers DSpace EPrints Fedora
  • 55. SWORD 2.0 Timeline November – February Consultation and development of a draft profile and internet drafts March – May Client and Server Development
  • 56. Original slides by Stuart Lewis stuart@swordapp.org Additional SWORD 2.0 material by Richard Jones richard@cottagelabs.com The SWORD project http://swordapp.org/ Funded by JISC http://www.jisc.ac.uk/ Licence Creative commons Credits