You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

This article summarizes some requirements and proposed solutions for handling ordered lists in Fedora. 

Previous discussions

2014-10-02 - Fedora Committer Meeting

2014-10-09 - Fedora Committer Meeting

2014-10-16 - Fedora Committer Meeting

The issue

There is no standardized way in Fedora to present a list of nodes in an arbitrary order defined by the user and stored in a dedicated property. 

Michael DurbinUnknown User (escowles@ucsd.edu)Stefano Cossu brought up the issue and expressed interest

Possible solutions

  • Using MPTT/Nested Sets
    • + Flexible
    • + Commonly used in relational database design
    • - Complicated and maybe redundant in functionality
    • - Slow updating nodes
  • Using Ordered List Ontology
    • + Basic but effective
    • + Uses RDF syntax that can be more easily integrated in Fedora

Given the pros and cons, OLO seems to be a better fit. Implementation proposal below applies to the OLO solution. 

Proposed implementation

The plan I am proposing here is to add some CND definitions that allow content creators to identify a node as a list or a list slot. 

A draft CND is available here: https://github.com/aic-collections/aicdams-lake/blob/test-ontology/fcrepo-webapp/src/aic/resources/cnd/aic-lists.cnd 

This file contains definitions for olo:OrderedLists, olo:Slots (elements ordered in a list) and aiclist:Items (nodes that can be referenced in a list - this is optional). 

Fedora should do two things behind the scene: 

  1. Infer some properties for olo:OrderedList and olo:Slot nodes - such as olo:prev, olo:next etc (see @TODO comments in CND draft). 
    • olo:index can be user-provided or automated, e.g. if a Slot is added to a List without an index, Fedora assigns it the highest olo:index value in the list; or if olo:index is updated for a olo:Slot, all the other slots are update to ensure a consistent indexing.
    • Either olo:ordered_list in a Slot can be inferred from olo:slot values in a OrderedList, or the other way around. This CND assumes the first scenario. 
  2. Provide a presentation mechanism that returns nodes in a list ordered by olo:index value. This is only applicable to certain output types such as JSON or XML.

 

  • No labels