Catmandu Librecat

924 views

Published on

Published in: Technology, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
924
On SlideShare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
5
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Catmandu Librecat

  1. 1. Kahn-Wilensky Web Handle I search a paper about OAI Repository DC SRU OAI Service Repository DC SRU Provider OAI Repository DC SRU
  2. 2. Hypothesis 1: Network & Common SchemaHypothesis 2: Object Oriented DesignHypothesis 3: The Resource is the Message
  3. 3. Hypothesis 1. Network & Common Schema Project Database Lund (3) • PhD dissertations • Institutional RepositoryGent (3) • Students Papers • Academic Bibliography • Institutional Repository Image Database • Archive Digitized Materials Bielefeld (5) • PostprintsImaging Workflow • Conference Proceedings • Theses
  4. 4. Hypothesis 2: Object Oriented Design• (Complex) Digital Objects• Unique identifiers• Key-Metadata + 1 or more data streams• Metadata schemes invariant over repositories• Specialized data types + service bindings onthese types• Fragmented input• Incomplete• Metadata, Files, Metadata + Files• Many schemas• Simple data types (String, Array, Map) manynative functions on these types
  5. 5. Hypothesis 3: The Resource is the Message Kahn-Wilensky Web Handle I search a paper about OAI Repository DC SRU OAI Service Repository DC SRU Provider OAI Repository DC SRU
  6. 6. Hypothesis 3: The Researcher is the Message Social Web DNS Dr Müller Google (DC) Repository HTML HTTP Researcher Homepage
  7. 7. Project Catmandu
  8. 8. Anatomy of Searchdatabase export index def fix def convert filter/map fix index store field def display
  9. 9. Import Import from many sourcesAtom CSV DBI JSONMARC OAI SRU importer $obj->each({}) $obj->first() $obj->rest() $obj->select({}) $obj->any({}) $obj->many({})
  10. 10. ETL upcase(job);JSON capitalize(first); capitalize(last); capitalize(my.deep.nested.0); upcase(my.deep.nested.0); fix downcase(my.deep.nested.0); substring(my.deep.nested.0,0,2); fix add_field(test); add_field(income,0); add_field(a.0.0.0,1); marc_map(100,my.authors.$append);JSON marc_map(710,my.authors.$append); marc_map(600x,my.subjects.$append); marc_map(008_/35-37,my.language); join_field(colors.0,/);
  11. 11. Store Schemaless storage Elastic Solr Search JSON store Mongo DBI DB $obj->add({}) $obj->search() record.title:“rabbit” and record.author.firstName:“peter”record.title any “rabbit” and record.author.firstName any “peter”
  12. 12. Favorite Epigram "It is better to have 100 functions operate on one data structure than to have 10 functions operate on 10 data structures." Alan J. Perlis $hash $hash->{title}->[1] JSON keys %$hash exists $hash->{isbn} $it->countJSON JSON $it->each( sub { ... } ) JSON JSON JSON $it->any( sub { .. } ) $it->map( sub { ... } ) $it->reduce( sub { ... } )
  13. 13. MVC Dancerapp/ |--bin/ |--public/ hello.tt | |-- images/ <html> | |-- css/ <body> | -- javascript/ <h1>[% txt %]</ht> |--views/ [% FOREACH obj IN res %] | -- hello.tt <p>[% obj.title %]</p> --environments/ [% END %] </body> </html> get ‘/hello’ => sub { my $res = store->bag ->search(query => ...) ->reduce( ... ); template ‘hello’ , { res => $res, txt => “Hello, World!”; };
  14. 14. Project LibreCat
  15. 15. Statistics 22%4.5% 10% 63%
  16. 16. Project Plan• Catmandu : Open Source release of our toolkit• LibreCat : Example programs we would like to share • LibreCat-Search : Facetted search engine • LibreCat-Citation : CSL-based citations • LibreCat-Catalog : Institutional Repository • LibreCat-Grim : IIPImage search engine • LibreCat-Archive : Front-End for Fedora • LibreCat-Imaging : Front-End MediaMosa
  17. 17. http://librecat.org https://github.com/LibreCathttp://www.slideshare.net/hochstenbach/catmandu-librecat

×