69 lines
3.1 KiB
Java
69 lines
3.1 KiB
Java
/**
|
||
*
|
||
*/
|
||
package org.gcube.resourcemanagement.model.reference.entities.facets;
|
||
|
||
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||
import org.gcube.informationsystem.model.reference.entities.Facet;
|
||
import org.gcube.informationsystem.types.annotations.ISProperty;
|
||
import org.gcube.informationsystem.types.reference.Change;
|
||
import org.gcube.informationsystem.types.reference.TypeMetadata;
|
||
import org.gcube.informationsystem.utils.TypeVersion;
|
||
import org.gcube.resourcemanagement.model.impl.entities.facets.SchemaFacetImpl;
|
||
import org.gcube.resourcemanagement.model.reference.properties.ValueSchema;
|
||
|
||
/**
|
||
* SchemaFacet captures information on any schema,
|
||
* i.e., a vocabulary used to validate a document associated with a resource.
|
||
*
|
||
* Examples of schema are JavaScript Object Notation (JSON) schema and XML schema.
|
||
*
|
||
* JSON schema "is a vocabulary that allows you to annotate and validate JSON documents".
|
||
* JSON schema is under standardisation by Internet Engineering Task force (IETF)
|
||
* (see references at https://json-schema.org/specification.html).
|
||
* XSD defines the legal building blocks of an XML document.
|
||
* DTD defines the structure and the legal elements and attributes of an XML document.
|
||
*
|
||
* https://wiki.gcube-system.org/gcube/GCube_Model#Schema_Facet
|
||
*
|
||
* @author Luca Frosini (ISTI - CNR)
|
||
*/
|
||
@JsonDeserialize(as=SchemaFacetImpl.class)
|
||
@TypeMetadata(
|
||
name = SchemaFacet.NAME,
|
||
description = "SchemaFacet captures information on any schema, "
|
||
+ "i.e., a vocabulary used to validate a document associated with a resource. "
|
||
+ "Examples of schema are JavaScript Object Notation (JSON) schema and XML schema. "
|
||
+ "JSON schema \"is a vocabulary that allows you to annotate and validate JSON documents\". "
|
||
+ "JSON schema is under standardisation by Internet Engineering Task force (IETF) "
|
||
+ "(see references at https://json-schema.org/specification.html). "
|
||
+ "XSD defines the legal building blocks of an XML document. "
|
||
+ "DTD defines the structure and the legal elements and attributes of an XML document.",
|
||
version = TypeVersion.MINIMAL_VERSION_STRING
|
||
)
|
||
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
|
||
public interface SchemaFacet extends Facet {
|
||
|
||
public static final String NAME = "SchemaFacet"; // SchemaFacet.class.getSimpleName();
|
||
|
||
public static final String NAME_PROPERTY = "name";
|
||
|
||
@ISProperty(name=NAME_PROPERTY, description = "Schema Name", mandatory=true, nullable=false)
|
||
public String getName();
|
||
|
||
public void setName(String name);
|
||
|
||
@ISProperty(description = "Schema Description", mandatory=true, nullable=false)
|
||
public String getDescription();
|
||
|
||
public void setDescription(String description);
|
||
|
||
@ISProperty(description = "The 'value' property contains the defined 'schema' "
|
||
+ "that in turn is validated by the schema available at the URL indicated in the ’schema’ property. "
|
||
+ "An example could be an XSD schema instantiation as 'value' and the URL of the DTD defining the XSD as 'schema' "
|
||
+ "i.e., https://www.w3.org/2009/XMLSchema/XMLSchema.dtd.")
|
||
public ValueSchema getSchema();
|
||
|
||
public void setSchema(ValueSchema schema);
|
||
|
||
} |