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
0
170
Introduction and Hands-on with Fedora 4
Given at the Islandora Conference, August 6, 2015.
David Wilcox
August 06, 2015
Tweet
Share
More Decks by David Wilcox
See All by David Wilcox
The Oxford Common File Layout
dwilcox
0
380
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
71
Introducing Fedora
dwilcox
0
2.1k
Fedora 4 Update
dwilcox
0
2.9k
Fedora 4 for Research Data
dwilcox
0
100
Introducing Fedora Repositories
dwilcox
0
2k
Fedora 4 Update
dwilcox
0
1.3k
Other Decks in Technology
See All in Technology
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
670
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.6k
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
480
セキュリティについて学ぶ会 / 2026 01 25 Takamatsu WordPress Meetup
rocketmartue
1
310
広告の効果検証を題材にした因果推論の精度検証について
zozotech
PRO
0
190
Data Hubグループ 紹介資料
sansan33
PRO
0
2.7k
会社紹介資料 / Sansan Company Profile
sansan33
PRO
15
400k
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2.5k
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
600
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
顧客の言葉を、そのまま信じない勇気
yamatai1212
1
360
配列に見る bash と zsh の違い
kazzpapa3
3
160
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
9
750
Paper Plane
katiecoart
PRO
0
46k
Paper Plane (Part 1)
katiecoart
PRO
0
4.3k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
440
Un-Boring Meetings
codingconduct
0
200
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
200
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.3k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
The Pragmatic Product Professional
lauravandoore
37
7.1k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
93
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Discover your Explorer Soul
emna__ayadi
2
1.1k
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