Design Datastore API Notes

  1. Given the architecture of our repository, can we improve?
  2. Various preceeding questions/clarifications
    1. Fedora Assumptions - Trickles into view
    2. How are deprecation notices handled? - Notified when used and referred to new method
  3. Observations
    1. organizational decisions to use XML with hierarchies of information impact or constrain ability to use typical RAILS
    2. Object relationships are much less straightforward that setting a title or author with OM. Matt says they use RDF to get around this and use ismemberof that flows well and is easy to read/follow.
    3. problem exists when you are using XML regardless of Merrity or Fedora 
  4. Jeremy Frieson will investigate 
    1. an XML adapter for active record
    2. RAILS serializer to verify put and get
    3. Jeremy – I have investigated briefly a handful of options:
      1. https://github.com/Empact/roxml
        1. Pretty format, feels like DataMapper project; Simpler API
        2. Uses module mixins instead of inheritance – could play with ActiveFedora
        3. Get/Set capabilities, easy relation modeling
      2. https://github.com/ruby-rdf/rdf-rdfxml
        1. Not as pretty format; API feels clunky
      3. Rails Serializers http://github.com/josevalim/active_model_serializers
        1. This is GET only; Helpful for keeping serialization of data separate from business models
  5. Object XML Mapping - Needs/Patterns for which we might gather partner approaches to solutions
    1. Ability to Get/Set XML values as ActiveModel Objects
      1. Make XML-ness transparent?
      2. RAILS "serializers"? -- see above Jeremy 
    2. Ordering of Related Objects
    3. Modeling Problem - Self Referencing Many to Many (i.e. “tree” gem); override nested Attributes in RAILS