SlideShare a Scribd company logo
1 of 42
Download to read offline
Like a Can Opener for your Data Silo
simple access through AtomPub and Jangle
A short history of library APIs
Z39.50

• Amazingly, yes, this has to be considered an API


• Own network protocol


• @or @and @attr 1=1003 quot;Hemingway, Ernestquot; @attr 1=4 quot;The Sun Also Risesquot; @attr
  1=4 quot;A Farewell to Armsquot;


• Unknown/unused outside of library domain


• Client support generally needs to be compiled in


• Incredibly high barrier to entry to create services
SRU

• Improvement: XML over HTTP


• CQL vastly more user & developer friendly than RPN/PQF


• Unknown/unused outside of library domain


• Uncommon inside the library domain


• Read only (currently)
OAI-PMH

• Simple and effective


• Provides unambiguous, reusable identifiers for records


• Read only


• No search capability


• Retrieve one or everything. No way to request multiple specific identifiers


• Can only transport XML
DLF ILS-DI API

• “Best of Breed” approach


  • OAI-PMH


  • SRU


  • NCIP, possibly
Proprietary APIs

• RDBMS Access


• SirsiDynix Unicorn/Symphony API


• Ex Libris X-Server
The net effect

• scattershot


• niche


• awkward


• limiting
Atom Publishing Protocol
AtomPub

• IETF Standard (RFC 5023) for publishing content on the web


• Atom Syndication Format + REST = AtomPub


• Workspaces, Collections, Entries, Categories


• Unambiguous identifiers (via URIs) for every resource


• Only two kinds of documents ever served: Atom feeds and service
  documents
AtomPub continued

• Used by Google, Microsoft, IBM


• Available in Wordpress, MovableType, Drupal, etc.


  • Broad client support


  • Broad awareness outside library domain


• No baked in search, but can easily use OpenSearch (which adds a third
  document type with the description document)
Jangle

• Applies a common data model to library services using AtomPub


• Four discrete collection types (Entities)


   • Resources, Items, Actors, Collections


• Two components


   • Core & Connectors


• OpenSearch + CQL
Jangle

• Applies a common data model to library services using AtomPub


• Four discrete collection types (Entities)


   • Resources, Items, Actors, Collections


• Two components


   • Core & Connectors


• OpenSearch + CQL
Resources

• The primary objects being exposed by this service


  • Bibliographic records


  • Reserve records


  • Archival collections


  • Electronic Journals
Jangle

• Applies a common data model to library services using AtomPub


• Four discrete collection types (Entities)


   • Resources, Items, Actors, Collections


• Two components


   • Core & Connectors


• OpenSearch + CQL
Items

• A specific physical representation of a Resource


  • A copy of a book


  • Serials holdings


  • An electronic representation (PDF, PS, JPG, etc.)
Jangle

• Applies a common data model to library services using AtomPub


• Four discrete collection types (Entities)


   • Resources, Items, Actors, Collections


• Two components


   • Core & Connectors


• OpenSearch + CQL
Actors

• The ‘users’ of a system


   • Borrowers


   • Submitters


   • Account holders


   • Content creators
Jangle

• Applies a common data model to library services using AtomPub


• Four discrete collection types (Entities)


   • Resources, Items, Actors, Collections


• Two components


   • Core & Connectors


• OpenSearch + CQL
Collections

• Any combination of the other entities


• Can be homogenous or heterogenous among entity types
Jangle

• Applies a common data model to library services using AtomPub


• Four discrete collection types (Entities)


   • Resources, Items, Actors, Collections


• Two components


   • Connectors & Core


• OpenSearch + CQL
Connectors

• Provide the business logic for specific systems


• Provide responses as JSON objects


• Four response type:


   • Service, Feed, Search, Explain


• Inspired by, but not identical to, AtomPub
Jangle

• Applies a common data model to library services using AtomPub


• Four discrete collection types (Entities)


   • Resources, Items, Actors, Collections


• Two components


   • Connectors & Core


• OpenSearch + CQL
The Jangle Core

• The AtomPub public facing interface


• Proxies requests for one or many connectors


• Serializes connector responses into:


   • Atom service documents


   • Atom feeds


   • OpenSearch description documents
http://ex.example.org/jconnector/resources/?offset=300



                                                                       GET                         ex.example.org
http://example.org/ex/resources/?offset=300
                                                                                                    Connector

                          GET                                   JSON Feed
                                                                 Response
                                              Jangle
    Client
                                               Core
              Atom Feed                                                                           other.example.org


                                                                                                    Connector
ex.example.org
http://example.org/other/actors/1234?format=vcard




                             GET
                                                    Jangle
        Client                                               http://other.example.org/actors/1234?format=vcard
                                                     Core
                 Atom Feed                                      GET                       other.example.org




                                                             JSON Feed
                                                              Response
Services Connector Response
{ quot;requestquot;:quot;http://demo.jangle.org/openbiblio/servicesquot;,
  quot;typequot;:quot;servicesquot;,
  quot;versionquot;:quot;1.0quot;,
  quot;titlequot;:quot;openbiblioquot;,
  quot;entitiesquot;:
  { quot;Actorquot;:{
          quot;titlequot;:quot;Borrowersquot;,
          quot;pathquot;:quot;/actorsquot;,
          quot;searchablequot;:false
      },quot;Resourcequot;:{
          quot;titlequot;:quot;Bibliographic recordsquot;,
          quot;pathquot;:quot;/resourcesquot;,
          quot;searchablequot;:quot;/openbiblio/resources/search/description/quot;,
          quot;categoriesquot;:
          [quot;opacquot;]
      },quot;Itemquot;:{
          quot;titlequot;:quot;Holdings recordsquot;,
          quot;pathquot;:quot;/itemsquot;,
          quot;searchablequot;:false,
          quot;categoriesquot;:
          [quot;copyquot;,quot;holdquot;]
      },
      quot;Collectionquot;:
      {
          quot;titlequot;:quot;Categoriesquot;,
          quot;pathquot;:quot;/collectionsquot;,
          quot;searchablequot;:false
      }
  },
  quot;categoriesquot;:
  { quot;opacquot;:{
          quot;schemequot;:quot;http://jangle.org/vocab/terms#dlf-ilsdi-resourcequot;
      },quot;holdquot;:{
          quot;schemequot;:quot;http://jangle.org/vocab/terms#holdquot;
      },quot;copyquot;:{
          quot;schemequot;:quot;http://jangle.org/vocab/terms#copyquot;
      }
  }
}
Service Document

 <workspace>
   <atom:title>openbiblio</atom:title>
    <collection href=quot;http://demo.jangle.org/openbiblio/actorsquot;>
     <atom:title>Borrowers</atom:title>
    </collection>
    <collection href=quot;http://demo.jangle.org/openbiblio/resourcesquot;>
     <atom:title>Bibliographic records</atom:title>
      <atom:category term='opac' scheme='http://jangle.org/vocab/terms#dlf-ilsdi-
resource' />
    </collection>
    <collection href=quot;http://demo.jangle.org/openbiblio/itemsquot;>
     <atom:title>Holdings records</atom:title>
     <atom:category term='copy' scheme='http://jangle.org/vocab/terms#copy' />
     <atom:category term='hold' scheme='http://jangle.org/vocab/terms#hold' />
    </collection>
    <collection href=quot;http://demo.jangle.org/openbiblio/collectionsquot;>
     <atom:title>Categories</atom:title>
    </collection>
  </workspace>
Service Document
<service xmlns=quot;http://www.w3.org/2007/appquot; xmlns:atom=quot;http://www.w3.org/2005/Atomquot;>
 <workspace>
   <atom:title>openbiblio</atom:title>
    <collection href=quot;http://demo.jangle.org/openbiblio/actorsquot;>
      <atom:title>Borrowers</atom:title>
    </collection>
    <collection href=quot;http://demo.jangle.org/openbiblio/resourcesquot;>
      <atom:title>Bibliographic records</atom:title>
       <atom:category term='opac' scheme='http://jangle.org/vocab/terms#dlf-ilsdi-resource' />
    </collection>
    <collection href=quot;http://demo.jangle.org/openbiblio/itemsquot;>
      <atom:title>Holdings records</atom:title>
      <atom:category term='copy' scheme='http://jangle.org/vocab/terms#copy' />
      <atom:category term='hold' scheme='http://jangle.org/vocab/terms#hold' />
    </collection>
    <collection href=quot;http://demo.jangle.org/openbiblio/collectionsquot;>
      <atom:title>Categories</atom:title>
    </collection>
  </workspace><workspace>
   <atom:title>alto</atom:title>
    <collection href=quot;http://demo.jangle.org/alto/collectionsquot;>
      <atom:title>Categories</atom:title>
    </collection>
    <collection href=quot;http://demo.jangle.org/alto/itemsquot;>
      <atom:title>Holdings records</atom:title>
       <atom:category term='copy' scheme='http://jangle.org/vocab/terms#copy' />
       <atom:category term='hold' scheme='http://jangle.org/vocab/terms#hold' />
    </collection>
    <collection href=quot;http://demo.jangle.org/alto/resourcesquot;>
      <atom:title>Bibliographic records</atom:title>
       <atom:category term='opac' scheme='http://jangle.org/vocab/terms#dlf-ilsdi-resource' />
    </collection>
    <collection href=quot;http://demo.jangle.org/alto/actorsquot;>
      <atom:title>Borrowers</atom:title>
    </collection>
  </workspace>
</service>
Jangle

• Applies a common data model to library services using AtomPub


• Four discrete collection types (Entities)


   • Resources, Items, Actors, Collections


• Two components


   • Core & Connectors


• OpenSearch + CQL
Explain Document
<OpenSearchDescription xmlns=quot;http://a9.com/-/spec/opensearch/1.1/quot; xmlns:jangle=quot;http://jangle.org/opensearch/quot;>
 <ShortName>Bibliographic records</ShortName>
 <LongName>Search Bibliographic records in OpenBiblio</LongName>
 <Description>Bibliographic records search. Defaults to keyword anywhere.</Description>
 <SyndicationRight>open</SyndicationRight>
 <Tags>catalog library</Tags>
 <Query role=quot;examplequot; searchTerms=quot;dc.title=thomasquot;>
  <zr:explain xmlns:zr=quot;http://explain.z3950.org/dtd/2.1/quot;>
   <zr:indexInfo>
    <zr:set name=quot;dcquot; identifier=quot;info:srw/cql-context-set/1/dc-v1.1quot;/>
    <zr:index><zr:map><zr:name set=quot;dcquot;>title</zr:name></zr:map></zr:index>
    <zr:index><zr:map><zr:name set=quot;dcquot;>creator</zr:name></zr:map></zr:index>
    <zr:index><zr:map><zr:name set=quot;dcquot;>subject</zr:name></zr:map></zr:index>
    <zr:index><zr:map><zr:name set=quot;dcquot;>identifier</zr:name></zr:map></zr:index>
    <zr:set name=quot;recquot; identifier=quot;info:srw/cql-context-set/2/rec-1.1quot;/>
    <zr:index><zr:map><zr:name set=quot;recquot;>identifier</zr:name></zr:map></zr:index>
    <zr:index><zr:map><zr:name set=quot;recquot;>collectionName</zr:name></zr:map></zr:index>
    <zr:index><zr:map><zr:name set=quot;recquot;>lastModificationDate</zr:name></zr:map></zr:index>
    <zr:index><zr:map><zr:name set=quot;recquot;>creationDate</zr:name></zr:map></zr:index>
    <zr:set name=quot;cqlquot; identifier=quot;info:srw/cql-context-set/1/cql-v1.2quot;/>
    <zr:index><zr:map><zr:name set=quot;cqlquot;>allIndexes</zr:name></zr:map></zr:index>
    <zr:index><zr:map><zr:name set=quot;cqlquot;>anyIndexes</zr:name></zr:map></zr:index>
    <zr:index><zr:map><zr:name set=quot;cqlquot;>keywords</zr:name></zr:map></zr:index>
   </zr:indexInfo>
  </zr:explain>
 </Query>
</OpenSearchDescription>
Explain Document

<Query role=quot;examplequot; searchTerms=quot;dc.title=thomasquot;>
 <zr:explain xmlns:zr=quot;http://explain.z3950.org/dtd/2.1/quot;>
  <zr:indexInfo>
   <zr:set name=quot;dcquot; identifier=quot;info:srw/cql-context-set/1/dc-v1.1quot;/>
   <zr:index><zr:map><zr:name set=quot;dcquot;>title</zr:name></zr:map></zr:index>
   <zr:index><zr:map><zr:name set=quot;dcquot;>creator</zr:name></zr:map></zr:index>
   <zr:index><zr:map><zr:name set=quot;dcquot;>subject</zr:name></zr:map></zr:index>
   <zr:index><zr:map><zr:name set=quot;dcquot;>identifier</zr:name></zr:map></zr:index>
   <zr:set name=quot;recquot; identifier=quot;info:srw/cql-context-set/2/rec-1.1quot;/>
   <zr:index><zr:map><zr:name set=quot;recquot;>identifier</zr:name></zr:map></zr:index>
   <zr:index><zr:map><zr:name set=quot;recquot;>collectionName</zr:name></zr:map></zr:index>
  <zr:index><zr:map><zr:name set=quot;recquot;>lastModificationDate</zr:name></zr:map></zr:index>
   <zr:index><zr:map><zr:name set=quot;recquot;>creationDate</zr:name></zr:map></zr:index>
   <zr:set name=quot;cqlquot; identifier=quot;info:srw/cql-context-set/1/cql-v1.2quot;/>
   <zr:index><zr:map><zr:name set=quot;cqlquot;>allIndexes</zr:name></zr:map></zr:index>
   <zr:index><zr:map><zr:name set=quot;cqlquot;>anyIndexes</zr:name></zr:map></zr:index>
   <zr:index><zr:map><zr:name set=quot;cqlquot;>keywords</zr:name></zr:map></zr:index>
  </zr:indexInfo>
 </zr:explain>
</Query>
Atom with extensions

• Jangle adds a few extensions & conventions to establish:


  • relationships between entities


  • alternate metadata formats for resources


  • indexes for OpenSearch queries
Jangle Vocabulary

• URIs to unambiguously define relationships, formats, categories


  • http://jangle.org/vocab/formats#application/marc


  • http://jangle.org/vocab/Entity#Actor


  • http://jangle.org/vocab/terms#dlf-ilsdi-resource


• Should eventually move to the NSDL MetadataRegistry or similar service
Feed Document

• http://demo.jangle.org/openbiblio/resources/


  • http://connector.jangle.org/resources/


• http://demo.jangle.org/openbiblio/actors/1711/items


• http://demo.jangle.org/openbiblio/items/-/copy
Current State of Jangle

• Version 1.0 of the specification approved in November


  • Currently compiling requirements for 1.1


• Connector & Core frameworks available in


  • PHP


  • Ruby


  • Groovy
Jangle enabled applications

• Connectors


   • OpenBiblio ILS - Reference ILS implementation


   • Talis Alto


• Helios/fac-back-opac/Kobold Chieftain


• Scriblio


• Blacklight
Adapters

• Convert Jangle’s output to other formats


• DLF ILS-DI


  • OAI-PMH


  • Availability Lookup


• Google SiteMaps
The Future

• Need more connectors to begin establishing community profiles


• Begin experimenting with POST, PUT, DELETE


  • SWORD as template?


• Examples of non-OPAC based client support


  • Courseware


  • Reserves systems
The Community

• http://jangle.org/


   • spec, announcements, HOWTOs


• http://groups.google.com/group/jangle-discuss


   • Primary discussion forum


• http://code.google.com/p/jangle


   • Source, Issue tracking
Questions?
Thanks!
Ross Singer - Talis
rossfsinger@gmail.com

More Related Content

What's hot

RestFull Webservices with JAX-RS
RestFull Webservices with JAX-RSRestFull Webservices with JAX-RS
RestFull Webservices with JAX-RSNeil Ghosh
 
An Introduction to the Jena API
An Introduction to the Jena APIAn Introduction to the Jena API
An Introduction to the Jena APICraig Trim
 
Automatically generating-json-from-java-objects-java-objects268
Automatically generating-json-from-java-objects-java-objects268Automatically generating-json-from-java-objects-java-objects268
Automatically generating-json-from-java-objects-java-objects268Ramamohan Chokkam
 
REST and AJAX Reconciled
REST and AJAX ReconciledREST and AJAX Reconciled
REST and AJAX ReconciledLars Trieloff
 
Jsonsaga 100605143125-phpapp02
Jsonsaga 100605143125-phpapp02Jsonsaga 100605143125-phpapp02
Jsonsaga 100605143125-phpapp02Ramamohan Chokkam
 
code4lib 2011 preconference: What's New in Solr (since 1.4.1)
code4lib 2011 preconference: What's New in Solr (since 1.4.1)code4lib 2011 preconference: What's New in Solr (since 1.4.1)
code4lib 2011 preconference: What's New in Solr (since 1.4.1)Erik Hatcher
 
Using Apache Solr
Using Apache SolrUsing Apache Solr
Using Apache Solrpittaya
 
Rapid Prototyping with Solr
Rapid Prototyping with SolrRapid Prototyping with Solr
Rapid Prototyping with SolrErik Hatcher
 
Tutorial on developing a Solr search component plugin
Tutorial on developing a Solr search component pluginTutorial on developing a Solr search component plugin
Tutorial on developing a Solr search component pluginsearchbox-com
 
Battle of the Giants round 2
Battle of the Giants round 2Battle of the Giants round 2
Battle of the Giants round 2Rafał Kuć
 
Solr Black Belt Pre-conference
Solr Black Belt Pre-conferenceSolr Black Belt Pre-conference
Solr Black Belt Pre-conferenceErik Hatcher
 
Getty Vocabulary Program LOD: Ontologies and Semantic Representation
Getty Vocabulary Program LOD: Ontologies and Semantic RepresentationGetty Vocabulary Program LOD: Ontologies and Semantic Representation
Getty Vocabulary Program LOD: Ontologies and Semantic RepresentationVladimir Alexiev, PhD, PMP
 
JSON in der Oracle Datenbank
JSON in der Oracle DatenbankJSON in der Oracle Datenbank
JSON in der Oracle DatenbankUlrike Schwinn
 
쉽게 이해하는 LOD
쉽게 이해하는 LOD쉽게 이해하는 LOD
쉽게 이해하는 LODMyungjin Lee
 
API Design Antipatterns - APICon SF
API Design Antipatterns - APICon SFAPI Design Antipatterns - APICon SF
API Design Antipatterns - APICon SFManish Pandit
 
From zero to hero - Easy log centralization with Logstash and Elasticsearch
From zero to hero - Easy log centralization with Logstash and ElasticsearchFrom zero to hero - Easy log centralization with Logstash and Elasticsearch
From zero to hero - Easy log centralization with Logstash and ElasticsearchRafał Kuć
 

What's hot (20)

RestFull Webservices with JAX-RS
RestFull Webservices with JAX-RSRestFull Webservices with JAX-RS
RestFull Webservices with JAX-RS
 
An Introduction to the Jena API
An Introduction to the Jena APIAn Introduction to the Jena API
An Introduction to the Jena API
 
Automatically generating-json-from-java-objects-java-objects268
Automatically generating-json-from-java-objects-java-objects268Automatically generating-json-from-java-objects-java-objects268
Automatically generating-json-from-java-objects-java-objects268
 
Velocity 2pp
Velocity 2ppVelocity 2pp
Velocity 2pp
 
Jena framework
Jena frameworkJena framework
Jena framework
 
REST and AJAX Reconciled
REST and AJAX ReconciledREST and AJAX Reconciled
REST and AJAX Reconciled
 
Jsonsaga 100605143125-phpapp02
Jsonsaga 100605143125-phpapp02Jsonsaga 100605143125-phpapp02
Jsonsaga 100605143125-phpapp02
 
code4lib 2011 preconference: What's New in Solr (since 1.4.1)
code4lib 2011 preconference: What's New in Solr (since 1.4.1)code4lib 2011 preconference: What's New in Solr (since 1.4.1)
code4lib 2011 preconference: What's New in Solr (since 1.4.1)
 
Json the-x-in-ajax1588
Json the-x-in-ajax1588Json the-x-in-ajax1588
Json the-x-in-ajax1588
 
Using Apache Solr
Using Apache SolrUsing Apache Solr
Using Apache Solr
 
Rapid Prototyping with Solr
Rapid Prototyping with SolrRapid Prototyping with Solr
Rapid Prototyping with Solr
 
Tutorial on developing a Solr search component plugin
Tutorial on developing a Solr search component pluginTutorial on developing a Solr search component plugin
Tutorial on developing a Solr search component plugin
 
Battle of the Giants round 2
Battle of the Giants round 2Battle of the Giants round 2
Battle of the Giants round 2
 
Solr Black Belt Pre-conference
Solr Black Belt Pre-conferenceSolr Black Belt Pre-conference
Solr Black Belt Pre-conference
 
Getty Vocabulary Program LOD: Ontologies and Semantic Representation
Getty Vocabulary Program LOD: Ontologies and Semantic RepresentationGetty Vocabulary Program LOD: Ontologies and Semantic Representation
Getty Vocabulary Program LOD: Ontologies and Semantic Representation
 
JSON in der Oracle Datenbank
JSON in der Oracle DatenbankJSON in der Oracle Datenbank
JSON in der Oracle Datenbank
 
쉽게 이해하는 LOD
쉽게 이해하는 LOD쉽게 이해하는 LOD
쉽게 이해하는 LOD
 
API Design Antipatterns - APICon SF
API Design Antipatterns - APICon SFAPI Design Antipatterns - APICon SF
API Design Antipatterns - APICon SF
 
From zero to hero - Easy log centralization with Logstash and Elasticsearch
From zero to hero - Easy log centralization with Logstash and ElasticsearchFrom zero to hero - Easy log centralization with Logstash and Elasticsearch
From zero to hero - Easy log centralization with Logstash and Elasticsearch
 
55 New Features in Java 7
55 New Features in Java 755 New Features in Java 7
55 New Features in Java 7
 

Viewers also liked

Unlock the value of your data by smashing data silos
Unlock the value of your data by smashing data silos Unlock the value of your data by smashing data silos
Unlock the value of your data by smashing data silos Entrinsik
 
Technology Primer: Hey IT—Your Big Data Infrastructure Can’t Sit in a Silo An...
Technology Primer: Hey IT—Your Big Data Infrastructure Can’t Sit in a Silo An...Technology Primer: Hey IT—Your Big Data Infrastructure Can’t Sit in a Silo An...
Technology Primer: Hey IT—Your Big Data Infrastructure Can’t Sit in a Silo An...CA Technologies
 
Transcending Silos: Shared Canvas Data Model for Digital Facsimiles
Transcending Silos: Shared Canvas Data Model for Digital FacsimilesTranscending Silos: Shared Canvas Data Model for Digital Facsimiles
Transcending Silos: Shared Canvas Data Model for Digital FacsimilesRobert Sanderson
 
DV 2016: Defeating the Multi-Channel Silo Challenge
DV 2016: Defeating the Multi-Channel Silo ChallengeDV 2016: Defeating the Multi-Channel Silo Challenge
DV 2016: Defeating the Multi-Channel Silo ChallengeTealium
 
Chief Data Officer: Overcoming Data Silos for True Business Value
Chief Data Officer: Overcoming Data Silos for True Business ValueChief Data Officer: Overcoming Data Silos for True Business Value
Chief Data Officer: Overcoming Data Silos for True Business ValueCraig Milroy
 
Organising the Data Lake - Information Management in a Big Data World
Organising the Data Lake - Information Management in a Big Data WorldOrganising the Data Lake - Information Management in a Big Data World
Organising the Data Lake - Information Management in a Big Data WorldDataWorks Summit/Hadoop Summit
 
3 Steps for Breaking Down Data & Analytic Silos
3 Steps for Breaking Down Data & Analytic Silos 3 Steps for Breaking Down Data & Analytic Silos
3 Steps for Breaking Down Data & Analytic Silos Dun & Bradstreet
 

Viewers also liked (7)

Unlock the value of your data by smashing data silos
Unlock the value of your data by smashing data silos Unlock the value of your data by smashing data silos
Unlock the value of your data by smashing data silos
 
Technology Primer: Hey IT—Your Big Data Infrastructure Can’t Sit in a Silo An...
Technology Primer: Hey IT—Your Big Data Infrastructure Can’t Sit in a Silo An...Technology Primer: Hey IT—Your Big Data Infrastructure Can’t Sit in a Silo An...
Technology Primer: Hey IT—Your Big Data Infrastructure Can’t Sit in a Silo An...
 
Transcending Silos: Shared Canvas Data Model for Digital Facsimiles
Transcending Silos: Shared Canvas Data Model for Digital FacsimilesTranscending Silos: Shared Canvas Data Model for Digital Facsimiles
Transcending Silos: Shared Canvas Data Model for Digital Facsimiles
 
DV 2016: Defeating the Multi-Channel Silo Challenge
DV 2016: Defeating the Multi-Channel Silo ChallengeDV 2016: Defeating the Multi-Channel Silo Challenge
DV 2016: Defeating the Multi-Channel Silo Challenge
 
Chief Data Officer: Overcoming Data Silos for True Business Value
Chief Data Officer: Overcoming Data Silos for True Business ValueChief Data Officer: Overcoming Data Silos for True Business Value
Chief Data Officer: Overcoming Data Silos for True Business Value
 
Organising the Data Lake - Information Management in a Big Data World
Organising the Data Lake - Information Management in a Big Data WorldOrganising the Data Lake - Information Management in a Big Data World
Organising the Data Lake - Information Management in a Big Data World
 
3 Steps for Breaking Down Data & Analytic Silos
3 Steps for Breaking Down Data & Analytic Silos 3 Steps for Breaking Down Data & Analytic Silos
3 Steps for Breaking Down Data & Analytic Silos
 

Similar to Like a can opener for your data silo: simple access through AtomPub and Jangle

Twinkle: A SPARQL Query Tool
Twinkle: A SPARQL Query ToolTwinkle: A SPARQL Query Tool
Twinkle: A SPARQL Query ToolLeigh Dodds
 
Slug: A Semantic Web Crawler
Slug: A Semantic Web CrawlerSlug: A Semantic Web Crawler
Slug: A Semantic Web CrawlerLeigh Dodds
 
JAX-RS 2.0: RESTful Web Services
JAX-RS 2.0: RESTful Web ServicesJAX-RS 2.0: RESTful Web Services
JAX-RS 2.0: RESTful Web ServicesArun Gupta
 
UM03 - Learning Know..
UM03 - Learning Know..UM03 - Learning Know..
UM03 - Learning Know..butest
 
Chapter 3 semantic web
Chapter 3 semantic webChapter 3 semantic web
Chapter 3 semantic webR A Akerkar
 
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)Pat Patterson
 
REST teori og praksis; REST in theory and practice
REST teori og praksis; REST in theory and practiceREST teori og praksis; REST in theory and practice
REST teori og praksis; REST in theory and practicehamnis
 
SPARQLing Services
SPARQLing ServicesSPARQLing Services
SPARQLing ServicesLeigh Dodds
 
Exploiter le Web Semantic, le comprendre et y contribuer
Exploiter le Web Semantic, le comprendre et y contribuerExploiter le Web Semantic, le comprendre et y contribuer
Exploiter le Web Semantic, le comprendre et y contribuerMathieu d'Aquin
 
Python RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsPython RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsSolution4Future
 
Ring: Web Apps in Idiomatic Clojure
Ring: Web Apps in Idiomatic ClojureRing: Web Apps in Idiomatic Clojure
Ring: Web Apps in Idiomatic ClojureMark McGranaghan
 
Getting Started With The Talis Platform
Getting Started With The Talis PlatformGetting Started With The Talis Platform
Getting Started With The Talis PlatformLeigh Dodds
 
CQ5 QueryBuilder - .adaptTo(Berlin) 2011
CQ5 QueryBuilder - .adaptTo(Berlin) 2011CQ5 QueryBuilder - .adaptTo(Berlin) 2011
CQ5 QueryBuilder - .adaptTo(Berlin) 2011Alexander Klimetschek
 
Practical AtomPub Servers @ YAPC::Asia 2008
Practical AtomPub Servers @ YAPC::Asia 2008Practical AtomPub Servers @ YAPC::Asia 2008
Practical AtomPub Servers @ YAPC::Asia 2008Takeru INOUE
 

Similar to Like a can opener for your data silo: simple access through AtomPub and Jangle (20)

Twinkle: A SPARQL Query Tool
Twinkle: A SPARQL Query ToolTwinkle: A SPARQL Query Tool
Twinkle: A SPARQL Query Tool
 
Slug: A Semantic Web Crawler
Slug: A Semantic Web CrawlerSlug: A Semantic Web Crawler
Slug: A Semantic Web Crawler
 
JSON Viewer XPATH Workbook
JSON Viewer XPATH WorkbookJSON Viewer XPATH Workbook
JSON Viewer XPATH Workbook
 
JAX-RS 2.0: RESTful Web Services
JAX-RS 2.0: RESTful Web ServicesJAX-RS 2.0: RESTful Web Services
JAX-RS 2.0: RESTful Web Services
 
Hackingtomcat
HackingtomcatHackingtomcat
Hackingtomcat
 
Hacking Tomcat
Hacking TomcatHacking Tomcat
Hacking Tomcat
 
UM03 - Learning Know..
UM03 - Learning Know..UM03 - Learning Know..
UM03 - Learning Know..
 
Chapter 3 semantic web
Chapter 3 semantic webChapter 3 semantic web
Chapter 3 semantic web
 
REST dojo Comet
REST dojo CometREST dojo Comet
REST dojo Comet
 
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
 
REST teori og praksis; REST in theory and practice
REST teori og praksis; REST in theory and practiceREST teori og praksis; REST in theory and practice
REST teori og praksis; REST in theory and practice
 
SPARQLing Services
SPARQLing ServicesSPARQLing Services
SPARQLing Services
 
Exploiter le Web Semantic, le comprendre et y contribuer
Exploiter le Web Semantic, le comprendre et y contribuerExploiter le Web Semantic, le comprendre et y contribuer
Exploiter le Web Semantic, le comprendre et y contribuer
 
Python RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsPython RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutions
 
Prototype
PrototypePrototype
Prototype
 
Ring: Web Apps in Idiomatic Clojure
Ring: Web Apps in Idiomatic ClojureRing: Web Apps in Idiomatic Clojure
Ring: Web Apps in Idiomatic Clojure
 
T5 Oli Aro
T5 Oli AroT5 Oli Aro
T5 Oli Aro
 
Getting Started With The Talis Platform
Getting Started With The Talis PlatformGetting Started With The Talis Platform
Getting Started With The Talis Platform
 
CQ5 QueryBuilder - .adaptTo(Berlin) 2011
CQ5 QueryBuilder - .adaptTo(Berlin) 2011CQ5 QueryBuilder - .adaptTo(Berlin) 2011
CQ5 QueryBuilder - .adaptTo(Berlin) 2011
 
Practical AtomPub Servers @ YAPC::Asia 2008
Practical AtomPub Servers @ YAPC::Asia 2008Practical AtomPub Servers @ YAPC::Asia 2008
Practical AtomPub Servers @ YAPC::Asia 2008
 

More from eby

LibX 2.0
LibX 2.0LibX 2.0
LibX 2.0eby
 
djatoka for djummies
djatoka for djummiesdjatoka for djummies
djatoka for djummieseby
 
LuSql: (Quickly and easily) Getting your data from your DBMS into Lucene
LuSql: (Quickly and easily) Getting your data from your DBMS into LuceneLuSql: (Quickly and easily) Getting your data from your DBMS into Lucene
LuSql: (Quickly and easily) Getting your data from your DBMS into Luceneeby
 
Why libraries should embrace Linked Data
Why libraries should embrace Linked DataWhy libraries should embrace Linked Data
Why libraries should embrace Linked Dataeby
 
RESTafarian-ism at the NLA
RESTafarian-ism at the NLARESTafarian-ism at the NLA
RESTafarian-ism at the NLAeby
 
CouchDB is sacrilege... mmm, delicious sacrilege
CouchDB is sacrilege... mmm, delicious sacrilegeCouchDB is sacrilege... mmm, delicious sacrilege
CouchDB is sacrilege... mmm, delicious sacrilegeeby
 
Using a CSS Framework
Using a CSS FrameworkUsing a CSS Framework
Using a CSS Frameworkeby
 
XForms for Metadata creation
XForms for Metadata creationXForms for Metadata creation
XForms for Metadata creationeby
 
Karen Coyle Keynote - R&D: Can Resource Description become Rigorous Data?
Karen Coyle Keynote - R&D: Can Resource Description become Rigorous Data?Karen Coyle Keynote - R&D: Can Resource Description become Rigorous Data?
Karen Coyle Keynote - R&D: Can Resource Description become Rigorous Data?eby
 
DLF ILS Discovery Interface Task Force API recommendation
DLF ILS Discovery Interface Task Force API recommendationDLF ILS Discovery Interface Task Force API recommendation
DLF ILS Discovery Interface Task Force API recommendationeby
 
ÖpënÜRL
ÖpënÜRLÖpënÜRL
ÖpënÜRLeby
 
Building Mountains Out of Molehills
Building Mountains Out of MolehillsBuilding Mountains Out of Molehills
Building Mountains Out of Molehillseby
 
Zotero and You, or Bibliography on the Semantic Web
Zotero and You, or Bibliography on the Semantic WebZotero and You, or Bibliography on the Semantic Web
Zotero and You, or Bibliography on the Semantic Webeby
 
Creating an Academic Image Collection with Flickr
Creating an Academic Image Collection with FlickrCreating an Academic Image Collection with Flickr
Creating an Academic Image Collection with Flickreby
 
From Idea to Open Source
From Idea to Open SourceFrom Idea to Open Source
From Idea to Open Sourceeby
 
Obstacles to Agility
Obstacles to AgilityObstacles to Agility
Obstacles to Agilityeby
 
The Intellectual Property Disclosure Process: Releasing Open Source Software ...
The Intellectual Property Disclosure Process: Releasing Open Source Software ...The Intellectual Property Disclosure Process: Releasing Open Source Software ...
The Intellectual Property Disclosure Process: Releasing Open Source Software ...eby
 
Code4Lib 2007: Erik Hatcher Keynote
Code4Lib 2007: Erik Hatcher KeynoteCode4Lib 2007: Erik Hatcher Keynote
Code4Lib 2007: Erik Hatcher Keynoteeby
 
Library Data APIs Abound!
Library Data APIs Abound!Library Data APIs Abound!
Library Data APIs Abound!eby
 
Smart Subjects - Application Independent Subject Recommendations
Smart Subjects - Application Independent Subject RecommendationsSmart Subjects - Application Independent Subject Recommendations
Smart Subjects - Application Independent Subject Recommendationseby
 

More from eby (20)

LibX 2.0
LibX 2.0LibX 2.0
LibX 2.0
 
djatoka for djummies
djatoka for djummiesdjatoka for djummies
djatoka for djummies
 
LuSql: (Quickly and easily) Getting your data from your DBMS into Lucene
LuSql: (Quickly and easily) Getting your data from your DBMS into LuceneLuSql: (Quickly and easily) Getting your data from your DBMS into Lucene
LuSql: (Quickly and easily) Getting your data from your DBMS into Lucene
 
Why libraries should embrace Linked Data
Why libraries should embrace Linked DataWhy libraries should embrace Linked Data
Why libraries should embrace Linked Data
 
RESTafarian-ism at the NLA
RESTafarian-ism at the NLARESTafarian-ism at the NLA
RESTafarian-ism at the NLA
 
CouchDB is sacrilege... mmm, delicious sacrilege
CouchDB is sacrilege... mmm, delicious sacrilegeCouchDB is sacrilege... mmm, delicious sacrilege
CouchDB is sacrilege... mmm, delicious sacrilege
 
Using a CSS Framework
Using a CSS FrameworkUsing a CSS Framework
Using a CSS Framework
 
XForms for Metadata creation
XForms for Metadata creationXForms for Metadata creation
XForms for Metadata creation
 
Karen Coyle Keynote - R&D: Can Resource Description become Rigorous Data?
Karen Coyle Keynote - R&D: Can Resource Description become Rigorous Data?Karen Coyle Keynote - R&D: Can Resource Description become Rigorous Data?
Karen Coyle Keynote - R&D: Can Resource Description become Rigorous Data?
 
DLF ILS Discovery Interface Task Force API recommendation
DLF ILS Discovery Interface Task Force API recommendationDLF ILS Discovery Interface Task Force API recommendation
DLF ILS Discovery Interface Task Force API recommendation
 
ÖpënÜRL
ÖpënÜRLÖpënÜRL
ÖpënÜRL
 
Building Mountains Out of Molehills
Building Mountains Out of MolehillsBuilding Mountains Out of Molehills
Building Mountains Out of Molehills
 
Zotero and You, or Bibliography on the Semantic Web
Zotero and You, or Bibliography on the Semantic WebZotero and You, or Bibliography on the Semantic Web
Zotero and You, or Bibliography on the Semantic Web
 
Creating an Academic Image Collection with Flickr
Creating an Academic Image Collection with FlickrCreating an Academic Image Collection with Flickr
Creating an Academic Image Collection with Flickr
 
From Idea to Open Source
From Idea to Open SourceFrom Idea to Open Source
From Idea to Open Source
 
Obstacles to Agility
Obstacles to AgilityObstacles to Agility
Obstacles to Agility
 
The Intellectual Property Disclosure Process: Releasing Open Source Software ...
The Intellectual Property Disclosure Process: Releasing Open Source Software ...The Intellectual Property Disclosure Process: Releasing Open Source Software ...
The Intellectual Property Disclosure Process: Releasing Open Source Software ...
 
Code4Lib 2007: Erik Hatcher Keynote
Code4Lib 2007: Erik Hatcher KeynoteCode4Lib 2007: Erik Hatcher Keynote
Code4Lib 2007: Erik Hatcher Keynote
 
Library Data APIs Abound!
Library Data APIs Abound!Library Data APIs Abound!
Library Data APIs Abound!
 
Smart Subjects - Application Independent Subject Recommendations
Smart Subjects - Application Independent Subject RecommendationsSmart Subjects - Application Independent Subject Recommendations
Smart Subjects - Application Independent Subject Recommendations
 

Recently uploaded

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 

Recently uploaded (20)

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 

Like a can opener for your data silo: simple access through AtomPub and Jangle

  • 1. Like a Can Opener for your Data Silo simple access through AtomPub and Jangle
  • 2. A short history of library APIs
  • 3. Z39.50 • Amazingly, yes, this has to be considered an API • Own network protocol • @or @and @attr 1=1003 quot;Hemingway, Ernestquot; @attr 1=4 quot;The Sun Also Risesquot; @attr 1=4 quot;A Farewell to Armsquot; • Unknown/unused outside of library domain • Client support generally needs to be compiled in • Incredibly high barrier to entry to create services
  • 4. SRU • Improvement: XML over HTTP • CQL vastly more user & developer friendly than RPN/PQF • Unknown/unused outside of library domain • Uncommon inside the library domain • Read only (currently)
  • 5. OAI-PMH • Simple and effective • Provides unambiguous, reusable identifiers for records • Read only • No search capability • Retrieve one or everything. No way to request multiple specific identifiers • Can only transport XML
  • 6. DLF ILS-DI API • “Best of Breed” approach • OAI-PMH • SRU • NCIP, possibly
  • 7. Proprietary APIs • RDBMS Access • SirsiDynix Unicorn/Symphony API • Ex Libris X-Server
  • 8. The net effect • scattershot • niche • awkward • limiting
  • 10. AtomPub • IETF Standard (RFC 5023) for publishing content on the web • Atom Syndication Format + REST = AtomPub • Workspaces, Collections, Entries, Categories • Unambiguous identifiers (via URIs) for every resource • Only two kinds of documents ever served: Atom feeds and service documents
  • 11. AtomPub continued • Used by Google, Microsoft, IBM • Available in Wordpress, MovableType, Drupal, etc. • Broad client support • Broad awareness outside library domain • No baked in search, but can easily use OpenSearch (which adds a third document type with the description document)
  • 12. Jangle • Applies a common data model to library services using AtomPub • Four discrete collection types (Entities) • Resources, Items, Actors, Collections • Two components • Core & Connectors • OpenSearch + CQL
  • 13. Jangle • Applies a common data model to library services using AtomPub • Four discrete collection types (Entities) • Resources, Items, Actors, Collections • Two components • Core & Connectors • OpenSearch + CQL
  • 14. Resources • The primary objects being exposed by this service • Bibliographic records • Reserve records • Archival collections • Electronic Journals
  • 15. Jangle • Applies a common data model to library services using AtomPub • Four discrete collection types (Entities) • Resources, Items, Actors, Collections • Two components • Core & Connectors • OpenSearch + CQL
  • 16. Items • A specific physical representation of a Resource • A copy of a book • Serials holdings • An electronic representation (PDF, PS, JPG, etc.)
  • 17. Jangle • Applies a common data model to library services using AtomPub • Four discrete collection types (Entities) • Resources, Items, Actors, Collections • Two components • Core & Connectors • OpenSearch + CQL
  • 18. Actors • The ‘users’ of a system • Borrowers • Submitters • Account holders • Content creators
  • 19. Jangle • Applies a common data model to library services using AtomPub • Four discrete collection types (Entities) • Resources, Items, Actors, Collections • Two components • Core & Connectors • OpenSearch + CQL
  • 20. Collections • Any combination of the other entities • Can be homogenous or heterogenous among entity types
  • 21. Jangle • Applies a common data model to library services using AtomPub • Four discrete collection types (Entities) • Resources, Items, Actors, Collections • Two components • Connectors & Core • OpenSearch + CQL
  • 22. Connectors • Provide the business logic for specific systems • Provide responses as JSON objects • Four response type: • Service, Feed, Search, Explain • Inspired by, but not identical to, AtomPub
  • 23. Jangle • Applies a common data model to library services using AtomPub • Four discrete collection types (Entities) • Resources, Items, Actors, Collections • Two components • Connectors & Core • OpenSearch + CQL
  • 24. The Jangle Core • The AtomPub public facing interface • Proxies requests for one or many connectors • Serializes connector responses into: • Atom service documents • Atom feeds • OpenSearch description documents
  • 25. http://ex.example.org/jconnector/resources/?offset=300 GET ex.example.org http://example.org/ex/resources/?offset=300 Connector GET JSON Feed Response Jangle Client Core Atom Feed other.example.org Connector
  • 26. ex.example.org http://example.org/other/actors/1234?format=vcard GET Jangle Client http://other.example.org/actors/1234?format=vcard Core Atom Feed GET other.example.org JSON Feed Response
  • 27. Services Connector Response { quot;requestquot;:quot;http://demo.jangle.org/openbiblio/servicesquot;, quot;typequot;:quot;servicesquot;, quot;versionquot;:quot;1.0quot;, quot;titlequot;:quot;openbiblioquot;, quot;entitiesquot;: { quot;Actorquot;:{ quot;titlequot;:quot;Borrowersquot;, quot;pathquot;:quot;/actorsquot;, quot;searchablequot;:false },quot;Resourcequot;:{ quot;titlequot;:quot;Bibliographic recordsquot;, quot;pathquot;:quot;/resourcesquot;, quot;searchablequot;:quot;/openbiblio/resources/search/description/quot;, quot;categoriesquot;: [quot;opacquot;] },quot;Itemquot;:{ quot;titlequot;:quot;Holdings recordsquot;, quot;pathquot;:quot;/itemsquot;, quot;searchablequot;:false, quot;categoriesquot;: [quot;copyquot;,quot;holdquot;] }, quot;Collectionquot;: { quot;titlequot;:quot;Categoriesquot;, quot;pathquot;:quot;/collectionsquot;, quot;searchablequot;:false } }, quot;categoriesquot;: { quot;opacquot;:{ quot;schemequot;:quot;http://jangle.org/vocab/terms#dlf-ilsdi-resourcequot; },quot;holdquot;:{ quot;schemequot;:quot;http://jangle.org/vocab/terms#holdquot; },quot;copyquot;:{ quot;schemequot;:quot;http://jangle.org/vocab/terms#copyquot; } } }
  • 28. Service Document <workspace> <atom:title>openbiblio</atom:title> <collection href=quot;http://demo.jangle.org/openbiblio/actorsquot;> <atom:title>Borrowers</atom:title> </collection> <collection href=quot;http://demo.jangle.org/openbiblio/resourcesquot;> <atom:title>Bibliographic records</atom:title> <atom:category term='opac' scheme='http://jangle.org/vocab/terms#dlf-ilsdi- resource' /> </collection> <collection href=quot;http://demo.jangle.org/openbiblio/itemsquot;> <atom:title>Holdings records</atom:title> <atom:category term='copy' scheme='http://jangle.org/vocab/terms#copy' /> <atom:category term='hold' scheme='http://jangle.org/vocab/terms#hold' /> </collection> <collection href=quot;http://demo.jangle.org/openbiblio/collectionsquot;> <atom:title>Categories</atom:title> </collection> </workspace>
  • 29. Service Document <service xmlns=quot;http://www.w3.org/2007/appquot; xmlns:atom=quot;http://www.w3.org/2005/Atomquot;> <workspace> <atom:title>openbiblio</atom:title> <collection href=quot;http://demo.jangle.org/openbiblio/actorsquot;> <atom:title>Borrowers</atom:title> </collection> <collection href=quot;http://demo.jangle.org/openbiblio/resourcesquot;> <atom:title>Bibliographic records</atom:title> <atom:category term='opac' scheme='http://jangle.org/vocab/terms#dlf-ilsdi-resource' /> </collection> <collection href=quot;http://demo.jangle.org/openbiblio/itemsquot;> <atom:title>Holdings records</atom:title> <atom:category term='copy' scheme='http://jangle.org/vocab/terms#copy' /> <atom:category term='hold' scheme='http://jangle.org/vocab/terms#hold' /> </collection> <collection href=quot;http://demo.jangle.org/openbiblio/collectionsquot;> <atom:title>Categories</atom:title> </collection> </workspace><workspace> <atom:title>alto</atom:title> <collection href=quot;http://demo.jangle.org/alto/collectionsquot;> <atom:title>Categories</atom:title> </collection> <collection href=quot;http://demo.jangle.org/alto/itemsquot;> <atom:title>Holdings records</atom:title> <atom:category term='copy' scheme='http://jangle.org/vocab/terms#copy' /> <atom:category term='hold' scheme='http://jangle.org/vocab/terms#hold' /> </collection> <collection href=quot;http://demo.jangle.org/alto/resourcesquot;> <atom:title>Bibliographic records</atom:title> <atom:category term='opac' scheme='http://jangle.org/vocab/terms#dlf-ilsdi-resource' /> </collection> <collection href=quot;http://demo.jangle.org/alto/actorsquot;> <atom:title>Borrowers</atom:title> </collection> </workspace> </service>
  • 30. Jangle • Applies a common data model to library services using AtomPub • Four discrete collection types (Entities) • Resources, Items, Actors, Collections • Two components • Core & Connectors • OpenSearch + CQL
  • 31. Explain Document <OpenSearchDescription xmlns=quot;http://a9.com/-/spec/opensearch/1.1/quot; xmlns:jangle=quot;http://jangle.org/opensearch/quot;> <ShortName>Bibliographic records</ShortName> <LongName>Search Bibliographic records in OpenBiblio</LongName> <Description>Bibliographic records search. Defaults to keyword anywhere.</Description> <SyndicationRight>open</SyndicationRight> <Tags>catalog library</Tags> <Query role=quot;examplequot; searchTerms=quot;dc.title=thomasquot;> <zr:explain xmlns:zr=quot;http://explain.z3950.org/dtd/2.1/quot;> <zr:indexInfo> <zr:set name=quot;dcquot; identifier=quot;info:srw/cql-context-set/1/dc-v1.1quot;/> <zr:index><zr:map><zr:name set=quot;dcquot;>title</zr:name></zr:map></zr:index> <zr:index><zr:map><zr:name set=quot;dcquot;>creator</zr:name></zr:map></zr:index> <zr:index><zr:map><zr:name set=quot;dcquot;>subject</zr:name></zr:map></zr:index> <zr:index><zr:map><zr:name set=quot;dcquot;>identifier</zr:name></zr:map></zr:index> <zr:set name=quot;recquot; identifier=quot;info:srw/cql-context-set/2/rec-1.1quot;/> <zr:index><zr:map><zr:name set=quot;recquot;>identifier</zr:name></zr:map></zr:index> <zr:index><zr:map><zr:name set=quot;recquot;>collectionName</zr:name></zr:map></zr:index> <zr:index><zr:map><zr:name set=quot;recquot;>lastModificationDate</zr:name></zr:map></zr:index> <zr:index><zr:map><zr:name set=quot;recquot;>creationDate</zr:name></zr:map></zr:index> <zr:set name=quot;cqlquot; identifier=quot;info:srw/cql-context-set/1/cql-v1.2quot;/> <zr:index><zr:map><zr:name set=quot;cqlquot;>allIndexes</zr:name></zr:map></zr:index> <zr:index><zr:map><zr:name set=quot;cqlquot;>anyIndexes</zr:name></zr:map></zr:index> <zr:index><zr:map><zr:name set=quot;cqlquot;>keywords</zr:name></zr:map></zr:index> </zr:indexInfo> </zr:explain> </Query> </OpenSearchDescription>
  • 32. Explain Document <Query role=quot;examplequot; searchTerms=quot;dc.title=thomasquot;> <zr:explain xmlns:zr=quot;http://explain.z3950.org/dtd/2.1/quot;> <zr:indexInfo> <zr:set name=quot;dcquot; identifier=quot;info:srw/cql-context-set/1/dc-v1.1quot;/> <zr:index><zr:map><zr:name set=quot;dcquot;>title</zr:name></zr:map></zr:index> <zr:index><zr:map><zr:name set=quot;dcquot;>creator</zr:name></zr:map></zr:index> <zr:index><zr:map><zr:name set=quot;dcquot;>subject</zr:name></zr:map></zr:index> <zr:index><zr:map><zr:name set=quot;dcquot;>identifier</zr:name></zr:map></zr:index> <zr:set name=quot;recquot; identifier=quot;info:srw/cql-context-set/2/rec-1.1quot;/> <zr:index><zr:map><zr:name set=quot;recquot;>identifier</zr:name></zr:map></zr:index> <zr:index><zr:map><zr:name set=quot;recquot;>collectionName</zr:name></zr:map></zr:index> <zr:index><zr:map><zr:name set=quot;recquot;>lastModificationDate</zr:name></zr:map></zr:index> <zr:index><zr:map><zr:name set=quot;recquot;>creationDate</zr:name></zr:map></zr:index> <zr:set name=quot;cqlquot; identifier=quot;info:srw/cql-context-set/1/cql-v1.2quot;/> <zr:index><zr:map><zr:name set=quot;cqlquot;>allIndexes</zr:name></zr:map></zr:index> <zr:index><zr:map><zr:name set=quot;cqlquot;>anyIndexes</zr:name></zr:map></zr:index> <zr:index><zr:map><zr:name set=quot;cqlquot;>keywords</zr:name></zr:map></zr:index> </zr:indexInfo> </zr:explain> </Query>
  • 33. Atom with extensions • Jangle adds a few extensions & conventions to establish: • relationships between entities • alternate metadata formats for resources • indexes for OpenSearch queries
  • 34. Jangle Vocabulary • URIs to unambiguously define relationships, formats, categories • http://jangle.org/vocab/formats#application/marc • http://jangle.org/vocab/Entity#Actor • http://jangle.org/vocab/terms#dlf-ilsdi-resource • Should eventually move to the NSDL MetadataRegistry or similar service
  • 35. Feed Document • http://demo.jangle.org/openbiblio/resources/ • http://connector.jangle.org/resources/ • http://demo.jangle.org/openbiblio/actors/1711/items • http://demo.jangle.org/openbiblio/items/-/copy
  • 36. Current State of Jangle • Version 1.0 of the specification approved in November • Currently compiling requirements for 1.1 • Connector & Core frameworks available in • PHP • Ruby • Groovy
  • 37. Jangle enabled applications • Connectors • OpenBiblio ILS - Reference ILS implementation • Talis Alto • Helios/fac-back-opac/Kobold Chieftain • Scriblio • Blacklight
  • 38. Adapters • Convert Jangle’s output to other formats • DLF ILS-DI • OAI-PMH • Availability Lookup • Google SiteMaps
  • 39. The Future • Need more connectors to begin establishing community profiles • Begin experimenting with POST, PUT, DELETE • SWORD as template? • Examples of non-OPAC based client support • Courseware • Reserves systems
  • 40. The Community • http://jangle.org/ • spec, announcements, HOWTOs • http://groups.google.com/group/jangle-discuss • Primary discussion forum • http://code.google.com/p/jangle • Source, Issue tracking
  • 42. Thanks! Ross Singer - Talis rossfsinger@gmail.com