SlideShare ist ein Scribd-Unternehmen logo
1 von 36
The SWORD Course Module3 HowSWORD works
Module objectives By the end of this module you will: Know how SWORD works Understand service documents Know how to retrieve a service document Know where to find service documents for common repository platforms Know how to perform a deposit Understand what a package is
How does SWORD work? A quick re-cap: SWORD is a web service that allows deposits to take place into a repository.
HTTP basics There are different methods / verbs that we use when interacting with the web: GET Requests a resource POST Create a new resource PUT Update an existing resource DELETE Delete a resource and a few others
HTTP basics Whenever a web request is made, the server responds with a code: 200 OK 201 CREATED 400 BAD REQUEST 404 NOT FOUND 415 UNSUPPORTED MEDIA TYPE 501 NOT IMPLEMENTED
SWORD foundations 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) Jangle
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
Two step process Ask the repository’s SWORD interface to describe itself Use that information to prepare and make a deposit
Introducing the service document 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
Who can request a Service Document? A repository typically protects its service documents using HTTP BASIC Authentication User provides a username and password Service document is customised to the user’s rights Authentication is normally hidden by a SWORD client
How to request a Service Document Request a service document from the repository GET a service document In your browser It may refuse to display it. Save, then open in a text editor Using a SWORD client Using a tools such as curl / wget curl http://username:password@example.com/sword/servicedocument
An example service document            <?xml version="1.0" encoding="utf-16"?><app:servicexmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:sword="http://purl.org/net/sword/" xmlns:dcterms="http://purl.org/dc/terms/">    <sword:version>1.3</sword:version>    <sword:verbose>true</sword:verbose>    <sword:noOp>true</sword:noOp>    <sword:maxUploadSize>-1</sword:maxUploadSize>    <app:workspace>        <atom:title type="text">DSpace at My University</atom:title>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/475">            <atom:title type="text">Digitooltifs</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/473">            <atom:title type="text">Mapped items</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>    </app:workspace></app:service>
An example service document            <?xml version="1.0" encoding="utf-16"?><app:servicexmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:sword="http://purl.org/net/sword/" xmlns:dcterms="http://purl.org/dc/terms/">    <sword:version>1.3</sword:version>    <sword:verbose>true</sword:verbose>    <sword:noOp>true</sword:noOp>    <sword:maxUploadSize>-1</sword:maxUploadSize>    <app:workspace>        <atom:title type="text">DSpace at My University</atom:title>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/475">            <atom:title type="text">Digitooltifs</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/473">            <atom:title type="text">Mapped items</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>    </app:workspace></app:service>
An example service document            <?xml version="1.0" encoding="utf-16"?><app:servicexmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:sword="http://purl.org/net/sword/" xmlns:dcterms="http://purl.org/dc/terms/">    <sword:version>1.3</sword:version>    <sword:verbose>true</sword:verbose>    <sword:noOp>true</sword:noOp>    <sword:maxUploadSize>-1</sword:maxUploadSize>    <app:workspace>        <atom:title type="text">DSpace at My University</atom:title>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/475">            <atom:title type="text">Digitooltifs</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/473">            <atom:title type="text">Mapped items</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>    </app:workspace></app:service>
An example service document            <?xml version="1.0" encoding="utf-16"?><app:servicexmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:sword="http://purl.org/net/sword/" xmlns:dcterms="http://purl.org/dc/terms/">    <sword:version>1.3</sword:version>    <sword:verbose>true</sword:verbose>    <sword:noOp>true</sword:noOp>    <sword:maxUploadSize>-1</sword:maxUploadSize>    <app:workspace>        <atom:title type="text">DSpace at My University</atom:title>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/475">            <atom:title type="text">Digitooltifs</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/473">            <atom:title type="text">Mapped items</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>    </app:workspace></app:service>
An example service document            <?xml version="1.0" encoding="utf-16"?><app:servicexmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:sword="http://purl.org/net/sword/" xmlns:dcterms="http://purl.org/dc/terms/">    <sword:version>1.3</sword:version>    <sword:verbose>true</sword:verbose>    <sword:noOp>true</sword:noOp>    <sword:maxUploadSize>-1</sword:maxUploadSize>    <app:workspace>        <atom:title type="text">DSpace at My University</atom:title>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/475">            <atom:title type="text">Digitooltifs</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/473">            <atom:title type="text">Mapped items</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>    </app:workspace></app:service>
An example service document            <?xml version="1.0" encoding="utf-16"?><app:servicexmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:sword="http://purl.org/net/sword/" xmlns:dcterms="http://purl.org/dc/terms/">    <sword:version>1.3</sword:version>    <sword:verbose>true</sword:verbose>    <sword:noOp>true</sword:noOp>    <sword:maxUploadSize>-1</sword:maxUploadSize>    <app:workspace>        <atom:title type="text">DSpace at My University</atom:title>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/475">            <atom:title type="text">Digitooltifs</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/473">            <atom:title type="text">Mapped items</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>    </app:workspace></app:service>
An example service document            <?xml version="1.0" encoding="utf-16"?><app:servicexmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:sword="http://purl.org/net/sword/" xmlns:dcterms="http://purl.org/dc/terms/">    <sword:version>1.3</sword:version>    <sword:verbose>true</sword:verbose>    <sword:noOp>true</sword:noOp>    <sword:maxUploadSize>-1</sword:maxUploadSize>    <app:workspace>        <atom:title type="text">DSpace at My University</atom:title>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/475">            <atom:title type="text">Digitooltifs</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/473">            <atom:title type="text">Mapped items</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>    </app:workspace></app:service>
Common Service Document locations DSpace: http://dspace.example.com/sword/servicedocument EPrints: http://eprints.example.com/sword-app/servicedocument Fedora http://fedora.example.com/sword/servicedocument IntraLibrary: http://intralibrary.example.com/IntraLibrary-Deposit/
The second step We have retrieved the Service Document We know where we can deposit We know whatwe can deposit We know what will happen to our deposit
Let’s talk about packaging What is a package? Like a birthday present! It has some content in the middle It comes with a card to describe it (metadata) Who it is for / who it is from / why it was sent It is wrapped up
Let’s talk about packaging Examples of packaging formats IMSCP JAR files .docx files Typically zip files, with metadata manifests
Let’s talk about packaging What packaging format does my repository use? No de-facto packaging format in the repository world Implications for interoperability METS/SWAP implemented by DSpace / EPrints / Fedora
Let’s talk about packaging METS/SWAP Zip file mets.xml manifest Metadata described in SWAP Dublin Core elements
The second step We have retrieved the Service Document We know where we can deposit We know whatwe can deposit We know what will happen to our deposit We have created our deposit package We perform the deposit…
Performing a deposit To perform a deposit: POST a file to the deposit URL POST /geography-collection HTTP/1.1 Host: myrepository.ac.uk Content-Type: application/zip  Authorization: Basic ZGFmZnk6c2VjZXJldA== Content-Length: nnn Content-MD5: [md5-digest] Content-Disposition: filename=MyItem.zip X-Packaging: http://purl.org/net/sword-types/mets/dspace User-Agent: My SWORD Client
Performing a deposit HTTP/1.1 201 Created Date: Mon, 18 August 2008 14:27:11 GMT Content-Length: nnn Content-Type: application/atom+xml; charset="utf-8” Location: http://myrepository.ac.uk/geography-collection/atom/my_deposit.atom <?xml version="1.0"?> <entry xmlns="http://www.w3.org/2005/Atom" xmlns:sword=http://purl.org/net/sword/> 	<title>My Deposit</title> 	<id>info:something:1</id> 	<updated>2008-08-18T14:27:08Z</updated> 	<author><name>jbloggs</name></author> 	<summary type="text">A summary</summary> 	<sword:userAgent> SWORD client</sword:userAgent> 	<generator uri="http://myrepository.ac.uk/engine" version="1.0"/> 	<content type="application/zip"src="http://myrepository.ac.uk/geography-collection/deposit1.zip"/> 	<sword:packaging>http://purl.org/net/sword-types/mets/dspace</sword:packaging> 	<link rel="edit" href="http://www.myrepository.ac.uk/geography-collection/atom/my_deposit.atom" /> </entry>
A failed deposit Receive an error document Is also an Atom document HTTP 1.1 400 Bad Request <?xml version="1.0" encoding="utf-8"?> <sword:errorxmlns="http://www.w3.org/2005/Atom" xmlns:sword="http://purl.org/net/sword/" xmlns:arxiv="http://arxiv.org/schemas/atom" href=http://example.org/errors/BadManifest> 	<author> <name>Example repository</name> </author> 	<title>ERROR</title> 	<updated>2008-02-19T09:34:27Z</updated> 	<summary>The manifest could be parsed, but was not valid - no technical metadata was provided.</summary> 	<sword:treatment>processing failed</sword:treatment> 	<link rel="alternate" href="https://example.org/help" type="text/html"/> </sword:error>
SWORD vsAtomPub AcceptPackaging What packaging formats are accepted <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>  Set during deposit X-Packaging: http://purl.org/net/sword-types/METSDSpaceSIP In deposit response <sword:packaging>http://purl.org/net/sword-types/METSDSpaceSIP</sword:packaging>
SWORD vsAtomPub Mediated Deposit Deposit ‘on-behalf-of’ In service document: <sword:mediation>true</sword:mediation> In HTTP requests: X-On-Behalf-Of: other-user
SWORD vsAtomPub Developer features NoOp deposit (don’t actually make the deposit): X-No-Op: true Verbose output (longer description) X-Verbose: true
SWORD vsAtomPub Nested Service Documents Stops a service document getting too large when representing the structure of a large repository <sword:service>	http://repo.example.org/science/servicedocument</sword:service>
Questions? SWORD email list: sword-app-tech@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sword-app-tech
Want to learn more? If SWORD is the answer, what is the question? Use of the Simple Web service Offering Repository Deposit protocol http://dx.doi.org/10.1108/00330330910998057 http://hdl.handle.net/2292/5315
Credits This course has been produced by: Stuart Lewis The SWORD project http://swordapp.org/ Funded by JISC http://www.jisc.ac.uk/ Licence Creative commons
Photo Credits Lecture hall: http://www.flickr.com/photos/iamthebestartist/2008790/

Weitere ähnliche Inhalte

Was ist angesagt?

OAuth2 - Introduction
OAuth2 - IntroductionOAuth2 - Introduction
OAuth2 - IntroductionKnoldus Inc.
 
Going Beyond Microsoft IIS Short File Name Disclosure - NahamCon 2023 Edition
Going Beyond Microsoft IIS Short File Name Disclosure - NahamCon 2023 EditionGoing Beyond Microsoft IIS Short File Name Disclosure - NahamCon 2023 Edition
Going Beyond Microsoft IIS Short File Name Disclosure - NahamCon 2023 EditionSoroush Dalili
 
XSS Magic tricks
XSS Magic tricksXSS Magic tricks
XSS Magic tricksGarethHeyes
 
Introduction to JWT and How to integrate with Spring Security
Introduction to JWT and How to integrate with Spring SecurityIntroduction to JWT and How to integrate with Spring Security
Introduction to JWT and How to integrate with Spring SecurityBruno Henrique Rother
 
Token Authentication in ASP.NET Core
Token Authentication in ASP.NET CoreToken Authentication in ASP.NET Core
Token Authentication in ASP.NET CoreStormpath
 
Adobe AEM - From Eventing to Job Processing
Adobe AEM - From Eventing to Job ProcessingAdobe AEM - From Eventing to Job Processing
Adobe AEM - From Eventing to Job ProcessingCarsten Ziegeler
 
Ceh v5 module 15 hacking wireless networks
Ceh v5 module 15 hacking wireless networksCeh v5 module 15 hacking wireless networks
Ceh v5 module 15 hacking wireless networksVi Tính Hoàng Nam
 
Overview of JSON Object Signing and Encryption
Overview of JSON Object Signing and EncryptionOverview of JSON Object Signing and Encryption
Overview of JSON Object Signing and EncryptionMasaru Kurahayashi
 
Module 8 System Hacking
Module 8   System HackingModule 8   System Hacking
Module 8 System Hackingleminhvuong
 
Introduction to JavaScript (1).ppt
Introduction to JavaScript (1).pptIntroduction to JavaScript (1).ppt
Introduction to JavaScript (1).pptMuhammadRehan856177
 
IBMが新しいJava EEコンテナを作っているらしい -Libertyプロファイルとは-
IBMが新しいJava EEコンテナを作っているらしい -Libertyプロファイルとは-IBMが新しいJava EEコンテナを作っているらしい -Libertyプロファイルとは-
IBMが新しいJava EEコンテナを作っているらしい -Libertyプロファイルとは-Takakiyo Tanaka
 
Using JSON Web Tokens for REST Authentication
Using JSON Web Tokens for REST Authentication Using JSON Web Tokens for REST Authentication
Using JSON Web Tokens for REST Authentication Mediacurrent
 
Spring Framework - Data Access
Spring Framework - Data AccessSpring Framework - Data Access
Spring Framework - Data AccessDzmitry Naskou
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!Jakub Kubrynski
 

Was ist angesagt? (20)

OAuth2 - Introduction
OAuth2 - IntroductionOAuth2 - Introduction
OAuth2 - Introduction
 
Going Beyond Microsoft IIS Short File Name Disclosure - NahamCon 2023 Edition
Going Beyond Microsoft IIS Short File Name Disclosure - NahamCon 2023 EditionGoing Beyond Microsoft IIS Short File Name Disclosure - NahamCon 2023 Edition
Going Beyond Microsoft IIS Short File Name Disclosure - NahamCon 2023 Edition
 
XSS Magic tricks
XSS Magic tricksXSS Magic tricks
XSS Magic tricks
 
Json web token
Json web tokenJson web token
Json web token
 
Introduction to JWT and How to integrate with Spring Security
Introduction to JWT and How to integrate with Spring SecurityIntroduction to JWT and How to integrate with Spring Security
Introduction to JWT and How to integrate with Spring Security
 
Token Authentication in ASP.NET Core
Token Authentication in ASP.NET CoreToken Authentication in ASP.NET Core
Token Authentication in ASP.NET Core
 
Adobe AEM - From Eventing to Job Processing
Adobe AEM - From Eventing to Job ProcessingAdobe AEM - From Eventing to Job Processing
Adobe AEM - From Eventing to Job Processing
 
Ceh v5 module 15 hacking wireless networks
Ceh v5 module 15 hacking wireless networksCeh v5 module 15 hacking wireless networks
Ceh v5 module 15 hacking wireless networks
 
OAuth 2.0
OAuth 2.0OAuth 2.0
OAuth 2.0
 
Overview of JSON Object Signing and Encryption
Overview of JSON Object Signing and EncryptionOverview of JSON Object Signing and Encryption
Overview of JSON Object Signing and Encryption
 
JSON WEB TOKEN
JSON WEB TOKENJSON WEB TOKEN
JSON WEB TOKEN
 
Module 8 System Hacking
Module 8   System HackingModule 8   System Hacking
Module 8 System Hacking
 
Introduction to JavaScript (1).ppt
Introduction to JavaScript (1).pptIntroduction to JavaScript (1).ppt
Introduction to JavaScript (1).ppt
 
IBMが新しいJava EEコンテナを作っているらしい -Libertyプロファイルとは-
IBMが新しいJava EEコンテナを作っているらしい -Libertyプロファイルとは-IBMが新しいJava EEコンテナを作っているらしい -Libertyプロファイルとは-
IBMが新しいJava EEコンテナを作っているらしい -Libertyプロファイルとは-
 
Using JSON Web Tokens for REST Authentication
Using JSON Web Tokens for REST Authentication Using JSON Web Tokens for REST Authentication
Using JSON Web Tokens for REST Authentication
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring Framework - Data Access
Spring Framework - Data AccessSpring Framework - Data Access
Spring Framework - Data Access
 
Lfi
LfiLfi
Lfi
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!
 
NodeJS
NodeJSNodeJS
NodeJS
 

Andere mochten auch

Module 2 - SWORD Use Cases
Module 2 - SWORD Use CasesModule 2 - SWORD Use Cases
Module 2 - SWORD Use CasesSWORD Project
 
Module 1 - An Introduction To SWORD
Module 1 - An Introduction To SWORDModule 1 - An Introduction To SWORD
Module 1 - An Introduction To SWORDSWORD Project
 
Simple Web service Offering Repository Deposit (SWORD)‏
Simple Web service Offering Repository Deposit (SWORD)‏Simple Web service Offering Repository Deposit (SWORD)‏
Simple Web service Offering Repository Deposit (SWORD)‏Julie Allinson
 
Module 5 - Create your own SWORD client
Module 5 - Create your own SWORD clientModule 5 - Create your own SWORD client
Module 5 - Create your own SWORD clientSWORD Project
 
SWORD v2 debut at Open Repositories 2011
SWORD v2 debut at Open Repositories 2011SWORD v2 debut at Open Repositories 2011
SWORD v2 debut at Open Repositories 2011SWORD Project
 
Module 6 - introducing sword v2
Module 6 - introducing sword v2Module 6 - introducing sword v2
Module 6 - introducing sword v2SWORD Project
 

Andere mochten auch (6)

Module 2 - SWORD Use Cases
Module 2 - SWORD Use CasesModule 2 - SWORD Use Cases
Module 2 - SWORD Use Cases
 
Module 1 - An Introduction To SWORD
Module 1 - An Introduction To SWORDModule 1 - An Introduction To SWORD
Module 1 - An Introduction To SWORD
 
Simple Web service Offering Repository Deposit (SWORD)‏
Simple Web service Offering Repository Deposit (SWORD)‏Simple Web service Offering Repository Deposit (SWORD)‏
Simple Web service Offering Repository Deposit (SWORD)‏
 
Module 5 - Create your own SWORD client
Module 5 - Create your own SWORD clientModule 5 - Create your own SWORD client
Module 5 - Create your own SWORD client
 
SWORD v2 debut at Open Repositories 2011
SWORD v2 debut at Open Repositories 2011SWORD v2 debut at Open Repositories 2011
SWORD v2 debut at Open Repositories 2011
 
Module 6 - introducing sword v2
Module 6 - introducing sword v2Module 6 - introducing sword v2
Module 6 - introducing sword v2
 

Ähnlich wie Module 3 - How SWORD Works

Making Repository Easier With SWORD
Making Repository Easier With SWORDMaking Repository Easier With SWORD
Making Repository Easier With SWORDAdrian Stevenson
 
Interoperability Fundamentals: SWORD 2
Interoperability Fundamentals: SWORD 2Interoperability Fundamentals: SWORD 2
Interoperability Fundamentals: SWORD 2Adrian Stevenson
 
Intro to web services
Intro to web servicesIntro to web services
Intro to web servicesNeil Ghosh
 
Lightweight Deposit using SWORD
Lightweight Deposit using SWORDLightweight Deposit using SWORD
Lightweight Deposit using SWORDAdrian Stevenson
 
Ajp notes-chapter-06
Ajp notes-chapter-06Ajp notes-chapter-06
Ajp notes-chapter-06Ankit Dubey
 
SWORD v2 at JISC Depo meeting
SWORD v2 at JISC Depo meetingSWORD v2 at JISC Depo meeting
SWORD v2 at JISC Depo meetingSWORD Project
 
Kotlin server side frameworks
Kotlin server side frameworksKotlin server side frameworks
Kotlin server side frameworksKen Yee
 
Introduction to the World Wide Web
Introduction to the World Wide WebIntroduction to the World Wide Web
Introduction to the World Wide WebAbdalla Mahmoud
 
Implementation of ssl injava
Implementation of ssl injavaImplementation of ssl injava
Implementation of ssl injavatanujagrawal
 
Deploy secure, scalable, and highly available web apps with Azure Front Door ...
Deploy secure, scalable, and highly available web apps with Azure Front Door ...Deploy secure, scalable, and highly available web apps with Azure Front Door ...
Deploy secure, scalable, and highly available web apps with Azure Front Door ...Stamo Petkov
 
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...
CrossRef How-to: A Technical Introduction to the Basics of CrossRef, Chuck Ko...Crossref
 
Introduction To ASP.NET MVC
Introduction To ASP.NET MVCIntroduction To ASP.NET MVC
Introduction To ASP.NET MVCAlan Dean
 

Ähnlich wie Module 3 - How SWORD Works (20)

Sword v2 at UKCoRR
Sword v2 at UKCoRRSword v2 at UKCoRR
Sword v2 at UKCoRR
 
Making Repository Easier With SWORD
Making Repository Easier With SWORDMaking Repository Easier With SWORD
Making Repository Easier With SWORD
 
SWORD: The Story So Far
SWORD: The Story So FarSWORD: The Story So Far
SWORD: The Story So Far
 
Interoperability Fundamentals: SWORD 2
Interoperability Fundamentals: SWORD 2Interoperability Fundamentals: SWORD 2
Interoperability Fundamentals: SWORD 2
 
Intro to web services
Intro to web servicesIntro to web services
Intro to web services
 
Lightweight Deposit using SWORD
Lightweight Deposit using SWORDLightweight Deposit using SWORD
Lightweight Deposit using SWORD
 
Ajp notes-chapter-06
Ajp notes-chapter-06Ajp notes-chapter-06
Ajp notes-chapter-06
 
SWORD: An Overview
SWORD: An OverviewSWORD: An Overview
SWORD: An Overview
 
SWORD v2 at JISC Depo meeting
SWORD v2 at JISC Depo meetingSWORD v2 at JISC Depo meeting
SWORD v2 at JISC Depo meeting
 
SOAP Overview
SOAP OverviewSOAP Overview
SOAP Overview
 
Spider Course Day 1
Spider Course Day 1Spider Course Day 1
Spider Course Day 1
 
Kotlin server side frameworks
Kotlin server side frameworksKotlin server side frameworks
Kotlin server side frameworks
 
Introduction to the World Wide Web
Introduction to the World Wide WebIntroduction to the World Wide Web
Introduction to the World Wide Web
 
sveltekit-en.pdf
sveltekit-en.pdfsveltekit-en.pdf
sveltekit-en.pdf
 
Implementation of ssl injava
Implementation of ssl injavaImplementation of ssl injava
Implementation of ssl injava
 
Deploy secure, scalable, and highly available web apps with Azure Front Door ...
Deploy secure, scalable, and highly available web apps with Azure Front Door ...Deploy secure, scalable, and highly available web apps with Azure Front Door ...
Deploy secure, scalable, and highly available web apps with Azure Front Door ...
 
Ftp servlet
Ftp servletFtp servlet
Ftp servlet
 
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...
CrossRef How-to: A Technical Introduction to the Basics of CrossRef, Chuck Ko...
 
Sword Crig 2007 12 06
Sword Crig 2007 12 06Sword Crig 2007 12 06
Sword Crig 2007 12 06
 
Introduction To ASP.NET MVC
Introduction To ASP.NET MVCIntroduction To ASP.NET MVC
Introduction To ASP.NET MVC
 

Kürzlich hochgeladen

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbuapidays
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 

Kürzlich hochgeladen (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 

Module 3 - How SWORD Works

  • 1. The SWORD Course Module3 HowSWORD works
  • 2. Module objectives By the end of this module you will: Know how SWORD works Understand service documents Know how to retrieve a service document Know where to find service documents for common repository platforms Know how to perform a deposit Understand what a package is
  • 3. How does SWORD work? A quick re-cap: SWORD is a web service that allows deposits to take place into a repository.
  • 4. HTTP basics There are different methods / verbs that we use when interacting with the web: GET Requests a resource POST Create a new resource PUT Update an existing resource DELETE Delete a resource and a few others
  • 5. HTTP basics Whenever a web request is made, the server responds with a code: 200 OK 201 CREATED 400 BAD REQUEST 404 NOT FOUND 415 UNSUPPORTED MEDIA TYPE 501 NOT IMPLEMENTED
  • 6. SWORD foundations 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) Jangle
  • 7. 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
  • 8. Two step process Ask the repository’s SWORD interface to describe itself Use that information to prepare and make a deposit
  • 9. Introducing the service document 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
  • 10. Who can request a Service Document? A repository typically protects its service documents using HTTP BASIC Authentication User provides a username and password Service document is customised to the user’s rights Authentication is normally hidden by a SWORD client
  • 11. How to request a Service Document Request a service document from the repository GET a service document In your browser It may refuse to display it. Save, then open in a text editor Using a SWORD client Using a tools such as curl / wget curl http://username:password@example.com/sword/servicedocument
  • 12. An example service document <?xml version="1.0" encoding="utf-16"?><app:servicexmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:sword="http://purl.org/net/sword/" xmlns:dcterms="http://purl.org/dc/terms/">    <sword:version>1.3</sword:version>    <sword:verbose>true</sword:verbose>    <sword:noOp>true</sword:noOp>    <sword:maxUploadSize>-1</sword:maxUploadSize>    <app:workspace>        <atom:title type="text">DSpace at My University</atom:title>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/475">            <atom:title type="text">Digitooltifs</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/473">            <atom:title type="text">Mapped items</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>    </app:workspace></app:service>
  • 13. An example service document <?xml version="1.0" encoding="utf-16"?><app:servicexmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:sword="http://purl.org/net/sword/" xmlns:dcterms="http://purl.org/dc/terms/">    <sword:version>1.3</sword:version>    <sword:verbose>true</sword:verbose>    <sword:noOp>true</sword:noOp>    <sword:maxUploadSize>-1</sword:maxUploadSize>    <app:workspace>        <atom:title type="text">DSpace at My University</atom:title>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/475">            <atom:title type="text">Digitooltifs</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/473">            <atom:title type="text">Mapped items</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>    </app:workspace></app:service>
  • 14. An example service document <?xml version="1.0" encoding="utf-16"?><app:servicexmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:sword="http://purl.org/net/sword/" xmlns:dcterms="http://purl.org/dc/terms/">    <sword:version>1.3</sword:version>    <sword:verbose>true</sword:verbose>    <sword:noOp>true</sword:noOp>    <sword:maxUploadSize>-1</sword:maxUploadSize>    <app:workspace>        <atom:title type="text">DSpace at My University</atom:title>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/475">            <atom:title type="text">Digitooltifs</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/473">            <atom:title type="text">Mapped items</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>    </app:workspace></app:service>
  • 15. An example service document <?xml version="1.0" encoding="utf-16"?><app:servicexmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:sword="http://purl.org/net/sword/" xmlns:dcterms="http://purl.org/dc/terms/">    <sword:version>1.3</sword:version>    <sword:verbose>true</sword:verbose>    <sword:noOp>true</sword:noOp>    <sword:maxUploadSize>-1</sword:maxUploadSize>    <app:workspace>        <atom:title type="text">DSpace at My University</atom:title>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/475">            <atom:title type="text">Digitooltifs</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/473">            <atom:title type="text">Mapped items</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>    </app:workspace></app:service>
  • 16. An example service document <?xml version="1.0" encoding="utf-16"?><app:servicexmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:sword="http://purl.org/net/sword/" xmlns:dcterms="http://purl.org/dc/terms/">    <sword:version>1.3</sword:version>    <sword:verbose>true</sword:verbose>    <sword:noOp>true</sword:noOp>    <sword:maxUploadSize>-1</sword:maxUploadSize>    <app:workspace>        <atom:title type="text">DSpace at My University</atom:title>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/475">            <atom:title type="text">Digitooltifs</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/473">            <atom:title type="text">Mapped items</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>    </app:workspace></app:service>
  • 17. An example service document <?xml version="1.0" encoding="utf-16"?><app:servicexmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:sword="http://purl.org/net/sword/" xmlns:dcterms="http://purl.org/dc/terms/">    <sword:version>1.3</sword:version>    <sword:verbose>true</sword:verbose>    <sword:noOp>true</sword:noOp>    <sword:maxUploadSize>-1</sword:maxUploadSize>    <app:workspace>        <atom:title type="text">DSpace at My University</atom:title>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/475">            <atom:title type="text">Digitooltifs</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/473">            <atom:title type="text">Mapped items</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>    </app:workspace></app:service>
  • 18. An example service document <?xml version="1.0" encoding="utf-16"?><app:servicexmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:sword="http://purl.org/net/sword/" xmlns:dcterms="http://purl.org/dc/terms/">    <sword:version>1.3</sword:version>    <sword:verbose>true</sword:verbose>    <sword:noOp>true</sword:noOp>    <sword:maxUploadSize>-1</sword:maxUploadSize>    <app:workspace>        <atom:title type="text">DSpace at My University</atom:title>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/475">            <atom:title type="text">Digitooltifs</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>        <app:collectionhref="http://localhost:8080/sword/deposit/2292/473">            <atom:title type="text">Mapped items</atom:title>            <app:accept>application/zip</app:accept>            <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging>            <sword:collectionPolicy>An explanation of the collection policy of this collection.</sword:collectionPolicy>            <sword:mediation>true</sword:mediation>        </app:collection>    </app:workspace></app:service>
  • 19. Common Service Document locations DSpace: http://dspace.example.com/sword/servicedocument EPrints: http://eprints.example.com/sword-app/servicedocument Fedora http://fedora.example.com/sword/servicedocument IntraLibrary: http://intralibrary.example.com/IntraLibrary-Deposit/
  • 20. The second step We have retrieved the Service Document We know where we can deposit We know whatwe can deposit We know what will happen to our deposit
  • 21. Let’s talk about packaging What is a package? Like a birthday present! It has some content in the middle It comes with a card to describe it (metadata) Who it is for / who it is from / why it was sent It is wrapped up
  • 22. Let’s talk about packaging Examples of packaging formats IMSCP JAR files .docx files Typically zip files, with metadata manifests
  • 23. Let’s talk about packaging What packaging format does my repository use? No de-facto packaging format in the repository world Implications for interoperability METS/SWAP implemented by DSpace / EPrints / Fedora
  • 24. Let’s talk about packaging METS/SWAP Zip file mets.xml manifest Metadata described in SWAP Dublin Core elements
  • 25. The second step We have retrieved the Service Document We know where we can deposit We know whatwe can deposit We know what will happen to our deposit We have created our deposit package We perform the deposit…
  • 26. Performing a deposit To perform a deposit: POST a file to the deposit URL POST /geography-collection HTTP/1.1 Host: myrepository.ac.uk Content-Type: application/zip Authorization: Basic ZGFmZnk6c2VjZXJldA== Content-Length: nnn Content-MD5: [md5-digest] Content-Disposition: filename=MyItem.zip X-Packaging: http://purl.org/net/sword-types/mets/dspace User-Agent: My SWORD Client
  • 27. Performing a deposit HTTP/1.1 201 Created Date: Mon, 18 August 2008 14:27:11 GMT Content-Length: nnn Content-Type: application/atom+xml; charset="utf-8” Location: http://myrepository.ac.uk/geography-collection/atom/my_deposit.atom <?xml version="1.0"?> <entry xmlns="http://www.w3.org/2005/Atom" xmlns:sword=http://purl.org/net/sword/> <title>My Deposit</title> <id>info:something:1</id> <updated>2008-08-18T14:27:08Z</updated> <author><name>jbloggs</name></author> <summary type="text">A summary</summary> <sword:userAgent> SWORD client</sword:userAgent> <generator uri="http://myrepository.ac.uk/engine" version="1.0"/> <content type="application/zip"src="http://myrepository.ac.uk/geography-collection/deposit1.zip"/> <sword:packaging>http://purl.org/net/sword-types/mets/dspace</sword:packaging> <link rel="edit" href="http://www.myrepository.ac.uk/geography-collection/atom/my_deposit.atom" /> </entry>
  • 28. A failed deposit Receive an error document Is also an Atom document HTTP 1.1 400 Bad Request <?xml version="1.0" encoding="utf-8"?> <sword:errorxmlns="http://www.w3.org/2005/Atom" xmlns:sword="http://purl.org/net/sword/" xmlns:arxiv="http://arxiv.org/schemas/atom" href=http://example.org/errors/BadManifest> <author> <name>Example repository</name> </author> <title>ERROR</title> <updated>2008-02-19T09:34:27Z</updated> <summary>The manifest could be parsed, but was not valid - no technical metadata was provided.</summary> <sword:treatment>processing failed</sword:treatment> <link rel="alternate" href="https://example.org/help" type="text/html"/> </sword:error>
  • 29. SWORD vsAtomPub AcceptPackaging What packaging formats are accepted <sword:acceptPackagingq="1.0">http://purl.org/net/sword-types/METSDSpaceSIP</sword:acceptPackaging> Set during deposit X-Packaging: http://purl.org/net/sword-types/METSDSpaceSIP In deposit response <sword:packaging>http://purl.org/net/sword-types/METSDSpaceSIP</sword:packaging>
  • 30. SWORD vsAtomPub Mediated Deposit Deposit ‘on-behalf-of’ In service document: <sword:mediation>true</sword:mediation> In HTTP requests: X-On-Behalf-Of: other-user
  • 31. SWORD vsAtomPub Developer features NoOp deposit (don’t actually make the deposit): X-No-Op: true Verbose output (longer description) X-Verbose: true
  • 32. SWORD vsAtomPub Nested Service Documents Stops a service document getting too large when representing the structure of a large repository <sword:service> http://repo.example.org/science/servicedocument</sword:service>
  • 33. Questions? SWORD email list: sword-app-tech@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sword-app-tech
  • 34. Want to learn more? If SWORD is the answer, what is the question? Use of the Simple Web service Offering Repository Deposit protocol http://dx.doi.org/10.1108/00330330910998057 http://hdl.handle.net/2292/5315
  • 35. Credits This course has been produced by: Stuart Lewis The SWORD project http://swordapp.org/ Funded by JISC http://www.jisc.ac.uk/ Licence Creative commons
  • 36. Photo Credits Lecture hall: http://www.flickr.com/photos/iamthebestartist/2008790/