Invenio data model for OARepo
Project description
OARepo Invenio data model
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for oarepo_invenio_model-2.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | e39a8052cca32592339127a89c87bf4a7e344aa57273ec63dedc05c79a1dd610 |
|
MD5 | 57f03bdc7829d5e84be94a08cb5d43b1 |
|
BLAKE2b-256 | 5f7252bcefb4b80e4fb31aa9c83792fe6db216eb74f838ce4630995b17cb06f3 |
Hashes for oarepo_invenio_model-2.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a69a20ff2e4ffa97b61d729d84f1381d328c52a1f43cc1fc80eb93313c90612f |
|
MD5 | 77c72f688f6baf93cd5daf8e47f5fefb |
|
BLAKE2b-256 | 79979a0048883456583acf0f49027b9f6846f8dc21a4eb594add4d4b4296cc1d |