class CommitMixinSchemaV3(JsonLDSchema): """CommitMixin schema.""" _id = fields.Id(missing=None) _label = fields.String(rdfs.label, missing=None) _project = fields.Nested(schema.isPartOf, ProjectSchemaV3, missing=None) path = fields.String(prov.atLocation)
class DatasetTagSchema(JsonLDSchema): """DatasetTag schema.""" class Meta: """Meta class.""" rdf_type = schema.PublicationEvent model = DatasetTag unknown = EXCLUDE name = fields.String(schema.name) description = fields.String(schema.description) commit = fields.String(schema.location) created = fields.DateTime(schema.startDate, missing=None, format="iso", extra_formats=("%Y-%m-%d", )) dataset = fields.String(schema.about) _id = fields.Id(init_name="id") @pre_dump def fix_datetimes(self, obj, many=False, **kwargs): """Pre dump hook.""" if many: return [self.fix_datetimes(o, many=False, **kwargs) for o in obj] object.__setattr__(obj, "created", self._fix_timezone(obj.created)) return obj
class UrlSchema(JsonLDSchema): """Url schema.""" class Meta: """Meta class.""" rdf_type = schema.URL model = Url unknown = EXCLUDE url = fields.Uri(schema.url, missing=None) _id = fields.Id(init_name="id", missing=None)
class SoftwareAgentSchema(JsonLDSchema): """SoftwareAgent schema.""" class Meta: """Meta class.""" rdf_type = [prov.SoftwareAgent, wfprov.WorkflowEngine] model = SoftwareAgent unknown = EXCLUDE label = fields.String(rdfs.label) _id = fields.Id(init_name="id")
class UrlSchemaV5(JsonLDSchema): """Url schema.""" class Meta: """Meta class.""" rdf_type = schema.URL model = Url unknown = EXCLUDE _id = fields.Id(missing=None) url = fields.Uri(schema.url, missing=None)
class AnnotationSchema(JsonLDSchema): """Annotation schema.""" class Meta: """Meta class.""" rdf_type = oa.Annotation model = Annotation unknown = EXCLUDE _id = fields.Id(init_name="id") body = fields.Raw(oa.hasBody) source = fields.Raw(dcterms.creator)
class MappedIOStreamSchema(JsonLDSchema): """MappedIOStream schema.""" class Meta: """Meta class.""" rdf_type = [renku.IOStream] model = MappedIOStream unknown = EXCLUDE _id = fields.Id(init_name="id") _label = fields.String(rdfs.label, init_name="label") stream_type = fields.String(renku.streamType)
class AssociationSchema(JsonLDSchema): """Association schema.""" class Meta: """Meta class.""" rdf_type = prov.Association model = Association unknown = EXCLUDE _id = fields.Id(init_name="id") plan = Nested(prov.hadPlan, RunSchema) agent = Nested(prov.agent, [SoftwareAgentSchema, PersonSchema])
class CommandParameterSchema(JsonLDSchema): """CommandParameter schema.""" class Meta: """Meta class.""" rdf_type = [renku.CommandParameter] model = CommandParameter unknown = EXCLUDE _id = fields.Id(init_name="id") _label = fields.String(rdfs.label, init_name="label") position = fields.Integer(renku.position, missing=None) prefix = fields.String(renku.prefix, missing=None)
class OrderedSubprocessSchema(JsonLDSchema): """OrderedSubprocess schema.""" class Meta: """Meta class.""" rdf_type = [renku.OrderedSubprocess] model = OrderedSubprocess unknown = EXCLUDE _id = fields.Id(init_name="id") index = fields.Integer(renku.index) process = Nested(renku.process, RunSchema)
class CommitMixinSchema(JsonLDSchema): """CommitMixin schema.""" class Meta: """Meta class.""" model = CommitMixin path = fields.String(prov.atLocation) _id = fields.Id(init_name='id') _label = fields.String(rdfs.label, init_name='label', missing=None) _project = fields.Nested(schema.isPartOf, ProjectSchema, init_name='project', missing=None)
class UsageSchema(JsonLDSchema): """Usage schema.""" class Meta: """Meta class.""" rdf_type = prov.Usage model = Usage unknown = EXCLUDE _id = fields.Id(init_name="id") entity = Nested( prov.entity, [EntitySchema, CollectionSchema, DatasetSchema, DatasetFileSchema]) role = fields.String(prov.hadRole, missing=None)
class GenerationSchema(JsonLDSchema): """Generation schema.""" class Meta: """Meta class.""" rdf_type = prov.Generation model = Generation unknown = EXCLUDE _id = fields.Id(init_name="id") entity = Nested( prov.qualifiedGeneration, [EntitySchema, CollectionSchema, DatasetSchema, DatasetFileSchema], reverse=True) role = fields.String(prov.hadRole, missing=None)
class DatasetTagSchemaV5(JsonLDSchema): """DatasetTag schema.""" class Meta: """Meta class.""" rdf_type = schema.PublicationEvent model = DatasetTag unknown = EXCLUDE _id = fields.Id() commit = fields.String(schema.location) created = fields.DateTime(schema.startDate, missing=None) dataset = fields.String(schema.about) description = fields.String(schema.description) name = fields.String(schema.name)
class ProjectSchemaV3(JsonLDSchema): """Project Schema.""" class Meta: """Meta class.""" rdf_type = [prov.Location, schema.Project] model = Project unknown = EXCLUDE _id = fields.Id(missing=None) name = fields.String(schema.name, missing=None) created = fields.DateTime(schema.dateCreated, missing=None) updated = fields.DateTime(schema.dateUpdated, missing=None) version = fields.String(schema.schemaVersion, missing=1) creator = fields.Nested(schema.creator, PersonSchemaV3, missing=None)
class PersonSchema(JsonLDSchema): """Person schema.""" class Meta: """Meta class.""" rdf_type = [prov.Person, schema.Person] model = Person unknown = EXCLUDE name = fields.String(schema.name) email = fields.String(schema.email, missing=None) label = fields.String(rdfs.label) affiliation = fields.String(schema.affiliation, missing=None) alternate_name = fields.String(schema.alternateName, missing=None) _id = fields.Id(init_name='id')
class DatasetSchema(EntitySchema, CreatorMixinSchema): """Dataset schema.""" class Meta: """Meta class.""" rdf_type = schema.Dataset model = Dataset unknown = EXCLUDE _id = fields.Id(init_name="id", missing=None) _label = fields.String(rdfs.label, init_name="label", missing=None) date_published = fields.DateTime( schema.datePublished, missing=None, allow_none=True, format="%Y-%m-%d", extra_formats=("iso", "%Y-%m-%dT%H:%M:%S"), ) description = fields.String(schema.description, missing=None) identifier = fields.String(schema.identifier) in_language = Nested(schema.inLanguage, LanguageSchema, missing=None) keywords = fields.List(schema.keywords, fields.String(), missing=None, allow_none=True) license = fields.Uri(schema.license, missing=None, allow_none=True) title = fields.String(schema.name) url = fields.String(schema.url) version = fields.String(schema.version, missing=None) date_created = fields.DateTime(schema.dateCreated, missing=None, allow_none=True, format="iso", extra_formats=("%Y-%m-%d", )) files = Nested(schema.hasPart, DatasetFileSchema, many=True) tags = Nested(schema.subjectOf, DatasetTagSchema, many=True) same_as = Nested(schema.sameAs, UrlSchema, missing=None) name = fields.String(schema.alternateName) @pre_dump def fix_datetimes(self, obj, many=False, **kwargs): """Pre dump hook.""" if many: return [self.fix_datetimes(o, many=False, **kwargs) for o in obj] obj.date_published = self._fix_timezone(obj.date_published) obj.date_created = self._fix_timezone(obj.date_created) return obj
class PersonSchemaV3(JsonLDSchema): """Person schema.""" class Meta: """Meta class.""" rdf_type = [prov.Person, schema.Person] model = Person unknown = EXCLUDE _id = fields.Id() name = fields.String(schema.name) email = fields.String(schema.email, missing=None) label = fields.String(rdfs.label) affiliation = fields.String(schema.affiliation, missing=None) alternate_name = fields.String(schema.alternateName, missing=None) @post_load def make_instance(self, data, **kwargs): """Transform loaded dict into corresponding object.""" instance = JsonLDSchema.make_instance(self, data, **kwargs) instance = Person._fix_person_id(instance) return instance
class ProjectSchema(JsonLDSchema): """Project Schema.""" class Meta: """Meta class.""" rdf_type = [schema.Project, prov.Location] model = Project unknown = EXCLUDE name = fields.String(schema.name, missing=None) created = fields.DateTime(schema.dateCreated, missing=None, format="iso", extra_formats=("%Y-%m-%d",)) version = fields.String(schema.schemaVersion, missing=1) agent_version = fields.String(schema.agent, missing="pre-0.11.0") creator = Nested(schema.creator, PersonSchema, missing=None) _id = fields.Id(init_name="id", missing=None) @pre_dump def fix_datetimes(self, obj, many=False, **kwargs): """Pre dump hook.""" if many: return [self.fix_datetimes(o, many=False, **kwargs) for o in obj] obj.created = self._fix_timezone(obj.created) return obj
class DatasetSchema(EntitySchema, CreatorMixinSchema): """Dataset schema.""" class Meta: """Meta class.""" rdf_type = schema.Dataset model = Dataset unknown = EXCLUDE _id = fields.Id(init_name='id', missing=None) _label = fields.String(rdfs.label, init_name='label', missing=None) date_published = fields.DateTime(schema.datePublished, missing=None) description = fields.String(schema.description, missing=None) identifier = fields.String(schema.identifier) in_language = fields.Nested( schema.inLanguage, LanguageSchema, missing=None ) keywords = fields.List(schema.keywords, fields.String()) license = fields.Uri(schema.license, missing=None, allow_none=True) name = fields.String(schema.name) url = fields.String(schema.url) version = fields.String(schema.version, missing=None) created = fields.DateTime(schema.dateCreated, missing=None) files = fields.Nested(schema.hasPart, DatasetFileSchema, many=True) tags = fields.Nested(schema.subjectOf, DatasetTagSchema, many=True) same_as = fields.Nested(schema.sameAs, UrlSchema, missing=None) short_name = fields.String(schema.alternateName) @pre_load def fix_files_context(self, data, **kwargs): """Fix DatasetFile context for _label and external fields.""" context = None if '@context' not in data: return data context = data['@context'] if not isinstance(context, dict) or 'files' not in context: return data context.setdefault('rdfs', 'http://www.w3.org/2000/01/rdf-schema#') files = data['@context']['files'] if not isinstance(files, dict) or '@context' not in files: return data context = files['@context'] context.setdefault('rdfs', 'http://www.w3.org/2000/01/rdf-schema#') context.setdefault('_label', 'rdfs:label') context.setdefault('external', 'renku:external') context.setdefault( 'renku', 'https://swissdatasciencecenter.github.io/renku-ontology#' ) return data @pre_load def migrate_types(self, data, **kwargs): """Fix types.""" from renku.core.utils.migrate import migrate_types return migrate_types(data)