예제 #1
0
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)
예제 #2
0
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
예제 #3
0
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)
예제 #4
0
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")
예제 #5
0
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)
예제 #6
0
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)
예제 #7
0
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)
예제 #8
0
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])
예제 #9
0
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)
예제 #10
0
파일: run.py 프로젝트: ltalirz/renku-python
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)
예제 #11
0
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)
예제 #12
0
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)
예제 #13
0
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)
예제 #14
0
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)
예제 #15
0
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)
예제 #16
0
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')
예제 #17
0
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
예제 #18
0
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
예제 #19
0
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
예제 #20
0
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)