How the VIAF Magic Happens

Slides:



Advertisements
Similar presentations
Chapter 6 Server-side Programming: Java Servlets
Advertisements

SRW/U for DSpace Ralph LeVan Research Scientist. What is SRW/U A Pair of HTTP-based Text Query Protocols – SRW: Search and Retrieve Web Service – SRU:
1 Euro-VO Technology Forum, 23 September 2009, Annotations at the CDS Web 2.0: annotations at the CDS Brice GASSMANN Sébastien DERRIERE Thomas BOCH.
A Prototype Implementation of a Framework for Organising Virtual Exhibitions over the Web Ali Elbekai, Nick Rossiter School of Computing, Engineering and.
OCLC Research TAI CHI Webinar 5/27/2010 A Gentle Introduction to Linked Data Ralph LeVan Sr. Research Scientist OCLC Research.
Servlets and a little bit of Web Services Russell Beale.
Implementation of One Stop Search by XSLT By Dave Low University of Hong Kong 9-Dec-2003.
OCLC Research TAI CHI Webinar 7/1/2010 OCLC Open Source Linked Data Framework Ralph LeVan Sr. Research Scientist OCLC Research.
SE-2840 Dr. Mark L. Hornick1 Java Servlet-based web apps Servlet Architecture.
Web server and web browser It’s a take and give policy in between client and server through HTTP(Hyper Text Transport Protocol) Server takes a request.
Chapter 1: Introduction to Web
Server-side Scripting Powering the webs favourite services.
SDPL 2002Notes 7: Apache Cocoon1 7 XML Web Site Architecture Example: Apache Cocoon, a Web publishing architecture based on XML technology
CSC 2720 Building Web Applications Getting and Setting HTTP Headers (With PHP Examples)
CP476 Internet Computing Lecture 5 : HTTP, WWW and URL 1 Lecture 5. WWW, HTTP and URL Objective: to review the concepts of WWW to understand how HTTP works.
Functionality of a web server What does the web server do? Let a user request a resource Find the resource Return something to the user The resource can.
Chapter 5 Java Servlets. Objectives Explain the nature of a servlet and its operation Use the appropriate servlet methods in a web application Code the.
Copyright © Orbeon, Inc. All rights reserved. Erik Bruchez Applications of XML Pipelines XML Prague, June 16 th, 2007.
COMP 321 Week 7. Overview HTML and HTTP Basics Dynamic Web Content ServletsMVC Tomcat in Eclipse Demonstration Lab 7-1 Introduction.
Copyright, 1996 © Dale Carnegie & Associates, Inc. Presented by Hsiuling Hsieh Christine Liu.
Chapter 3 Servlet Basics. 1.Recall the Servlet Role 2.Basic Servlet Structure 3.A simple servlet that generates plain text 4.A servlet that generates.
ECA 228 Internet/Intranet Design I XSLT Example. ECA 228 Internet/Intranet Design I 2 CSS Limitations cannot modify content cannot insert additional text.
Kingdom of Saudi Arabia Ministry of Higher Education Al-Imam Muhammad Ibn Saud Islamic University College of Computer and Information Sciences Chapter.
Chapter 6 Server-side Programming: Java Servlets
SNOWTAM Trial: REST Interface. AIXM XML Developers' Seminar 2 Contents Digital-SNOWTAM Trial Introduction REST Introduction REST in the Digital-SNOWTAM.
Web Architecture Introduction
2007cs Servers on the Web. The World-Wide Web 2007 cs CSS JS HTML Server Browser JS CSS HTML Transfer of resources using HTTP.
Interoperability and Collection of Preservation Metadata for Digital Repository Content Matt Cordial, Tom Habing, Bill Ingram, Robert Manaster University.
Operating Systems Lesson 12. HTTP vs HTML HTML: hypertext markup language ◦ Definitions of tags that are added to Web documents to control their appearance.
IS-907 Java EE World Wide Web - Overview. World Wide Web - History Tim Berners-Lee, CERN, 1990 Enable researchers to share information: Remote Access.
JS (Java Servlets). Internet evolution [1] The internet Internet started of as a static content dispersal and delivery mechanism, where files residing.
CSI 3125, Preliminaries, page 1 SERVLET. CSI 3125, Preliminaries, page 2 SERVLET A servlet is a server-side software program, written in Java code, that.
8 Chapter Eight Server-side Scripts. 8 Chapter Objectives Create dynamic Web pages that retrieve and display database data using Active Server Pages Process.
DSpace System Architecture 11 July 2002 DSpace System Architecture.
ASP-2-1 SERVER AND CLIENT SIDE SCRITPING Colorado Technical University IT420 Tim Peterson.
©2001 Priority Technologies, Inc. All Rights Reserved Meteor Status Miami Face to Face Meeting January 16 – 18, 2002.
Chapter 4 Request and Response. Servlets are controlled by the container.
Apache Cocoon – XML Publishing Framework 데이터베이스 연구실 박사 1 학기 이 세영.
What’s Really Happening
National College of Science & Information Technology.
Data and tools on the Web have been exposed in a RESTful manner. Taverna provides a custom processor for accessing such services.
WEB TESTING
Tiny http client and server
Running a Forms Developer Application
Servlets.
Web Development Web Servers.
JSP (Java Server Page) JSP is server side technology which is used to create dynamic web pages just like Servlet technology. This is mainly used for implementing.
Section 13 - Integrating with Third Party Tools
1993 version of Mosaic browser.
Data Virtualization Tutorial… CORS and CIS
LOCO Extract – Transform - Load
Play Framework: Introduction
Web Software Model CS 4640 Programming Languages for Web Applications
Processes The most important processes used in Web-based systems and their internal organization.
Getting web pages First we need to get the webpage by issuing a HTTP request. The best option for this is the requests library that comes with Anaconda:
PHP / MySQL Introduction
IS333D: MULTI-TIER APPLICATION DEVELOPMENT
Prepared for Md. Zakir Hossain Lecturer, CSE, DUET Prepared by Miton Chandra Datta
Ashish Pandit IT Architect, Middleware & Integration Services
Testing REST IPA using POSTMAN
Thomas Hickey Chief Scientist OCLC Research Singapore, 2013
WEB API.
AutoSuggest This is for ELM Ralph LeVan Sr. Research Scientist
Chapter 26 Servlets.
DWR: Direct Web Remoting
Web Browser server client 3-Tier Architecture Apache web server PHP
A Match Made In (Ethereal) Heaven
Requests and Server Response Codes
MVC Controllers.
Architecture of the web
Presentation transcript:

How the VIAF Magic Happens So Much From So Little Ralph LeVan Sr. Research Scientist 7/14/2016 Code4Lib Midwest

VIAF Architecture Diagram Apache Tomcat Tomcat Filters SRWServlet SRWDatabase Database

Apache Tomcat Handles all requests not destined to the servlet Passes requests through appropriate filters Passes requests to appropriate servlets Runs out of memory

Tomcat Filters Look at incoming requests Modify the requests or perform some other action Modify the servlet response

Tomcat Filters Used ExpiresFilter ipUseThrottleFilter URLRewriteFilter Sets expiration dates for outgoing responses ipUseThrottleFilter Rejects (error 429) simultaneous requests above N from a site, depending on current load URLRewriteFilter Modifies an incoming request http://viaf.org/viaf/244788149 becomes http://viaf.org/viaf/search/VIAFURI?query=local.viafID+exact+244788149&maximumRecords=1&recordSchema=VIAF&service=APP

SRWServlet Assembles the SRU Request Handles Content Negotiation Knows how to transform a database response based on the negotiated mime type Handles Language Negotiation Looks to see if files (mostly stylesheets) have language specific versions Generates redirects http://viaf.org/viaf/sourceID/LC%7Cno2012049330 Redirects to http://viaf.org/viaf/244788149/

HTTP Methods Handles APP Requests (GET, PUT, POST and DELETE) Handles CORS Requests (OPTIONS) Handles HEAD Requests Just does a GET and then throws away the content (Ugh)

SRWDatabase Runs the request Transforms records to the desired schema Sends the search or browse to the database Transforms records to the desired schema Transformers can be XSLT or bespoke code E.g. JenaTransformer

Database Performs the search or browse (if supported) Returns records with an indication of schema (data semantics, e.g. native VIAF or MARC21) and record packing (formatting, e.g. XML or JSON)

Supported Databases Pears Lucene DSpace Elasticsearch OpenSearch ParallelSearching (Federated Searching) Filesystem

What kind of magic can we perform with these ingredients?

Real World Objects http://viaf.org/viaf/244788149 redirects with a 303 status code to http://viaf.org/viaf/244788149/ This tells the Linked Data world that the URLis the identifier for a real thing and not just a pointer to a page. It also tell Linked Data clients that they can try for a linked data version of the record (We support RDF and JSON-LD) URLRewriteFilter: <from>^/([0-9]+)$</from> <to type="seeother-redirect">$1/</to>

APP GET Requests http://viaf.org/viaf/244788149/ URLRewriteFilter: <from>^/([0-9][0-9]+)/$</from> <to>/search/VIAFURI?query=local.viafID+exact+$1&maximumRecords=1&recordSchema=VIAF& service=APP</to> APP logic extracts record from SRU response Content Negotiation renders the record appropriately

APP GET With Explicit Mime Type http://viaf.org/viaf/244788149/viaf.html URLRewriteFilter: <from>^/([0-9][0-9]+)/viaf.html$</from> <to>/search/VIAFURI?query=local.viafID+exact+$1&maximumRecords=1&recordSchema=VIAF&service=APP&httpAccept=text/html</to> APP logic extracts record from SRU response Content Negotiation renders the record appropriately We also support: viaf.xml, justlinks.json, rdf.xml, viaf.json, viaf.jsonld, rss.xml, marc21.html, marc21.xml, unimarc.html, unimarc.xml

sourceID Redirects http://viaf.org/viaf/sourceID/LC|no2012049330 redirects to http://viaf.org/viaf/244788149/ URLRewriteFilter: <from>^/sourceID/([^/]+)(/?|/.+)$</from> <to>/search?query=local.source+exact+%22$1%22&httpAccept=application/redirect%2bxml&service=APP</to> APP logic extracts record from SRU response SRWServlet looks for redirect response and generates appropriate response headers

SRU Responses Rendered as HTML SRU Response returned by SRWDatabase Stylesheets defined for each database for either client-side or server-side rendering explainStyleSheet=/viaf/xsl/explainResponse.xsl scanStyleSheet=/viaf/xsl/scanResponse.xsl searchStyleSheet=/viaf/xsl/results.xsl multipleRecordsStyleSheet=/viaf/xsl/results.xsl Content Negotiation for HTML results in the appropriate stylesheet being applied

APP PUT, POST and DELETE SRWServlet pass through to an add(), update() or delete() method of SRWDatabase SRWDatabase has a configuration parameter that allows it to extract the record key from the URL and passes that to the add(), update() or delete() method of the underlying database We use the POST and DELETE methods for immediate takedowns or data redactions We have another database (xA) that contains records that manually bring together VIAF IDs

All This Code is Open Source https://github.com/OCLC-Research

Ralph LeVan levan@oclc.org