1 of 35

Introducing Fedora Repositories

2 of 35

Learning Outcomes

Understand the purpose of a Fedora repository

​

Learn what Fedora can do for you

​

Understand the key capabilities of the software

3 of 35

Introduction to Fedora 4

4 of 35

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

5 of 35

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

6 of 35

Basic Concepts

7 of 35

New Vocabulary

Fedora 3

Fedora 4

Linked Data Platform (LDP)

Objects and Datastreams

Resources

LDP-Resource

Objects

Containers

LDP-Basic Container

LDP-Direct Container

LDP-Indirect Container

Datastreams

Binaries

Non-RDF Source

8 of 35

Resources

Both containers and binaries are resources

​

Container resources can have both containers and binaries as children

​

The tree structure allows for inheritance of things like security policies

​

​

9 of 35

Properties

Resources have a number of properties, expressed as RDF triples

Name-value pairs; translated to RDF on REST-API responses

Properties can be RDF literals or URIs

Any number of RDF namespaces can be defined and used

10 of 35

Core Features

11 of 35

Component Stack

12 of 35

Standards

Focus on existing standards

​

Fewer customizations to maintain

​

Opportunities to participate in related communities

​

​

13 of 35

Core Features and Standards

1. Create/Read/Update/Delete - Linked Data Platform

2. Versioning - Memento*

3. Authorization - WebAC

4. Transactions

5. Fixity

14 of 35

Versioning

Versions can be created on resources with an API call

​

A previous version can be restored via the REST-API

​

​

15 of 35

Authorization

The authorization framework provides a plug-in point within the repository that calls out to an optional authorization enforcement module

​

Currently, four authorization implementations exist: No-op, WebAC, Role-based and XACML

​

​

16 of 35

WebAccessControl

W3C approach for managing authorization using linked data

​

Interoperable with other applications that implement the same approach

​

Implemented in Fedora 4 by community stakeholders

17 of 35

Transactions

Multiple actions can be bundled together into a single repository event (transaction)

​

Transactions can be rolled back or committed

​

Can be used to maintain consistency

​

​

18 of 35

Fixity

Over time, digital objects can become corrupt

​

Fixity checks help preserve digital objects by verifying their integrity

​

On ingest, Fedora can verify a user-provided checksum against the calculated value

​

A checksum can be recalculated and compared at any time via a REST-API request

19 of 35

Fedora Vagrant Components

Solr

Triplestore

(Fuseki, Sesame)

  • Audit Service
  • SPARQL-Query

Fedora 4

LDP / WebAC / Memento??

Apache Camel

20 of 35

Non-core Features

21 of 35

Two Feature Types

1) Optional, pluggable components

​

Separate projects that can interact with Fedora 4 using a common pattern

​

2) External components

​

Consume and act off repository messages

​

​

22 of 35

Component Architecture

23 of 35

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

​

​

24 of 35

External - Indexing

Index repository content for search

​

Indexing is configurable - could be based on rdf:type property "Indexable" to filter from non-indexable content

​

Solr has been tested

​

​

25 of 35

External - Triplestore

An external triplestore can be used to index the RDF triples of Fedora resources

​

Any triplestore that supports SPARQL-update can be plugged in

​

Fuseki, Sesame and BlazeGraph have been tested

​

​

26 of 35

External/Pluggable - Audit Service

Maintains a history of events for each repository resource

​

Both internal repository events and events from external sources can be recorded

​

Uses the existing event system and an external triplestore

​

Events can be persisted back to Fedora

27 of 35

Pluggable - OAI Provider

fcrepo4-oaiprovider implements Open Archives Protocol Version 2.0 using Fedora 4 as the backend

​

Exposes an endpoint which accepts OAI conforming HTTP requests

​

Supports oai_dc out if the box, but users are able to add their own metadata format definitions to oai.xml

​

​

28 of 35

Pluggable - SWORD Server

SWORD is a lightweight protocol for depositing content from one location to another

​

fcrepo4-swordserver implements 2.0 AtomPub Profile, using Fedora 4 as the backend

​

SWORD v2 includes AtomPub CRUD operations

​

​

29 of 35

Transform

Service to transform resources using a stored program

​

E.g. transform resource properties to Solr fields

​

Accessible via /fcr:transform endpoint

​

30 of 35

Performance and Scalability

31 of 35

32 of 35

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

​

​

33 of 35

Transaction Performance

Multiple actions can be bundled together into a single repository event (transaction)

​

Transactions offer performance benefits by cutting down on the number of times data is written to the repository filesystem (which tends to be the slowest action)

​

​

34 of 35

Clustering

Two or more Fedora instances can be configured to work together in a cluster

​

Fedora 4 currently supports clustering for high-availability use cases

​

A load balancer can be setup in front of two or more Fedora instances to evenly distribute read requests across each instance

35 of 35

Useful Resources