Main Schema

Repository metamodel

Community Metamodel

Collection Metamodel

Article (Item) Metamodel

Triples Metamodel

YAML Metamodel Code

dspace2vivo.yaml
openapi: "3.0.2"
info:
  version: 1.0.0
  title: DSpace - VIVO integration project
  description: |-
    This is the "DSpace - VIVO integration project" based on the OpenAPI 3.0 specification.
    You can find out more about Swagger at [http://swagger.io](http://swagger.io). In the third iteration of the pet store, we've switched to the design first approach!
    You can now help us improve the API whether it's by making changes to the definition itself or to the code.
    That way, with time, we can improve the API in general, and expose some of the new features in OAS3.
    Some useful links:
    - [DSpace-VIVO - Integration project of DSpace metadata with VIVO](https://github.com/vivo-community/DSpace-VIVO) 
    - [The Pet Store repository](https://github.com/swagger-api/swagger-petstore)
    - [The source API definition for the Pet Store](https://github.com/swagger-api/swagger-petstore/blob/master/src/main/resources/openapi.yaml)
  termsOfService: http://swagger.io/terms/
  contact:
    name: Michel Héon PhD
    email: vivo@uqam.ca
    url: https://github.com/vivo-community/DSpace-VIVO
  license:
    name: BSD 3-Clause License
    url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: /api
tags:
- name: "DSpace"
  description: "Operations about a DSpace metadata convertion to VIVO"
paths:
  /dspace/article:
    post:
      tags:
      - DSpace
      summary: "Translate DSpace-Article metadata to VIVO"
      description: ""
      operationId: "parseArticle"
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Article'
        required: true
      responses:
        200:
          description: successful operation
          content:
            text/plain:
              schema:
                type: string
            application/ld+json:
              schema:
                type: string
            text/n3:
              schema:
                type: string
            text/turtle:
              schema:
                type: string
            text/owl-manchester:
              schema:
                type: string
            text/owl-functional:
              schema:
                type: string
            application/rdf+xml:
              schema:
                type: string
            application/owl+xml:
              schema:
                type: string
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /dspace/collection:
    post:
      tags:
      - DSpace
      summary: "Translate DSpace-Collection metadata to VIVO"
      description: ""
      operationId: "parseCollection"
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Collection'
        required: true
      responses:
        200:
          description:  successful operation
          content:
            text/plain:
              schema:
                type: string
            application/ld+json:
              schema:
                type: string
            text/n3:
              schema:
                type: string
            text/turtle:
              schema:
                type: string
            text/owl-manchester:
              schema:
                type: string
            text/owl-functional:
              schema:
                type: string
            application/rdf+xml:
              schema:
                type: string
            application/owl+xml:
              schema:
                type: string
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
components:
  schemas:
    Article:
      type: object
      required:
        - id
        - uri
        - url
        - dspaceBitstreamURL
        - dspaceIsPartOfCollectionID
      properties:
        id:
          type: string
          example: 123456789/4
        dspaceBitstreamURL:
          type: string
          example: http://localhost:4000/bitstream/123456789/3/1/pdf1.pdf
        dspaceIsPartOfCollectionID:
          type: string
          example: 123456789/2
        uri:
          type: string
          example: http://localhost:4000/handle/123456789/3
        url:
          type: string
          example: http://localhost:4000/items/948d534a-e1d9-41b2-bb23-1ae2fe9cff4f
        listOfTriples:
          type: array
          items:
              $ref: '#/components/schemas/Triple'
          example: [ {
                    subjectUri: http://localhost:4000/handle/123456789/3,
                    predicateUri: dcterms:isPartOf,
                    objectUri: http://localhost:4000/handle/123456789/3
                  }, {
                    subjectUri: http://localhost:4000/handle/123456789/3,
                    predicateUri: bibo:uri,
                    objectUri: http://localhost:4000/handle/123456789/3
                  }]
        listOfTripleLiterals:
          type: array
          items:
              $ref: '#/components/schemas/TripleLiteral'
          exemple: [{
                      subjectUri: http://localhost:4000/handle/123456789/3,
                      predicateUri: dc:creator,
                      objectLiteral: Michel Héon,
                      literalType: xsd:string
                    }, {
                      subjectUri: http://localhost:4000/handle/123456789/3,
                      predicateUri: dcterms:hasPart,
                      objectLiteral: http://localhost:4000/bitstream/123456789/3/1/pdf1.pdf,
                      literalType: xsd:anyURI
                  } ]
    Collection:
      type: object
      required:
        - id
        - uri
        - url
        - hasItem 
        - isPartOfCommunity 
      properties:
        id:
          type: string
          example: 123456789/2
        uri:
          type: string
          example: http://localhost:4000/handle/123456789/2
        url:
          type: string
          example: http://localhost:4000/items/948d534a-e1d9-41b2-bb23-1ae2fe9cff4f
        hasItem: 
          type: array
          items:
            type: string
          example: 123456789/4,123456789/3
        isPartOfCommunity: 
          type: array
          items:
            type: string
          example: 123456789/1
        listOfTriples:
          type: array
          items:
              $ref: '#/components/schemas/Triple'
        listOfTripleLiterals:
          type: array
          items:
              $ref: '#/components/schemas/TripleLiteral'
    Community:
      type: object
      required:
        - id
        - uri
        - url
        - hasCollection
        - isPartOfRepository 
      properties:
        id:
          type: string
          example: 123456789/1
        uri:
          type: string
          example: "http://localhost:4000/handle/123456789/1"        
        url:
          type: string
          example: "http://localhost:4000/communities/b278a9dd-9c63-4864-9c6e-0a6caa8ff459"        
        hasCollection:
          type: array
          items:
            type: string
          example: 123456789/2
        isPartOfRepositoryID:
          type: string
          example: 123456789/0
        listOfTriples:
          type: array
          items:
              $ref: '#/components/schemas/Triple'
        listOfTripleLiterals:
          type: array
          items:
              $ref: '#/components/schemas/TripleLiteral'
    Repository:
      type: object
      required:
        - id
        - uri
        - hasCommunityId
      properties:
        id:
          type: string
          example: 123456789/0
        uri:
          type: string
          example: "http://localhost:4000/handle/123456789/0"    
        hasCommunityId:
          type: array
          items:
            type: string
          example: 123456789/1, 123456789/2
        listOfTriples:
          type: array
          items:
              $ref: '#/components/schemas/Triple'
        listOfTripleLiterals:
          type: array
          items:
              $ref: '#/components/schemas/TripleLiteral'
    Triple:
      type: object
      required:
        - subjectUri
        - predicateUri
        - objectUri
      properties:
        subjectUri:
          type: string
          example: http://localhost:4000/handle/123456789/3
        predicateUri:
          type: string
          example: dcterms:isPartOf
        objectUri:
          type: string
          example: http://localhost:4000/handle/123456789/3
    TripleLiteral:
      type: object
      required:
        - subjectUri
        - predicateUri
        - objectLiteral
        - literalType
      properties:
        subjectUri:
          type: string
          example: http://localhost:4000/handle/123456789/3
        predicateUri:
          type: string
          example: dc:creator
        objectLiteral:
          type: string
          example: "Michel Héon"
        literalType:
          type: string
          example: "xsd:string"
    Error:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string
  • No labels