SlideShare una empresa de Scribd logo
1 de 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/

Más contenido relacionado

La actualidad más candente

An Introduction to OAuth 2
An Introduction to OAuth 2An Introduction to OAuth 2
An Introduction to OAuth 2Aaron Parecki
 
Document Object Model
Document Object ModelDocument Object Model
Document Object Modelchomas kandar
 
HTTP/3, QUIC and streaming
HTTP/3, QUIC and streamingHTTP/3, QUIC and streaming
HTTP/3, QUIC and streamingDaniel Stenberg
 
Understanding JWT Exploitation
Understanding JWT ExploitationUnderstanding JWT Exploitation
Understanding JWT ExploitationAkshaeyBhosale
 
NATS for Rubyists - Tokyo Rubyist Meetup
NATS for Rubyists - Tokyo Rubyist MeetupNATS for Rubyists - Tokyo Rubyist Meetup
NATS for Rubyists - Tokyo Rubyist Meetupwallyqs
 
Basic Concept of Node.js & NPM
Basic Concept of Node.js & NPMBasic Concept of Node.js & NPM
Basic Concept of Node.js & NPMBhargav Anadkat
 
Solid pods and the future of the spatial web
Solid pods and the future of the spatial webSolid pods and the future of the spatial web
Solid pods and the future of the spatial webKurt Cagle
 
2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース
2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース
2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソースEnpel
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.jsRob O'Doherty
 
Document Object Model
Document Object ModelDocument Object Model
Document Object ModelMayur Mudgal
 
Indexing Text and HTML Files with Solr
Indexing Text and HTML Files with SolrIndexing Text and HTML Files with Solr
Indexing Text and HTML Files with SolrLucidworks (Archived)
 
Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]GDSC UofT Mississauga
 

La actualidad más candente (20)

An Introduction to OAuth 2
An Introduction to OAuth 2An Introduction to OAuth 2
An Introduction to OAuth 2
 
Modern JS with ES6
Modern JS with ES6Modern JS with ES6
Modern JS with ES6
 
Document Object Model
Document Object ModelDocument Object Model
Document Object Model
 
HTTP/3, QUIC and streaming
HTTP/3, QUIC and streamingHTTP/3, QUIC and streaming
HTTP/3, QUIC and streaming
 
Understanding JWT Exploitation
Understanding JWT ExploitationUnderstanding JWT Exploitation
Understanding JWT Exploitation
 
JSON WEB TOKEN
JSON WEB TOKENJSON WEB TOKEN
JSON WEB TOKEN
 
NATS for Rubyists - Tokyo Rubyist Meetup
NATS for Rubyists - Tokyo Rubyist MeetupNATS for Rubyists - Tokyo Rubyist Meetup
NATS for Rubyists - Tokyo Rubyist Meetup
 
Basic Concept of Node.js & NPM
Basic Concept of Node.js & NPMBasic Concept of Node.js & NPM
Basic Concept of Node.js & NPM
 
Solid pods and the future of the spatial web
Solid pods and the future of the spatial webSolid pods and the future of the spatial web
Solid pods and the future of the spatial web
 
OAuth 2.0
OAuth 2.0OAuth 2.0
OAuth 2.0
 
2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース
2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース
2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Best node js course
Best node js courseBest node js course
Best node js course
 
Http caching basics
Http caching basicsHttp caching basics
Http caching basics
 
Document Object Model
Document Object ModelDocument Object Model
Document Object Model
 
Fetch API Talk
Fetch API TalkFetch API Talk
Fetch API Talk
 
Javascript by geetanjali
Javascript by geetanjaliJavascript by geetanjali
Javascript by geetanjali
 
Indexing Text and HTML Files with Solr
Indexing Text and HTML Files with SolrIndexing Text and HTML Files with Solr
Indexing Text and HTML Files with Solr
 
Workshop on CIFS / SMB Protocol Performance Analysis
Workshop on CIFS / SMB Protocol Performance AnalysisWorkshop on CIFS / SMB Protocol Performance Analysis
Workshop on CIFS / SMB Protocol Performance Analysis
 
Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]
 

Destacado

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
 

Destacado (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
 

Similar a 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
 

Similar a 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
 

Último

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
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
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 

Último (20)

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
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
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 

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/