Skip to main content
Join the official 2020 Python Developers SurveyStart the survey!

Invenio data model for OARepo

Project description

OARepo Invenio data model

image image image image

Invenio base record model.

Instalation

    pip install oarepo-invenio-model

Usage

The library provides extensible Invenio base record model.

JSON Schema

Add this package to your dependencies and use it via $ref in json schema.

Usage example

{
  "type": "object",
  "allOf": [
    {
      "properties": {
        "title": {
          "type": "string"
        }
      }
    },
    {
      "$ref": "/schemas/invenio-v1.0.0.json#/definitions/InvenioRecord"
    }
  ],
  "additionalProperties": "false"
}

Elastic Search Mapping

Use oarepo-mapping-includes library for extanding invenio base record model mapping.

Usage example

{
  "mappings": {
    "dynamic": "strict",
    "oarepo:extends": "invenio-v1.0.0.json#/InvenioRecord",
    "properties": {
         "title": {
        "type": "text"
      }
    }
  }
}

Marshmallow

You can extense your schema with Invenio base model schema by inheriting from InvenioRecordMetadataSchemaV1Mixin.

Usage example

class SampleSchemaV1(InvenioRecordMetadataSchemaV1Mixin):
    title = fields.String(validate=validate.Length(min=5), required=True)

Schema inheritance

JSON Schema provides allOf construct to join multiple schemas. The current implementation of python's schema validator can not handle allOf in top-level element.

To enable composition of schemas in the form of top-level "includes":

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "allOf": [
    {
      "$ref": "/schemas/dcterms-v2.0.0.json#/definitions/DCObject"
    },
    {
      "$ref": "/schemas/invenio-v1.0.0.json#/definitions/InvenioRecord"
    },
    {
      "properties": {
        "category": {
          "type": "string",
          "enum": ["kovy", "sklo", "keramika", "textil"]
        }
      }
    }
  ]
}

inherit your record class from InheritedSchemaRecordMixin:

from oarepo_invenio_model import InheritedSchemaRecordMixin
from invenio_records.api import Record

class MyRecord(InheritedSchemaRecordMixin, Record):
    pass

Changes

[Version 2.0.0]

  • Update schemas, mappings and marshmallow to latest records rest schemas
  • Switch record id type from string to PersistentIdentifier

[Version 1.1.0]

  • Export Invenio ES mappings

Invenio base record model.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for oarepo-invenio-model, version 2.1.2
Filename, size File type Python version Upload date Hashes
Filename, size oarepo_invenio_model-2.1.2-py3-none-any.whl (8.0 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size oarepo_invenio_model-2.1.2.tar.gz (12.1 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page