A Resource-Oriented Approach to the Repository - OAI ORE TC Meeting, NYC, Jan 2007

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    2 Favorites & 1 Group

    A Resource-Oriented Approach to the Repository - OAI ORE TC Meeting, NYC, Jan 2007 - Presentation Transcript

    1. A Resource-Oriented Approach to the Repository OAI ORE Technical Committee Meeting, New York City
    2. A Resource-Oriented Approach to the Repository
      • The REST/Resource-Oriented Approach
      • Repository Functional Requirements
      • Delivering Functions using a Resource-Oriented Approach
      • Caveat: All quite tentative! Needs more work etc etc!
    3. The REST/Resource-Oriented Approach
      • “ Architectural style”
      • Key principles
        • Identifiable resources
        • Uniform interface
        • Stateless communication
        • Exchange of representations of resources
        • Hyperlinks in representations
      • HTTP as one implementation of REST
        • Actually, REST principles derived a posteriori from HTTP
        • Roy Fielding, Architectural Styles and the Design of Network- based Software Architectures
    4. The REST/Resource-Oriented Approach
      • Designing an application
        • Decide on types/classes of resources
        • Select/create formats for representations of resources
        • Select methods to be supported for resources of different types
        • Document likely response codes
      http://bitworking.org/news/How_to_create_a_REST_Protocol http://rest.blueoxen.net/cgi-bin/wiki.pl?RESTfulDesign
    5. Repository Functional Requirements
      • Enable agent to
        • Harvest a batch of Representations, one per Object
        • Reference
          • An Object
          • A Representation of an Object
        • Obtain
          • Representations of an Object
          • A list of the available Representations of an Object
        • Put
          • An Object (into a Repository)
          • A Representation of an Object (into a Repository)
      • Essentially, concerned with two(?) types/classes of resource
        • Instances identified by URIs
      • Collection
        • An aggregation of zero or more Objects
        • Collection hasMember 0-n Objects
        • Object isMemberOf 0-n Collections
        • Specifying harvest criteria results in different sub-collections
      • Object
        • (definition)
        • Object isComposedOf 0-n Objects
        • Object isComponentOf 0-n Objects
        • Object isDerivativeOf 0-n Objects
        • Object hasDerivative 0-n Objects
      • Any resource has zero or more representations
      hasComponent/ isComponentOf Collection Object hasMember/ isMemberOf 0…m 0…n hasDerivative/ isDerivativeOf 0…m 0…n 0…n 0…m Resources
    6. Resources and representations
      • Components communicate by transferring representations of resources
      • A representation is data that encodes information about resource state. Representations do not necessarily describe the resource, or portray a likeness of the resource, or represent the resource in other senses of the word "represent“ (AWWW)
      • A URI owner may provide zero or more representations for a single resource via a single URI
        • Basis for Content Negotiation
      • A URI owner may provide different representations over time for a single resource via the same URI
      • The same representation may be provided for multiple resources via different URIs
      • A representation is a bitstream; two different bitstreams are two different representations
    7. Resources and representations
      • URIs are typically not assigned to representations
      • But if it is useful/necessary to refer to the representation independently of the resource(s) it represents, a representation
        • could be modelled/exposed as a resource in its own right
        • could be identified by a URI
      • May be for purposes of description rather than de-referencing
      • However
        • each different bitstream is a different representation, so each different bitstream would require a different URI
      • Also
        • isRepresentedBy is different relationship from hasComponent or isDerivedFrom
        • hasComponent relationship is between Objects
      • Do we really need to model representations as resources?
        • Representations just of Objects? Or of Collections too?
      • Or do we want to model some other “more specific” resource that is related to the Object but may still have multiple representations?
    8. hasRepresentation/ isRepresentationOf
      • If there is a requirement to refer to specific representations independently of the resource(s) they represent, then we need to introduce
        • an additional relationship and
        • an additional resource type/class
      • Representation
        • Resource isRepresentedBy 1-n Representations
        • Representation isRepresentationOf 1-n Resources
      hasComponent/ isComponentOf Collection Object hasMember/ isMemberOf 0…m 0…n hasDerivative/ isDerivativeOf 0…m 0…n 0…n 0…m Resources Representation 1…n 1…m
    9. Formats
      • XHTML
      • Collection format (XML? XHTML plus embedded RDF/RDF-A/microformats?)
        • “ Core” attributes of Collection
          • maybe just type = Collection, label/title?
        • List of references to (i.e. URIs of) Objects which are members of this Collection
      • Object format (XML? XHTML plus embedded RDF/RDF-A/microformats?)
        • “ Core” attributes of Object
          • maybe just type = Object/other-type (i.e. “Semantics”), label/title?
        • Datastream(s) (or references to datastreams)
        • List of references to (i.e. URIs of) other Objects from which this Object derived (i.e. Lineage)
        • List of references to (i.e. URIs of) Objects which are components of this Object (i.e. Composition)
      • ? List representations format
        • Either list of content-types of Representations of this Resource?
        • Or list of content-types of and references to (i.e. URIs of) Resources which are Representations of this Resource?
        • Does this require a separate format?
          • Can this be done with Status Code 300 Multiple Choices?
          • Could this data be part of Collection format & Object format?
      • (Other representation formats for representations!)
    10. Methods: Collection i.e. add Object to Collection (Note: also adds a Representation of the Object) Object Format Post i.e. get Collection details (including list of Objects in Collection) i.e. get list of content-types (and URIs?) of Representations of Collection XHTML Collection Format ?List Representations Format Get
    11. Methods: Object Aside: Could be extended to cover creation of e.g. Object isComponentOf Object relations i.e. add Representation of Object (Representation Format) ?Post i.e. get Object details (including list of component Objects, list of Objects from which derived) i.e. get list of content-types (and URIs?) of Representations of Object XHTML Object Format ?List Representations Format Get
    12. Methods: Representation i.e. get Representation of Object (Representation Format) ?Get
    13. Response Codes: Collection 201 Created 400 Bad Request 401 Unauthorized 415 Unsupported Media Type Object Format Post 200 OK 200 OK XHTML Collection Format ?List Representations Format Get
    14. Response Codes: Object 201 Created 400 Bad Request 401 Unauthorized ?415 Unsupported Media Type (Representation Format) ?Post 200 OK 200 OK XHTML Object Format ?List Representations Format Get
    15. Response Codes: Representation 200 OK (Representation Format) ?Get
    16. Repository Functional Requirements
      • Enable agent to
        • Harvest a batch of Representations, one per Object
      • GET Collection URI
      • For each member Object
        • GET Object URI (Accept: Content-Type=application/listrep+xml)
        • GET Object URI (Accept: Content-Type=xyz) or ?GET Representation URI
    17. Repository Functional Requirements
      • Enable agent to
        • Reference
          • An Object
          • A Representation of an Object
      Object URI Representation URI
    18. Repository Functional Requirements
      • Enable agent to
        • Obtain
          • A list of the available Representations of an Object
          • Representations of an Object
      GET Object URI (Accept: Content-Type=application/listrep+xml) GET Object URI (Accept: Content-Type=xyz) or ?GET Representation URI
    19. Repository Functional Requirements
      • Enable agent to
        • Put
          • An Object (into a Repository)
          • A Representation of an Object (into a Repository)
      POST instance of Object Format to Collection URI ?POST instance of (Representation Format) to Object URI
    20. Summary
      • Focus on resources of interest
        • Collections
        • Objects
        • ?Representations (or “Views”)
      • Exchange representations of resources
      • Relationships between resources expressed using (typed) links/URIs in representations
        • Server provides URIs, client consumes/follows them
      • Uniform interface
        • GET and POST probably sufficient for core functions?
        • PUT and DELETE may be required for updates, removals etc
          • Implementers can add functionality around core functionality
      • Repository-as-service “disappears from view”
    21. isMoreGenericThan/ isMoreSpecificThan
      • Leigh D: Web Arch takes care of resource-representation relations
      • Maybe instead of modelling Representations and Object Resource isRepresentedBy Representation, should consider “specificity”
      • i.e. an Object may be associated with zero or more “more specific” other Objects
      • See Berners-Lee, Design Issues: Generic Resources
        • http://www.w3.org/DesignIssues/Generic
      • Object
        • Object isMoreGenericThan 0-n Objects
        • Object isMoreSpecificThan 0-n Objects
      • Allows for recursion
      • Allows a “more specific” Object to participate in a hasComponent relationship
      hasComponent/ isComponentOf Collection Object hasMember/ isMemberOf 0…m 0…n hasDerivative/ isDerivativeOf 0…m 0…n 0…n 0…m Resources 0…n 0…m
    22. A Resource-Oriented Approach to the Repository OAI ORE Technical Committee Meeting, New York City

    + Eduserv FoundationEduserv Foundation, 3 years ago

    custom

    2230 views, 2 favs, 1 embeds more stats

    Short presentation given to OAI ORE Technical Commi more

    More info about this document

    CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

    Go to text version

    • Total Views 2230
      • 2226 on SlideShare
      • 4 from embeds
    • Comments 0
    • Favorites 2
    • Downloads 0
    Most viewed embeds
    • 4 views on http://www.eduserv.org.uk

    more

    All embeds
    • 4 views on http://www.eduserv.org.uk

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories

    Groups / Events