Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Introduction and Hands-on with Fedora 4
Search
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
400
Choosing an Open Source IR Platform
dwilcox
0
170
Fedora Forward: Current Developments and Future Plans
dwilcox
0
210
Supporting Research Data Shared Services with Fedora
dwilcox
0
77
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 不只幫你寫 Code: 當專案從 300 暴增到 1500, 我們如何撐住 DevOps
appleboy
0
270
飲食店もAIで。レジ締めやハンディシステムをつくってる話 / Using AI for restaurant management
vtryo
0
200
LayerX コーポレートエンジニアリング室におけるサプライチェーンセキュリティへの取り組み / Supply Chain Security at LayerX Corporate Engineering
yuyatakeyama
3
860
AIAU_UMEMOGU_ninomiya_slide
ninomiya_ii
0
270
気軽に使える"情報のハブ"としてのNotion活用 〜フロー情報の集積点 と、 Claude Code × Notion AI〜
syucream
1
210
不要なレビューをAIにまかせて AIコーディングの環境改善を加速した
shoota
1
270
技術・能力を向上する原理原則 #きのこセッションa #きのこ2026
bash0c7
0
140
元・セキュリティ学習経験0大学生による業務紹介 / An Introduction to the Job by a Former College Student with Zero Security Training Experience
nttcom
0
780
脱SaaS!FDEを支えるプロビジョニングと分離設計
knih
0
300
GitHub Copilot運用のリアル ~AI Credit時代にどう向き合うか~
takafumisu2uk1
0
470
自分が詳しくない領域でAIを使う #プロヒス2026
konifar
20
7.8k
時期が悪い!それでもRaspberry Piを買って遊んで活用するには / 20260627-osc26do-rpi-jikigawarui
akkiesoft
1
880
Featured
See All Featured
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Leo the Paperboy
mayatellez
7
1.9k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
260
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
870
A Modern Web Designer's Workflow
chriscoyier
698
190k
How GitHub (no longer) Works
holman
316
150k
Balancing Empowerment & Direction
lara
6
1.2k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
240
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
170
Visualization
eitanlees
152
17k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
370
Unsuck your backbone
ammeep
672
58k
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