catmandu librecat

24

Upload: patrick-hochstenbach

Post on 12-Jan-2015

602 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Catmandu Librecat
Page 2: Catmandu Librecat

Kahn-Wilensky Web

Handle

Repository DC OAISRU

Repository

Repository

DC

DC

OAISRU

OAISRU

ServiceProvider

I search a paper about

Page 3: Catmandu Librecat

Hypothesis 1: Network & Common SchemaHypothesis 2: Object Oriented DesignHypothesis 3: The Resource is the Message

Page 4: Catmandu Librecat

Lund (3)• PhD dissertations• Institutional Repository• Students Papers

Bielefeld (5)• Postprints• Conference Proceedings• Theses

Gent (3)• Academic Bibliography• Institutional Repository• Archive Digitized Materials

Hypothesis 1. Network & Common Schema

Imaging Workflow

Image Database

Project Database

Page 5: Catmandu Librecat

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 on these types• Fragmented input• Incomplete• Metadata, Files, Metadata + Files• Many schemas• Simple data types (String, Array, Map) many native functions on these types

Page 6: Catmandu Librecat

Kahn-Wilensky Web

Repository

Repository

Repository

Handle

DC

DC

DC

OAISRU

OAISRU

OAISRU

ServiceProvider

I search a paper about

Hypothesis 3: The Resource is the Message

Page 7: Catmandu Librecat

Hypothesis 3: The Researcher is the Message

DNS

(DC)HTML

HTTP

Google

ResearcherHomepage

Dr Müller

Social Web

Repository

Page 8: Catmandu Librecat

Project Catmandu

Page 9: Catmandu Librecat

database export

convert filter/map fix

index def

storeindex

displayfield def

fix def

Anatomy of Search

Page 10: Catmandu Librecat

Import

importer

$obj->each({})$obj->first()$obj->rest()$obj->select({})$obj->any({})$obj->many({})

Atom CSV DBI

MARC OAI SRU

JSON

Import from many sources

Page 11: Catmandu Librecat

ETL

fix

fix

upcase('job');

capitalize('first');capitalize('last');capitalize('my.deep.nested.0');

upcase('my.deep.nested.0');downcase('my.deep.nested.0');substring('my.deep.nested.0',0,2);

add_field('test');add_field('income',0);add_field('a.0.0.0',1);

marc_map('100','my.authors.$append');marc_map('710','my.authors.$append');marc_map('600x','my.subjects.$append');marc_map('008_/35-37','my.language');

join_field('colors.0','/');

JSON

JSON

Page 12: Catmandu Librecat

Store

DBI

Solr

MongoDB

store

$obj->add({})

$obj->search()

JSON

record.title:“rabbit” and record.author.firstName:“peter”

record.title any “rabbit” and record.author.firstName any “peter”

Schemaless storage

ElasticSearch

Page 13: Catmandu Librecat

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

JSON$hash$hash->{title}->[1]keys %$hash exists $hash->{isbn}

JSONJSONJSONJSONJSON

$it->count$it->each( sub { ... } )$it->any( sub { .. } )$it->map( sub { ... } )$it->reduce( sub { ... } )

Page 14: Catmandu Librecat

MVCDancer

app/ |--bin/ |--public/ | |-- images/ | |-- css/ | \-- javascript/ |--views/ | \-- hello.tt \--environments/

get ‘/hello’ => sub { my $res = store->bag ->search(query => ...) ->reduce( ... ); template ‘hello’ , { res => $res, txt => “Hello, World!”;};

<html><body><h1>[% txt %]</ht>[% FOREACH obj IN res %] <p>[% obj.title %]</p>[% END %]</body></html>

hello.tt

Page 15: Catmandu Librecat

Project LibreCat

Page 16: Catmandu Librecat
Page 17: Catmandu Librecat
Page 18: Catmandu Librecat
Page 19: Catmandu Librecat
Page 20: Catmandu Librecat

Statistics

63%10%

4.5%

22%

Page 21: Catmandu Librecat
Page 22: Catmandu Librecat
Page 23: Catmandu Librecat

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

Page 24: Catmandu Librecat

http://librecat.org

https://github.com/LibreCat

http://www.slideshare.net/hochstenbach/catmandu-librecat