Github

PCDM

The Portland Common Data Model (PCDM) is a flexible, extensible domain model that is intended to underlie a wide array of repository and DAMS applications. The primary objective of this model is to establish a framework that developers of tools (e.g., Samvera-based engines, such as Hyrax, Hyku, Sufia, and Avalon; Islandora; custom Fedora sites) can use for working with models in a general way, allowing adopters to easily use custom models with any tool. Given this interoperability goal, the initial work has been focused on structural metadata and access control, since these are the key actionable metadata.

To encourage adoption, this model must support the most complex use cases, which include rich hierarchies of inter-related collections and works, but also elegantly support the simplest use cases, such as a single user-contributed file with a few fields of metadata. It must provide a compact interface that tool developers can easily implement, but also be extensible enough for adopters to customize to their local needs.

As the community migrates to Fedora 5, much of our metadata is migrating to RDF. This model encourages linked data best practices, such as using URIs to identify all resources, using widely-used vocabularies where possible, and subclassing existing classes and properties when creating new terms.

Source Ontology

pcdm flowchart

See a full breakdown at duraspace/pcdm/wiki

Namespaces

PrefixURI
aclhttp://www.w3.org/ns/auth/acl#
dchttp://purl.org/dc/elements/1.1/
dctermshttp://purl.org/dc/terms/
pcdmhttp://pcdm.org/models#
foafhttp://xmlns.com/foaf/0.1/
genhttp://www.w3.org/2006/gen/ont#
ianahttp://www.iana.org/assignments/relation/ (see note)
ldphttp://www.w3.org/ns/ldp#
orehttp://www.openarchives.org/ore/terms/
rdfshttp://www.w3.org/2000/01/rdf-schema#

Core Classes

pcdm:Object

  • An Object is an intellectual entity, sometimes called a “work”, “digital object”, etc. Objects have descriptive metadata, access metadata, may contain files and other Objects as member “parts” or “components”. Each level of a work is therefore represented by an Object instance, and is capable of standing on its own, being linked to from Collections and other Objects. Member Objects can be ordered using the ORE Proxy class.

pcdm:Collection

  • A Collection is a group of resources. Collections have descriptive metadata, access metadata, and may link to Objects and/or Collections. By default, member Objects and Collections are an unordered set, but can be ordered using the ORE Proxy class.

pcdm:File

  • A File is a sequence of binary data and is described by some accompanying metadata. The metadata typically includes at least basic technical metadata (size, content type, modification date, etc.), but can also include properties related to preservation, digitization process, provenance, etc. Files MUST be contained by exactly one Object.

WebACL

WebACLs comes with Fedora 5 but is not recomended. Drupal permission management is more robust and is the suggested option for access control.

Performance

Islandora stores all the files for a book in a flat manner, one big flat repository. The relationships are stored and called via SQL for performance and Drupal functionality. So unlike other platforms that load the parent and all of the nested children before displaying the object, Islandora quickly loads the parent object first and then pages through 10 children at a time.