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
200
Supporting Research Data Shared Services with Fedora
dwilcox
0
67
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
Абьюзим random_bytes(). Фёдор Кулаков, разработчик Lamoda Tech
lamodatech
0
340
Witchcraft for Memory
pocke
1
350
GitHub Copilot の概要
tomokusaba
1
130
データプラットフォーム技術におけるメダリオンアーキテクチャという考え方/DataPlatformWithMedallionArchitecture
smdmts
5
630
M3 Expressiveの思想に迫る
chnotchy
0
100
Yamla: Rustでつくるリアルタイム性を追求した機械学習基盤 / Yamla: A Rust-Based Machine Learning Platform Pursuing Real-Time Capabilities
lycorptech_jp
PRO
3
120
製造業からパッケージ製品まで、あらゆる領域をカバー!生成AIを利用したテストシナリオ生成 / 20250627 Suguru Ishii
shift_evolve
PRO
1
140
How Community Opened Global Doors
hiroramos4
PRO
1
120
AWS アーキテクチャ作図入門/aws-architecture-diagram-101
ma2shita
29
11k
解析の定理証明実践@Lean 4
dec9ue
0
180
AWS テクニカルサポートとエンドカスタマーの中間地点から見えるより良いサポートの活用方法
kazzpapa3
2
550
Wasm元年
askua
0
140
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
184
22k
It's Worth the Effort
3n
185
28k
For a Future-Friendly Web
brad_frost
179
9.8k
Making Projects Easy
brettharned
116
6.3k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
700
Documentation Writing (for coders)
carmenintech
72
4.9k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
124
52k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Facilitating Awesome Meetings
lara
54
6.4k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.3k
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