Skip to main content

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.

Source Distribution

oarepo_invenio_model-2.2.2.tar.gz (12.5 kB view hashes)

Uploaded Source

Built Distribution

oarepo_invenio_model-2.2.2-py3-none-any.whl (8.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page