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

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
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
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
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
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
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
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 

Recently uploaded (20)

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
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
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
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
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
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
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 

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