Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Introduction and Hands-on with Fedora 4
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
David Wilcox
August 06, 2015
Technology
180
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Introduction and Hands-on with Fedora 4
Given at the Islandora Conference, August 6, 2015.
David Wilcox
August 06, 2015
More Decks by David Wilcox
See All by David Wilcox
The Oxford Common File Layout
dwilcox
0
420
Choosing an Open Source IR Platform
dwilcox
0
180
Fedora Forward: Current Developments and Future Plans
dwilcox
0
210
Supporting Research Data Shared Services with Fedora
dwilcox
0
88
Introducing Fedora
dwilcox
0
2.1k
Fedora 4 Update
dwilcox
0
2.9k
Fedora 4 for Research Data
dwilcox
0
110
Introducing Fedora Repositories
dwilcox
0
2k
Fedora 4 Update
dwilcox
0
1.4k
Other Decks in Technology
See All in Technology
継続的なAIコスト最適化
bgpat
1
340
JAWS-UGグッズ職人仕事の流儀
kentapapa
0
100
触りたくないデータに、どう触るか AI時代のRBACアクセスガバナンス
ivry_presentationmaterials
0
260
AI時代のPRレビューにどう向き合うか?
kairim0
1
240
Claude の新機能を、 出た日に触って社内に届けるまで
rfdnxbro
1
170
AI駆動で「他アプリの音を加工できる」アプリを作った
satomasahiro2005
0
150
[JAWS-UG彩の国埼玉#12]そろそろ準備する?re:Invent2026をやさしく解説 / reinvent2026-sainokuni
sh_fk2
1
340
ストレスなくAIと付き合いたい!こんなときどうしてる?
namiki64
3
500
Running Kotlin + Quarkus with Lambda
nealle
1
3.7k
DGX Spark でどこまでハッキングができるのか?
kash1064
3
1.3k
DWH の限界突破! AI エージェント向け爆速リアルタイムデータ基盤 ClickHouse
jozono
1
470
Post AI時代のリファクタリング実践記 / Refactoring in the post AI era
kaminashi
1
230
Featured
See All Featured
Statistics for Hackers
jakevdp
799
230k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.5k
The Language of Interfaces
destraynor
162
27k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
410
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
780
エンジニアに許された特別な時間の終わり
watany
109
250k
A Tale of Four Properties
chriscoyier
163
24k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Amusing Abliteration
ianozsvald
1
350
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
410
Crafting Experiences
bethany
1
380
Transcript
Introduction and Hands- on with Fedora 4 David Wilcox DuraSpace
Learning Outcomes Understand the purpose of a Fedora repository Understand
the key capabilities of the software Explore core and external features
Introduction to Fedora 4
What is a Fedora Repository? Secure software that stores, preserves,
and provides access to digital materials Supports complex semantic relationships between objects inside and outside the repository Supports millions of objects, both large and small Capable of interoperating with other applications and services
Exposing and Connecting Content Flexible, extensible content modeling Atomic resources
with semantic connections using standard ontologies RDF-based metadata using Linked Data RESTful API with native RDF response format
New Vocabulary Fedora 3 Fedora 4 Objects and Datastreams Resources
Objects Containers Datastreams Binaries
Core Features
Component Stack
Standards Focus on existing standards Fewer customizations to maintain Opportunities
to participate in related communities
Core Features and Standards CRUD - LDP Versioning - Memento?
Authorization - WebAC? Transactions Fixity Import/Export - RDF export?
Non-core Features
Two Feature Types Optional, pluggable components Separate projects that can
interact with Fedora 4 using a common pattern External components Consume and act off repository messages
Component Architecture
External Component Integrations Leverages the well-supported Apache Camel project Camel
is middleware for integration with external systems Can handle any asynchronous, event-driven workflow Indexing to Solr, external triplestore, etc.
None
Metrics A number of scalability tests have been run: Uploaded
a 1 TB file via REST API 16 million objects via federation 10 million objects via REST API
Hands-on with Fedora 4
Fedora Vagrant Components Solr Triplestore (Fuseki, Sesame) • Audit Service
• SPARQL-Query F4 LDP / WebAC?? / Memento?? Apache Camel
Final result (structure) • cover/ ◦ files/ ▪ cover.jpg ▪
cover.tiff • book/ ◦ members/ ▪ coverProxy • favorites/ ◦ members/ ▪ bookProxy
Final result (relationships) • cover/ ◦ pcdm:hasFile ▪ cover.jpg ▪
cover.tiff • book/ ◦ pcdm:hasMember ▪ cover/ • favorites/ ◦ pcdm:hasMember ▪ book/
Final result (relationships) <cover> pcdm:hasFile <cover.jpg> <cover> pcdm:hasFile <cover.tiff> <book>
pcdm:hasMember <cover> <favorites> pcdm:hasMember <book>
Create a Container named “cover” ...Note: names in demo are
only for readability
Make “cover” a pcdm:Object PREFIX pcdm: <http://pcdm.org/models#> INSERT { <http://localhost:8080/fcrepo/rest/cover>
rdf:type pcdm:Object } WHERE { }
Another way to make “cover” a pcdm: Object PREFIX pcdm:
<http://pcdm.org/models#> INSERT { <> a pcdm:Object } WHERE { }
Create “files” Container ...contained inside “cover”
Make “files” an ldp:DirectContainer PREFIX ldp: <http://www.w3.org/ns/ldp#> PREFIX pcdm: <http://pcdm.org/models#>
INSERT { </fcrepo/rest/cover/files> rdf:type ldp:DirectContainer . <> rdf:type pcdm:Object . <> ldp:membershipResource </fcrepo/rest/cover> . <> ldp:hasMemberRelation pcdm:hasFile . } WHERE { }
Another way to make “files” an ldp: DirectContainer PREFIX ldp:
<http://www.w3.org/ns/ldp#> PREFIX pcdm: <http://pcdm.org/models#> INSERT { <> a ldp:DirectContainer, pcdm:Object ; ldp:membershipResource </fcrepo/rest/cover> ; ldp:hasMemberRelation pcdm:hasFile . } WHERE { }
Create some cover binaries ...contained inside “files” cover.jpg cover.tif *
See auto-generated relationship on “cover” * Fixity
Create a “book” Container
Make “book” a pcdm:Object PREFIX pcdm: <http://pcdm.org/models#> INSERT { <>
a pcdm:Object } WHERE { }
Create a “members” Container ...contained inside “book”
Make “members” an ldp:IndirectContainer PREFIX ldp: <http://www.w3.org/ns/ldp#> PREFIX pcdm: <http://pcdm.org/models#>
PREFIX ore: <http://www.openarchives.org/ore/terms/> INSERT { <> a ldp:IndirectContainer, pcdm:Object ; ldp:membershipResource </fcrepo/rest/book> ; ldp:hasMemberRelation pcdm:hasMember ; ldp:insertedContentRelation ore:proxyFor . } WHERE { }
Create a “coverProxy” Container ...contained inside “members”
Make “coverProxy” proxy for... PREFIX pcdm: <http://pcdm.org/models#> PREFIX ore: <http://www.openarchives.org/ore/terms/>
INSERT { <> a pcdm:Object ; ore:proxyFor </fcrepo/rest/cover> ; ore:proxyIn </fcrepo/rest/book> . } WHERE { }
Bask in the magic... ...Generated relationship on “book”
Bonus Round
Create a “favourites” Container ...Just like “book”, except a pcdm:Collection
Make “favourites” a pcdm:Collection PREFIX pcdm: <http://pcdm.org/models#> INSERT { <>
a pcdm:Collection } WHERE { }
Create a “members” Container ...contained inside “favourites”
Make “members” an ldp:IndirectContainer PREFIX ldp: <http://www.w3.org/ns/ldp#> PREFIX pcdm: <http://pcdm.org/models#>
PREFIX ore: <http://www.openarchives.org/ore/terms/> INSERT { <> a ldp:IndirectContainer, pcdm:Object ; ldp:membershipResource </fcrepo/rest/favourites> ; ldp:hasMemberRelation pcdm:hasMember ; ldp:insertedContentRelation ore:proxyFor . } WHERE { }
Create a “bookProxy” Container ...contained inside “members”
Make “bookProxy” proxy for... PREFIX pcdm: <http://pcdm.org/models#> PREFIX ore: <http://www.openarchives.org/ore/terms/>
INSERT { <> a pcdm:Object ; ore:proxyFor </fcrepo/rest/book> ; ore:proxyIn </fcrepo/rest/favourites> . } WHERE { }
Success! ...See auto-created relationship on “favorites”
Other Features * Versioning * Transactions * Transform * Authorization
SPARQL Queries
Find Collections prefix pcdm: <http://pcdm.org/models#> select ?r where { ?r
a pcdm:Collection }
Find Resources with Members prefix pcdm: <http://pcdm.org/models#> select ?r ?m
where { ?r pcdm:hasMember ?m }
Find Resources with TIF files prefix pcdm: <http://pcdm.org/models#> prefix fedora:
<http://fedora.info/definitions/v4/repository#> prefix xsd: <http://www.w3.org/2001/XMLSchema#> select ?r ?m ?f where { ?r pcdm:hasMember ?m . ?m pcdm:hasFile ?f . ?f fedora:mimeType "image/tiff"^^xsd:string }
Find Resources with nested TIF files prefix pcdm: <http://pcdm.org/models#> prefix
fedora: <http://fedora.info/definitions/v4/repository#> prefix xsd: <http://www.w3.org/2001/XMLSchema#> select ?r ?m ?f where { ?r pcdm:hasMember+ ?m . ?m pcdm:hasFile ?f . ?f fedora:mimeType "image/tiff"^^xsd:string }
Find Binary larger than 1-MB prefix premis: <http://www.loc.gov/premis/rdf/v1#> prefix fedora:
<http://fedora.info/definitions/v4/repository#> select ?r ?s where { ?r a fedora:Binary . ?r premis:hasSize ?s . FILTER (?s > 100000) }
F4 / LDP / PCDM in action LDP-PCDM-F4+In+Action
Fedora 4 documentation Fedora 4 wiki Fedora 4 mailing lists
Useful Resources