Adding descriptions to auto-document model

This commit is contained in:
Luca Frosini 2020-12-21 13:59:53 +01:00
parent 714086096f
commit fcf73ad9bc
76 changed files with 893 additions and 562 deletions

View File

@ -1,20 +0,0 @@
/**
*
*/
package org.gcube.resourcemanagement.model.impl.entities.facets;
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
import org.gcube.resourcemanagement.model.reference.entities.facets.ContainerStateFacet;
/**
* @author Luca Frosini (ISTI - CNR)
*/
@JsonTypeName(value=ContainerStateFacet.NAME)
public class ContainerStateFacetImpl extends StateFacetImpl implements ContainerStateFacet {
/**
* Generated Serial version UID
*/
private static final long serialVersionUID = 6795158357114843672L;
}

View File

@ -3,11 +3,10 @@
*/
package org.gcube.resourcemanagement.model.impl.entities.facets;
import java.net.URI;
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
import org.gcube.informationsystem.model.impl.entities.FacetImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.CoverageFacet;
import org.gcube.resourcemanagement.model.reference.properties.ValueSchema;
/**
* @author Luca Frosini (ISTI - CNR)
@ -20,40 +19,16 @@ public class CoverageFacetImpl extends FacetImpl implements CoverageFacet {
*/
private static final long serialVersionUID = -7590997566136002521L;
protected String value;
protected URI schema;
protected ValueSchema coverage;
/**
* @return the value
*/
@Override
public String getValue() {
return value;
public ValueSchema getCoverage() {
return coverage;
}
/**
* @param value the value to set
*/
@Override
public void setValue(String value) {
this.value = value;
public void setCoverage(ValueSchema coverage) {
this.coverage = coverage;
}
/**
* @return the schema
*/
@Override
public URI getSchema() {
return schema;
}
/**
* @param schema the schema to set
*/
@Override
public void setSchema(URI schema) {
this.schema = schema;
}
}
}

View File

@ -3,11 +3,10 @@
*/
package org.gcube.resourcemanagement.model.impl.entities.facets;
import java.net.URI;
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
import org.gcube.informationsystem.model.impl.entities.FacetImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.DescriptiveMetadataFacet;
import org.gcube.resourcemanagement.model.reference.properties.ValueSchema;
/**
* @author Luca Frosini (ISTI - CNR)
@ -20,39 +19,16 @@ public class DescriptiveMetadataFacetImpl extends FacetImpl implements Descripti
*/
private static final long serialVersionUID = -8373583843673756878L;
protected String value;
protected URI schema;
/**
* @return the value
*/
protected ValueSchema metadata;
@Override
public String getValue() {
return value;
public ValueSchema getMetadata() {
return metadata;
}
/**
* @param value the value to set
*/
@Override
public void setValue(String value) {
this.value = value;
}
/**
* @return the schema
*/
@Override
public URI getSchema() {
return schema;
}
/**
* @param schema the schema to set
*/
@Override
public void setSchema(URI schema) {
this.schema = schema;
public void setMetadata(ValueSchema metadata) {
this.metadata = metadata;
}
}
}

View File

@ -3,66 +3,41 @@
*/
package org.gcube.resourcemanagement.model.impl.entities.facets;
import java.net.URI;
import java.util.Date;
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
import org.gcube.informationsystem.model.impl.entities.FacetImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.EventFacet;
import org.gcube.resourcemanagement.model.reference.properties.ValueSchema;
/**
* @author Luca Frosini (ISTI - CNR)
*/
@JsonTypeName(value=EventFacet.NAME)
@JsonTypeName(value = EventFacet.NAME)
public class EventFacetImpl extends FacetImpl implements EventFacet {
/**
* Generated Serial version UID
*/
private static final long serialVersionUID = -4130548762073254058L;
protected Date date;
protected String value;
protected URI schema;
public Date getDate(){
protected ValueSchema event;
public Date getDate() {
return this.date;
}
public void setDate(Date date) {
this.date = date;
}
/**
* @return the value
*/
@Override
public String getValue() {
return value;
public ValueSchema getEvent() {
return event;
}
/**
* @param value the value to set
*/
@Override
public void setValue(String value) {
this.value = value;
public void setEvent(ValueSchema event) {
this.event = event;
}
/**
* @return the schema
*/
@Override
public URI getSchema() {
return schema;
}
/**
* @param schema the schema to set
*/
@Override
public void setSchema(URI schema) {
this.schema = schema;
}
}
}

View File

@ -1,41 +0,0 @@
/**
*
*/
package org.gcube.resourcemanagement.model.impl.entities.facets;
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
import org.gcube.informationsystem.model.reference.properties.Property;
import org.gcube.resourcemanagement.model.reference.entities.facets.JSONSchemaFacet;
/**
* @author Luca Frosini (ISTI - CNR)
*/
@JsonTypeName(value=JSONSchemaFacet.NAME)
public class JSONSchemaFacetImpl extends SchemaFacetImpl implements JSONSchemaFacet {
/**
* Generated Serial version UID
*/
private static final long serialVersionUID = 2196637871529229113L;
protected Property content;
/**
* @return the content
*/
@Override
public Property getContent() {
return content;
}
/**
* @param content the property to set
*/
@Override
public void setContent(Property content) {
this.content = content;
}
}

View File

@ -3,12 +3,12 @@
*/
package org.gcube.resourcemanagement.model.impl.entities.facets;
import java.net.URI;
import java.util.UUID;
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
import org.gcube.informationsystem.model.impl.entities.FacetImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.ProvenanceFacet;
import org.gcube.resourcemanagement.model.reference.properties.ValueSchema;
/**
* @author Luca Frosini (ISTI - CNR)
@ -23,8 +23,7 @@ public class ProvenanceFacetImpl extends FacetImpl implements ProvenanceFacet {
protected Relationship relationship;
protected UUID reference;
protected String document;
protected URI documentSchema;
protected ValueSchema document;
/**
* @return the relationship
@ -61,7 +60,7 @@ public class ProvenanceFacetImpl extends FacetImpl implements ProvenanceFacet {
* @return the document
*/
@Override
public String getDocument() {
public ValueSchema getDocument() {
return document;
}
@ -69,24 +68,8 @@ public class ProvenanceFacetImpl extends FacetImpl implements ProvenanceFacet {
* @param document the document to set
*/
@Override
public void setDocument(String document) {
public void setDocument(ValueSchema document) {
this.document = document;
}
/**
* @return the documentSchema
*/
@Override
public URI getDocumentSchema() {
return documentSchema;
}
/**
* @param documentSchema the documentSchema to set
*/
@Override
public void setDocumentSchema(URI documentSchema) {
this.documentSchema = documentSchema;
}
}

View File

@ -3,11 +3,10 @@
*/
package org.gcube.resourcemanagement.model.impl.entities.facets;
import java.net.URL;
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
import org.gcube.informationsystem.model.impl.entities.FacetImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.SchemaFacet;
import org.gcube.resourcemanagement.model.reference.properties.ValueSchema;
/**
* @author Luca Frosini (ISTI - CNR)
@ -22,7 +21,7 @@ public class SchemaFacetImpl extends FacetImpl implements SchemaFacet {
protected String name;
protected String description;
protected URL schemaURL;
protected ValueSchema schema;
/**
* @return the name
@ -60,16 +59,16 @@ public class SchemaFacetImpl extends FacetImpl implements SchemaFacet {
* @return the schemaURL
*/
@Override
public URL getSchemaURL() {
return schemaURL;
public ValueSchema getSchema() {
return schema;
}
/**
* @param schemaURL the schemaURL to set
*/
@Override
public void setSchemaURL(URL schemaURL) {
this.schemaURL = schemaURL;
public void setSchema(ValueSchema schema) {
this.schema = schema;
}
}

View File

@ -1,20 +0,0 @@
/**
*
*/
package org.gcube.resourcemanagement.model.impl.entities.facets;
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
import org.gcube.resourcemanagement.model.reference.entities.facets.ServiceStateFacet;
/**
* @author Luca Frosini (ISTI - CNR)
*/
@JsonTypeName(value=ServiceStateFacet.NAME)
public class ServiceStateFacetImpl extends StateFacetImpl implements ServiceStateFacet {
/**
* Generated Serial version UID
*/
private static final long serialVersionUID = -5718134380884679550L;
}

View File

@ -1,40 +0,0 @@
/**
*
*/
package org.gcube.resourcemanagement.model.impl.entities.facets;
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
import org.gcube.resourcemanagement.model.reference.entities.facets.XSDSchemaFacet;
/**
* @author Luca Frosini (ISTI - CNR)
*/
@JsonTypeName(value=XSDSchemaFacet.NAME)
public class XSDSchemaFacetImpl extends SchemaFacetImpl implements XSDSchemaFacet {
/**
* Generated Serial version UID
*/
private static final long serialVersionUID = -4625288950871784583L;
protected String content;
/**
* @return the content
*/
@Override
public String getContent() {
return content;
}
/**
* @param content the content to set
*/
@Override
public void setContent(String content) {
this.content = content;
}
}

View File

@ -15,13 +15,21 @@ import org.gcube.informationsystem.utils.TypeVersion;
import org.gcube.resourcemanagement.model.impl.entities.facets.AccessPointFacetImpl;
/**
* @author Luca Frosini (ISTI - CNR)
* AccessPointFacet captures information on an 'access point' of a resource,
* i.e., any web-based endpoint to programmatically interact with the resource via a known protocol.
* For example, it is used to define the network endpoint to contact the service.
* The endpoint can expose a well-known high-level protocol.
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Access_Point_Facet
*
* @author Luca Frosini (ISTI - CNR)
*/
@JsonDeserialize(as=AccessPointFacetImpl.class)
@TypeMetadata(
name = AccessPointFacet.NAME,
description = "This facet is expected to capture information on \"access points\" for a resource, i.e. any endpoint to interact with the resource via a known protocol.",
description = "AccessPointFacet captures information on an 'access point' of a resource, i.e., "
+ "any web-based endpoint to programmatically interact with the resource via a known protocol.\n"
+ "For example, it is used to define the network endpoint to contact the service.\n"
+ "The endpoint can expose a well-known high-level protocol.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
@ -31,27 +39,44 @@ public interface AccessPointFacet extends Facet {
public static final String ENDPOINT_PROPERTY = "endpoint";
@ISProperty
/**
* A distinguishing string to be used by clients to identify the access point of interest.
* @return
*/
@ISProperty(description = "A distinguishing string to be used by clients to identify the access point of interest.")
public String getEntryName();
public void setEntryName(String entryName);
@ISProperty(name=ENDPOINT_PROPERTY, mandatory=true, nullable=false)
/**
* The URI which characterises the specific endpoint instance.
* @return
*/
@ISProperty(name=ENDPOINT_PROPERTY, description = "The URI which characterises the specific endpoint instance.", mandatory=true, readonly = true, nullable=false)
public URI getEndpoint();
public void setEndpoint(URI endpoint);
@ISProperty
/**
* The high-level protocol used by the access point. The String could contain the version if needed.
* e.g., Web Map Service (WMS) and not HyperText Transfer Protocol (HTTP) which is already contained in the URI.
* @return
*/
@ISProperty(description = "The high-level protocol used by the access point. The String could contain the version if needed. e.g., Web Map Service (WMS) and not HyperText Transfer Protocol (HTTP) which is already contained in the URI.")
public String getProtocol();
public void setProtocol(String protocol);
@ISProperty
/**
* A human-oriented text accompanying the access point
* @return
*/
@ISProperty(description = "A human-oriented text accompanying the access point.")
public String getDescription();
public void setDescription(String description);
@ISProperty
@ISProperty(description = "Contains authorisation information. e.g., a token, the couple username:password, etc.")
public Property getAuthorization();
public void setAuthorization(Property authorization);

View File

@ -10,15 +10,25 @@ 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.CPUFacetImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.HostingNode;
/**
* @author Luca Frosini (ISTI - CNR)
* CPUFacet captures information on the Central Processing Unit (CPU) of the
* resource it is associated with. A resource which needs to indicate a
* multi-processor/multi-core CPU will consist of more than one CPUFacet.
* Even if more than one CPUFacet is associated with a resource
* (i.e., an {@link HostingNode}), we did not find any reason to differentiate the CPUs.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#CPU_Facet
*
* @author Luca Frosini (ISTI - CNR)
*/
@JsonDeserialize(as=CPUFacetImpl.class)
@TypeMetadata(
name = CPUFacet.NAME,
description = "Describes CPU information.",
description = "CPUFacet captures information on the Central Processing Unit (CPU) of the resource it is associated with.\n"
+ "A resource which needs to indicate a multi-processor/multi-core CPU will consist of more than one CPUFacet.\n"
+ "Even if more than one CPUFacet is associated with a resource (i.e., an {@link HostingNode}), we did not find any reason to differentiate the CPUs.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
@ -26,19 +36,19 @@ public interface CPUFacet extends Facet {
public static final String NAME = "CPUFacet"; //CPUFacet.class.getSimpleName();
@ISProperty(mandatory=true, nullable=false)
@ISProperty(description = "CPU Model", mandatory=true, nullable=false)
public String getModel();
public void setModel(String model);
@ISProperty(mandatory=true, nullable=false)
@ISProperty(description = "CPU Vendor", mandatory=true, nullable=false)
public String getVendor();
public void setVendor(String vendor);
@ISProperty(mandatory=true, nullable=false)
@ISProperty(description = "Clock speed expressed with the unit, e.g., 1 GHz.", mandatory=true, nullable=false)
public String getClockSpeed();
public void setClockSpeed(String clockSpeed);
}
}

View File

@ -12,13 +12,22 @@ import org.gcube.informationsystem.utils.TypeVersion;
import org.gcube.resourcemanagement.model.impl.entities.facets.CapabilityFacetImpl;
/**
* CapabilityFacet captures a defined facility to perform a specified task supported by a given Resource.
* It is mainly used to provide a human-readable description of the capabilities of a resource
* (e.g., the support for transactions of an electronic device or some non-functional
* properties of a service like its replicability to support High-Availability (HA)).
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Capability_Facet
*
* @author Luca Frosini (ISTI - CNR)
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Contact_Facet
*/
@JsonDeserialize(as=CapabilityFacetImpl.class)
@TypeMetadata(
name = CapabilityFacet.NAME,
description = "This facet is expected to capture a defined facility for performing a specified task supported by a given Service or Software.",
description = "CapabilityFacet captures a defined facility for performing a specified task supported by a given Resource.\n"
+ "It is mainly used to provide a human-readable description of the capabilities of a resource "
+ "(e.g., the support for transactions of an electronic device or some non-functional "
+ "properties of a service like its replicability to support High-Availability (HA)).",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
@ -26,17 +35,17 @@ public interface CapabilityFacet extends Facet {
public static final String NAME = "CapabilityFacet"; // CapabilityFacet.class.getSimpleName();
@ISProperty(mandatory=true, nullable=false)
@ISProperty(description = "The distinguishing name of the capability.", mandatory=true, nullable=false)
public String getName();
public void setName(String name);
@ISProperty
@ISProperty(description = "A human oriented description of the capability.")
public String getDescription();
public void setDescription(String description);
@ISProperty
@ISProperty(description = "A string used to specialise the capability.")
public String getQualifier();
public void setQualifier(String qualifier);

View File

@ -12,13 +12,20 @@ import org.gcube.informationsystem.utils.TypeVersion;
import org.gcube.resourcemanagement.model.impl.entities.facets.ContactFacetImpl;
/**
* @author Luca Frosini (ISTI - CNR)
* ContactFacet captures information on a point of contact for the resource,
* i.e., a person or a department serving as the coordinator or focal point
* of information concerning the resource.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Contact_Facet
*
* @author Luca Frosini (ISTI - CNR)
*/
@JsonDeserialize(as=ContactFacetImpl.class)
@TypeMetadata(
name = ContactFacet.NAME,
description = "This facet is expected to capture contact information.",
description = "ContactFacet captures information on a point of contact for the resource, "
+ "i.e., a person or a department serving as the coordinator or focal point "
+ "of information concerning the resource.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
@ -30,27 +37,27 @@ public interface ContactFacet extends Facet {
public static final String EMAIL_PATTERN = "^[a-z0-9._%+-]{1,128}@[a-z0-9.-]{1,128}$";
@ISProperty
@ISProperty(description = "A name describing the profession or marital status of the point of contact. e.g., Dr, Mrs, Mr.")
public String getTitle();
public void setTitle(String title);
@ISProperty(mandatory=true, nullable=false)
@ISProperty(description = "First Name", mandatory=true, nullable=false)
public String getName();
public void setName(String name);
@ISProperty
@ISProperty(description = "Middle Name")
public String getMiddleName();
public void setMiddleName(String middleName);
@ISProperty(mandatory=true, nullable=false)
@ISProperty(description = "Surname", mandatory=true, nullable=false)
public String getSurname();
public void setSurname(String surname);
@ISProperty(name=EMAIL_PROPERTY, mandatory=true, nullable=false, regexpr=EMAIL_PATTERN)
@ISProperty(description = "Email address", name=EMAIL_PROPERTY, mandatory=true, nullable=false, regexpr=EMAIL_PATTERN)
public String getEMail();
public void setEMail(String eMail);

View File

@ -14,13 +14,18 @@ import org.gcube.informationsystem.utils.TypeVersion;
import org.gcube.resourcemanagement.model.impl.entities.facets.ContactReferenceFacetImpl;
/**
* @author Luca Frosini (ISTI - CNR)
* ContactReferenceFacet captures information on the primary and
* authoritative contact for the resource it is associated with.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Contact_Reference_Facet
*
* @author Luca Frosini (ISTI - CNR)
*/
@JsonDeserialize(as=ContactReferenceFacetImpl.class)
@TypeMetadata(
name = ContactReferenceFacet.NAME,
description = "This facet is expected to capture extended contact information",
description = "ContactReferenceFacet captures information on the primary "
+ "and authoritative contact for the resource it is associated with.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
@ -28,17 +33,17 @@ public interface ContactReferenceFacet extends Facet {
public static final String NAME = "ContactReferenceFacet"; // ContactReferenceFacet.class.getSimpleName();
@ISProperty
@ISProperty(description = "The main website")
public URL getWebsite();
public void setWebsite(URL website);
@ISProperty
@ISProperty(description = "A physical address")
public String getAddress();
public void setAddress(String address);
@ISProperty
@ISProperty(description = "A phone number")
public String getPhoneNumber();
public void setPhoneNumber(String phoneNumber);

View File

@ -1,28 +0,0 @@
/**
*
*/
package org.gcube.resourcemanagement.model.reference.entities.facets;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
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.ContainerStateFacetImpl;
/**
* @author Luca Frosini (ISTI - CNR)
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Container_State_Facet
*/
@JsonDeserialize(as=ContainerStateFacetImpl.class)
@TypeMetadata(
name = ContainerStateFacet.NAME,
description = "Container State Information",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface ContainerStateFacet extends StateFacet {
public static final String NAME = "ContainerStateFacet"; // ContainerStateFacet.class.getSimpleName();
}

View File

@ -3,8 +3,6 @@
*/
package org.gcube.resourcemanagement.model.reference.entities.facets;
import java.net.URI;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.entities.Facet;
import org.gcube.informationsystem.types.annotations.ISProperty;
@ -12,15 +10,32 @@ 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.CoverageFacetImpl;
import org.gcube.resourcemanagement.model.reference.properties.ValueSchema;
/**
* @author Luca Frosini (ISTI - CNR)
* CoverageFacet captures information on the extent of the resource,
* i.e., any aspect aiming at capturing an indicator of the amount/area
* the resource covers be it a geospatial area, a temporal area, or any other "area".
*
* Let consider a dataset containing information regarding the salinity of a specific
* ocean area in a certain amount of time. What is essential in the information system is
* not representing the data of the salinity. Instead, to specify the temporal period and the
* ocean area the dataset is valid. This information is captured by the CoverageFacet.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Coverage_Facet
*
* @author Luca Frosini (ISTI - CNR)
*/
@JsonDeserialize(as=CoverageFacetImpl.class)
@TypeMetadata(
name = CoverageFacet.NAME,
description = "Collect any \\\"extent\\\"-related information.",
description = "CoverageFacet captures information on the extent of the resource, "
+ "i.e., any aspect aiming at capturing an indicator of the amount/area "
+ "the resource covers be it a geospatial area, a temporal area, or any other 'area'.\n"
+ "Let consider a dataset containing information regarding the salinity of a specific "
+ "ocean area in a certain amount of time. What is essential in the information system is "
+ "not representing the data of the salinity. Instead, to specify the temporal period and the"
+ "ocean area the dataset is valid. This information is captured by the CoverageFacet.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
@ -28,14 +43,9 @@ public interface CoverageFacet extends Facet {
public static final String NAME = "CoverageFacet"; // CoverageFacet.class.getSimpleName();
@ISProperty(mandatory=true, nullable=false)
public String getValue();
@ISProperty(description = "he value indicates the 'area' covered by the dataset according to the schema", mandatory=true, nullable=false)
public ValueSchema getCoverage();
public void setValue(String value);
@ISProperty(mandatory=true, nullable=false)
public URI getSchema();
public void setSchema(URI schema);
public void setCoverage(ValueSchema coverage);
}

View File

@ -3,8 +3,6 @@
*/
package org.gcube.resourcemanagement.model.reference.entities.facets;
import java.net.URI;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.entities.Facet;
import org.gcube.informationsystem.types.annotations.ISProperty;
@ -12,15 +10,22 @@ 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.DescriptiveMetadataFacetImpl;
import org.gcube.resourcemanagement.model.reference.properties.ValueSchema;
/**
* @author Luca Frosini (ISTI - CNR)
* DescriptiveMetadataFacet captures information on descriptive metadata
* to be associated with the resource.
* This facet is mainly used to attach metadata to a Dataset.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Descriptive_Metadata_Facet
*
* @author Luca Frosini (ISTI - CNR)
*/
@JsonDeserialize(as=DescriptiveMetadataFacetImpl.class)
@TypeMetadata(
name = DescriptiveMetadataFacet.NAME,
description = "Collect any descriptive metadata about the resource.",
description = "DescriptiveMetadataFacet captures information on descriptive metadata to be associated with the resource.\n"
+ "This facet is mainly used to attach metadata to a Dataset.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
@ -28,14 +33,9 @@ public interface DescriptiveMetadataFacet extends Facet {
public static final String NAME = "DescriptiveMetadataFacet"; // DescriptiveMetadataFacet.class.getSimpleName();
@ISProperty(mandatory=true, nullable=false)
public String getValue();
@ISProperty(description = "A metadata record representing the descriptive metadata according to the schema", mandatory=true, nullable=false)
public ValueSchema getMetadata();
public void setValue(String value);
public void setMetadata(ValueSchema metadata);
@ISProperty(mandatory=true, nullable=false)
public URI getSchema();
public void setSchema(URI schema);
}
}

View File

@ -3,7 +3,6 @@
*/
package org.gcube.resourcemanagement.model.reference.entities.facets;
import java.net.URI;
import java.util.Date;
import org.gcube.com.fasterxml.jackson.annotation.JsonFormat;
@ -15,37 +14,38 @@ 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.EventFacetImpl;
import org.gcube.resourcemanagement.model.reference.properties.ValueSchema;
/**
* @author Luca Frosini (ISTI - CNR)
* EventFacet captures information on a certain event/happening characterising the life cycle of the resource.
*
* Examples of an event are the start time of a virtual machine or the activation time of an electronic service.
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Event_Facet
*
* @author Luca Frosini (ISTI - CNR)
*/
@JsonDeserialize(as=EventFacetImpl.class)
@TypeMetadata(
name = EventFacet.NAME,
description = "This Facet collect information on happened events.",
description = "EventFacet captures information on a certain event/happening characterising the life cycle of the resource.\n"
+ "Examples of an event are the start time of a virtual machine or the activation time of an electronic service.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface EventFacet extends Facet {
public static final String NAME = "EventFacet"; // EventFacet.class.getSimpleName();
public static final String DESCRIPTION = "Event Facet";
public static final String VERSION = "1.0.0";
@JsonFormat(shape= JsonFormat.Shape.STRING, pattern = Element.DATETIME_PATTERN)
@ISProperty(mandatory=true, nullable=false)
@ISProperty(description = "The time the event took place/occurred", mandatory=true, nullable=false)
public Date getDate();
public void setDate(Date date);
@ISProperty(mandatory=true, nullable=false)
public String getValue();
@ISProperty(description = "The typology of event according to the schema", mandatory=true, nullable=false)
public ValueSchema getEvent();
public void setValue(String value);
public void setEvent(ValueSchema event);
@ISProperty
public URI getSchema();
public void setSchema(URI schema);
}
}

View File

@ -12,22 +12,23 @@ import org.gcube.informationsystem.utils.TypeVersion;
import org.gcube.resourcemanagement.model.impl.entities.facets.IdentifierFacetImpl;
/**
* @author Luca Frosini (ISTI - CNR)
* IdentifierFacet captures information on identifiers (other than the
* ones automatically generated by the system) that can be attached to a resource.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Identifier_Facet
*
* Changelog (only model changes are logged here. Not implementation details)
*
* - 1.0.1 Added STRING in IdentificationType
* OrientDB Schema requires this changes
* - ALTER PROPERTY IdentifierFacet.type REGEXP '^(URI|DOI|IRI|URL|URN|UUID|STRING)$'
* - UPDATE FacetType SET properties=.... WHERE name='IdentifierFacet'
* - 1.0.1 Added STRING in IdentificationType enum.
* - 1.0.0 First version
*
* @author Luca Frosini (ISTI - CNR)
*/
@JsonDeserialize(as=IdentifierFacetImpl.class)
@TypeMetadata(
name = IdentifierFacet.NAME,
description = "This facet collects information on Identifiers that can be attached to a resource.",
description = "IdentifierFacet captures information on identifiers (other than the ones "
+ "automatically generated by the system) that can be attached to a resource.",
version = "1.0.1"
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
@ -36,26 +37,23 @@ public interface IdentifierFacet extends Facet {
public static final String NAME = "IdentifierFacet"; // IdentifierFacet.class.getSimpleName();
public static final String VALUE_PROPERTY = "value";
public static final String TYPE_PROPERTY = "type";
public enum IdentificationType {
URI, DOI, IRI, URL, URN, UUID, STRING
}
@ISProperty(name=VALUE_PROPERTY, mandatory=true, nullable=false)
@ISProperty(description = "The identifier", mandatory=true, nullable=false)
public String getValue();
public void setValue(String value);
@ISProperty(name=TYPE_PROPERTY, mandatory=true, nullable=false)
@ISProperty(description = "The typology of identifier", mandatory=true, nullable=false)
public IdentificationType getType();
public void setType(IdentificationType type);
@ISProperty
@ISProperty(description = "To indicate whether the identifier is persistent or not")
public boolean isPersistent();
public void setPersistent(boolean persistent);
}
}

View File

@ -1,34 +0,0 @@
/**
*
*/
package org.gcube.resourcemanagement.model.reference.entities.facets;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.properties.Property;
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.JSONSchemaFacetImpl;
/**
* @author Luca Frosini (ISTI - CNR)
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#XSD_Schema_Facet
*/
@JsonDeserialize(as=JSONSchemaFacetImpl.class)
@TypeMetadata(
name = JSONSchemaFacet.NAME,
description = "rovide a way to store a JSON Schema",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface JSONSchemaFacet extends SchemaFacet {
public static final String NAME = "JSONSchemaFacet"; // JSONSchemaFacet.class.getSimpleName();
@ISProperty(mandatory=true, nullable=false)
public Property getContent();
public void setContent(Property content);
}

View File

@ -14,13 +14,31 @@ import org.gcube.informationsystem.utils.TypeVersion;
import org.gcube.resourcemanagement.model.impl.entities.facets.LicenseFacetImpl;
/**
* @author Luca Frosini (ISTI - CNR)
* LicenseFacet captures information on any license associated with the
* resource to capture the policies governing its exploitation and use.
*
* Example of use is the licence of a dataset e.g., Creative Commons Attribution (CC-BY)
* or the licence of software such as GPL.
* This facet is used to provide for human knowledge, but it is not excluded the usage
* by infrastructure services which enforces the respect of the licence e.g., a service which
* denies the usage of a dataset with Creative Commons Attribution No-Derivatives (CC-BY-ND)
* licence to produce a new dataset.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#License_Facet
*
* @author Luca Frosini (ISTI - CNR)
*/
@JsonDeserialize(as=LicenseFacetImpl.class)
@TypeMetadata(
name = LicenseFacet.NAME,
description = "License information.",
description = "LicenseFacet captures information on any license associated with the resource to capture "
+ "the policies governing its exploitation and use.\n"
+ "Example of use is the licence of a dataset e.g., Creative Commons Attribution (CC-BY) "
+ "or the licence of software such as GPL.\n"
+ "This facet is used to provide for human knowledge, but it is not excluded the usage "
+ "by infrastructure services which enforces the respect of the licence e.g., a service which "
+ "denies the usage of a dataset with Creative Commons Attribution No-Derivatives (CC-BY-ND)"
+ "licence to produce a new dataset.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
@ -28,14 +46,12 @@ public interface LicenseFacet extends Facet {
public static final String NAME = "LicenseFacet"; // LicenseFacet.class.getSimpleName();
public static final String TEXT_URL_PROPERTY = "textURL";
@ISProperty(mandatory=true, nullable=false)
@ISProperty(description = "The common name of the license. e.g., European Union Public Licence (EUPL) 1.1, GNU General Public License (GPL) 2, Berkeley Software Distribution (BSD), Common Creative (CC).", mandatory=true, nullable=false)
public String getName();
public void setName(String name);
@ISProperty(name=TEXT_URL_PROPERTY, mandatory=true, nullable=false)
@ISProperty(description = "The URL to the actual text of the license.", mandatory=true, nullable=false)
public URL getTextURL();
public void setTextURL(URL textURL);

View File

@ -12,13 +12,28 @@ import org.gcube.informationsystem.utils.TypeVersion;
import org.gcube.resourcemanagement.model.impl.entities.facets.LocationFacetImpl;
/**
* @author Luca Frosini (ISTI - CNR)
* LocationFacet captures information on a physical area characterising the resource it
* is associated with. This should not be confused with {@link CoverageFacet}
* The LocationFacet provides information of a location (eventually using
* latitude and longitude), instead {@link CoverageFacet} provide a way to to define the spatial
* or the temporal extent the resource represent.
*
* It is mainly used to locate a data centre or to the geographic references of a
* legal body playing the role of an actor in the infrastructure.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Location_Facet
*
* @author Luca Frosini (ISTI - CNR)
*/
@JsonDeserialize(as=LocationFacetImpl.class)
@TypeMetadata(
name = LocationFacet.NAME,
description = "Location information",
description = "LocationFacet captures information on a physical area characterising the resource it is associated with.\n"
+ "This should not be confused with {@link CoverageFacet}.\n"
+ "The LocationFacet provides information of a location (eventually using latitude and longitude), "
+ "instead {@link CoverageFacet} provide a way to to define the spatial or the temporal extent the resource represent.\n"
+ "It is mainly used to locate a data centre or to the geographic references of a legal body playing "
+ "the role of an actor in the infrastructure.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
@ -26,24 +41,24 @@ public interface LocationFacet extends Facet {
public static final String NAME = "LocationFacet"; // LocationFacet.class.getSimpleName();
@ISProperty
@ISProperty(description = "The English name of the country")
public String getCountry();
public void setCountry(String country);
@ISProperty
@ISProperty(description = "The City name")
public String getLocation();
public void setLocation(String location);
@ISProperty()
@ISProperty(description = "Latitude")
public String getLatitude();
public void setLatitude(String latitude);
@ISProperty()
@ISProperty(description = "Longitude")
public String getLongitude();
public void setLongitude(String longitude);
}
}

View File

@ -10,15 +10,33 @@ 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.MemoryFacetImpl;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasMemory;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasPersistentMemory;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasVolatileMemory;
/**
* @author Luca Frosini (ISTI - CNR)
* MemoryFacet captures information on computer memory equipping the resource and its usage.
*
* Any resource describing a computing machine must have at least two types of memories
* i.e., persistent and volatile. For such a reason, it has been identified the ConsistsOf
* relation called {@link HasMemory}.
*
* It is in charge of the specialisation {@link HasVolatileMemory} and {@link HasPersistentMemory}
* to clarify the semantics of the memory.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Memory_Facet
*
* @author Luca Frosini (ISTI - CNR)
*/
@JsonDeserialize(as=MemoryFacetImpl.class)
@TypeMetadata(
name = MemoryFacet.NAME,
description = "Memory information",
description = "MemoryFacet captures information on computer memory equipping the resource and its usage.\n"
+ "Any resource describing a computing machine must have at least two types of memories "
+ "i.e., persistent and volatile. For such a reason, it has been identified the ConsistsOf "
+ "relation called {@link HasMemory}.\n"
+ "It is in charge of the specialisation {@link HasVolatileMemory} and {@link HasPersistentMemory} "
+ "to clarify the semantics of the memory.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)

View File

@ -12,13 +12,23 @@ import org.gcube.informationsystem.utils.TypeVersion;
import org.gcube.resourcemanagement.model.impl.entities.facets.NetworkingFacetImpl;
/**
* NetworkingFacet captures information on any (computer) network interface
* associated with the resource.
* It is mainly used to describe the network interface of a host.
* It should not be confused with the {@link AccessPointFacet}
* which instead describes the protocol and the endpoint of a web-based service.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Networking_Facet
*
* @author Luca Frosini (ISTI - CNR)
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Network_Address_Facet
*/
@JsonDeserialize(as=NetworkingFacetImpl.class)
@TypeMetadata(
name = NetworkingFacet.NAME,
description = "Networking information",
description = "NetworkingFacet captures information on any (computer) network interface associated with the resource."
+ "It is mainly used to describe the network interface of a host.\n"
+ "It should not be confused with the {@link AccessPointFacet} "
+ "which instead describes the protocol and the endpoint of a web-based service.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
@ -28,29 +38,29 @@ public interface NetworkingFacet extends Facet {
public static final String IP_ADDRESS = "IPAddress";
@ISProperty
@ISProperty(description = "Host Name")
public String getHostName();
public void setHostName(String hostName);
@ISProperty
@ISProperty(description = "Domain Name")
public String getDomainName();
public void setDomainName(String domainName);
@ISProperty(mandatory=true, nullable=false, name=IP_ADDRESS)
@ISProperty(name=IP_ADDRESS, description = "Internet Protocol (IP) Address", mandatory=true, nullable=false)
public String getIPAddress();
public void setIPAddress(String ipAddress);
@ISProperty
@ISProperty(description = "Network Mask")
public String getMask();
public void setMask(String mask);
@ISProperty
@ISProperty(description = "Broadcast Address")
public String getBroadcastAddress();
public void setBroadcastAddress(String broadcastAddress);
}
}

View File

@ -3,7 +3,6 @@
*/
package org.gcube.resourcemanagement.model.reference.entities.facets;
import java.net.URI;
import java.util.UUID;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
@ -13,15 +12,21 @@ 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.ProvenanceFacetImpl;
import org.gcube.resourcemanagement.model.reference.properties.ValueSchema;
/**
* @author Luca Frosini (ISTI - CNR)
* ProvenanceFacet captures information on provenance/lineage of the entire resource.
* It is mainly used to describe provenance information of a Dataset.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Provenance_Facet
*
* @author Luca Frosini (ISTI - CNR)
*/
@JsonDeserialize(as=ProvenanceFacetImpl.class)
@TypeMetadata(
name = ProvenanceFacet.NAME,
description = "Collect information related with resource lineage/provenance.",
description = "ProvenanceFacet captures information on provenance/lineage of the entire resource.\n"
+ "It is mainly used to describe provenance information of a Dataset.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
@ -33,24 +38,19 @@ public interface ProvenanceFacet extends Facet {
wasDerivedFrom, wasGeneratedBy /* .... */
}
@ISProperty
@ISProperty(description = "Relationship with the resource indicated by UUID.")
public Relationship getRelationship();
public void setRelationship(Relationship relationship);
@ISProperty
@ISProperty(description = "UUID of the referenced resource.")
public UUID getReference();
public void setReference(UUID reference);
@ISProperty
public String getDocument();
@ISProperty(description = "Provenance Document, e.g., an XML according to the reference schema.")
public ValueSchema getDocument();
public void setDocument(String document);
@ISProperty
public URI getDocumentSchema();
public void setDocument(ValueSchema document);
public void setDocumentSchema(URI documentSchema);
}
}

View File

@ -3,8 +3,6 @@
*/
package org.gcube.resourcemanagement.model.reference.entities.facets;
import java.net.URL;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.entities.Facet;
import org.gcube.informationsystem.types.annotations.ISProperty;
@ -12,15 +10,35 @@ 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;
/**
* @author Luca Frosini (ISTI - CNR)
* 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 http://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/Facet_Based_Resource_Model#Schema_Facet
*
* @author Luca Frosini (ISTI - CNR)
*/
@JsonDeserialize(as=SchemaFacetImpl.class)
@TypeMetadata(
name = SchemaFacet.NAME,
description = "Provide a way to store a Schema",
description = "SchemaFacet captures information on any schema, "
+ "i.e., a vocabulary used to validate a document associated with a resource.\n"
+ "Examples of schema are JavaScript Object Notation (JSON) schema and XML schema.\n"
+ "JSON schema \"is a vocabulary that allows you to annotate and validate JSON documents\".\n"
+ "JSON schema is under standardisation by Internet Engineering Task force (IETF) "
+ "(see references at http://json-schema.org/specification.html).\n"
+ "XSD defines the legal building blocks of an XML document.\n"
+ "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)
@ -30,19 +48,22 @@ public interface SchemaFacet extends Facet {
public static final String NAME_PROPERTY = "name";
@ISProperty(name=NAME_PROPERTY, mandatory=true, nullable=false)
@ISProperty(name=NAME_PROPERTY, description = "Schema Name", mandatory=true, nullable=false)
public String getName();
public void setName(String name);
@ISProperty(mandatory=true, nullable=false)
@ISProperty(description = "Schema Description", mandatory=true, nullable=false)
public String getDescription();
public void setDescription(String description);
@ISProperty
public URL getSchemaURL();
@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 setSchemaURL(URL schemaURL);
public void setSchema(ValueSchema schema);
}
}

View File

@ -1,28 +0,0 @@
/**
*
*/
package org.gcube.resourcemanagement.model.reference.entities.facets;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
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.ServiceStateFacetImpl;
/**
* @author Luca Frosini (ISTI - CNR)
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Service_State_Facet
*/
@JsonDeserialize(as=ServiceStateFacetImpl.class)
@TypeMetadata(
name = ServiceStateFacet.NAME,
description = "Service State Information",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface ServiceStateFacet extends StateFacet {
public static final String NAME = "ServiceStateFacet"; // ServiceStateFacet.class.getSimpleName();
}

View File

@ -11,13 +11,25 @@ import org.gcube.informationsystem.utils.TypeVersion;
import org.gcube.resourcemanagement.model.impl.entities.facets.SimpleFacetImpl;
/**
* @author Luca Frosini (ISTI - CNR)
* A sort of catch all.
* It does not define any property.
* It is mainly used to one or more arbitrary properties to the resource.
* Before using SimpleFacet a developer should evaluate if it is possible to identify a specific Facet
* to capture the particular aspect of the resource.
* The usage of SimpleFacet should be reduced to the maximum.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Simple_Property_Facet
*
* @author Luca Frosini (ISTI - CNR)
*/
@JsonDeserialize(as=SimpleFacetImpl.class)
@TypeMetadata(
name = SimpleFacet.NAME,
description = "A sort of catch all",
description = "A sort of catch all.\nIt does not define any property.\n"
+ "It is mainly used to one or more arbitrary properties to the resource.\n"
+ "Before using SimpleFacet a developer should evaluate if it is possible to identify a specific Facet"
+ "to capture the particular aspect of the resource.\n"
+ "The usage of SimpleFacet should be reduced to the maximum.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
@ -25,4 +37,4 @@ public interface SimpleFacet extends Facet {
public static final String NAME = "SimpleFacet"; // SimpleFacet.class.getSimpleName();
}
}

View File

@ -12,8 +12,15 @@ import org.gcube.informationsystem.utils.TypeVersion;
import org.gcube.resourcemanagement.model.impl.entities.facets.SimplePropertyFacetImpl;
/**
* @author Luca Frosini (ISTI - CNR)
* SimplePropertyFacet captures information on any property by a simple name-value pair.
* It is mainly used to add key-value pairs to the resource in order to describe some resource characteristics.
* Before using SimplePropertyFacet a developer should evaluate if it is possible to identify a specific Facet
* to capture the particular aspect of the resource.
* The usage of SimplePropertyFacet should be reduced to the maximum.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Simple_Property_Facet
*
* @author Luca Frosini (ISTI - CNR)
*/
@JsonDeserialize(as=SimplePropertyFacetImpl.class)
@TypeMetadata(
@ -36,4 +43,4 @@ public interface SimplePropertyFacet extends Facet {
public void setValue(String value);
}
}

View File

@ -13,13 +13,16 @@ import org.gcube.resourcemanagement.model.impl.entities.facets.SoftwareFacetImpl
import org.gcube.resourcemanagement.model.reference.properties.utilities.Named;
/**
* @author Luca Frosini (ISTI - CNR)
* SoftwareFacet captures information on any software associated with the resource.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Software_Facet
*
* @author Luca Frosini (ISTI - CNR)
*/
@JsonDeserialize(as=SoftwareFacetImpl.class)
@TypeMetadata(
name = SoftwareFacet.NAME,
description = "Capture SW related features",
description = "SoftwareFacet captures information on any software associated with the resource.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
@ -30,27 +33,52 @@ public interface SoftwareFacet extends Facet, Named {
public static final String GROUP_PROPERTY = "group";
public static final String VERSION_PROPERTY = "version";
@ISProperty(name=GROUP_PROPERTY, mandatory=true, nullable=false)
@Override
@ISProperty(name=NAME_PROPERTY,
description = "The name of the software artifact being described, "
+ "e.g., artifactId in maven coordinates, "
+ "the software name for retail software "
+ "such as 'Office' (in Microsoft™ Office 2013-SP2)",
mandatory=true, nullable=false)
public String getName();
@Override
public void setName(String name);
@ISProperty(name=GROUP_PROPERTY,
description = "The name of 'group' the software artifact belongs to, "
+ "e.g., groupId in maven coordinates, "
+ "company name for retail software software "
+ "such as 'Microsoft™' (in Microsoft™ Office 2013-SP2)",
mandatory=true, nullable=false)
public String getGroup();
public void setGroup(String group);
@ISProperty(name=VERSION_PROPERTY, mandatory=true, nullable=false)
@ISProperty(name=VERSION_PROPERTY,
description = "The particular release of the software artifact, "
+ "e.g., version in maven coordinates, "
+ "the software version for retail software "
+ "such as '2013-SP2' (in Microsoft™ Office 2013-SP2)",
mandatory=true, nullable=false)
public String getVersion();
public void setVersion(String version);
@ISProperty
@ISProperty(description = "A human oriented description of the software artifact being described")
public String getDescription();
public void setDescription(String description);
@ISProperty
@ISProperty(description = "A qualifier for the software, "
+ "e.g., packaging or scope in maven coordinates, "
+ "target architecture for retail software such as x86 or amd64")
public String getQualifier();
public void setQualifier(String qualifier);
@ISProperty
@ISProperty(description = "Used to indicate the software optionality,"
+ " e.g., optional in maven coordinates")
public boolean isOptional();
public void setOptional(boolean optional);

View File

@ -13,14 +13,24 @@ import org.gcube.informationsystem.utils.TypeVersion;
import org.gcube.resourcemanagement.model.impl.entities.facets.StateFacetImpl;
/**
* @author Luca Frosini (ISTI - CNR)
* StateFacet captures information on state to be associated with the resource.
* The state is captured by any controlled vocabulary which is an integral part of the facet.
*
* Examples of usage are the state of service e.g., running or down or
* the state of a virtual machine e.g., activated or unreachable.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#State_Facet
*
* @author Luca Frosini (ISTI - CNR)
*/
@Abstract
@JsonDeserialize(as=StateFacetImpl.class)
@TypeMetadata(
name = StateFacet.NAME,
description = "Any resource State Information",
description = "StateFacet captures information on state to be associated with the resource.\n"
+ "The state is captured by any controlled vocabulary which is an integral part of the facet.\n"
+ "Examples of usage are the state of service e.g., running or down or "
+ "the state of a virtual machine e.g., activated or unreachable.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)

View File

@ -1,33 +0,0 @@
/**
*
*/
package org.gcube.resourcemanagement.model.reference.entities.facets;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
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.XSDSchemaFacetImpl;
/**
* @author Luca Frosini (ISTI - CNR)
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#XSD_Schema_Facet
*/
@JsonDeserialize(as=XSDSchemaFacetImpl.class)
@TypeMetadata(
name = XSDSchemaFacet.NAME,
description = "Provide a way to store a JSON Schema",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface XSDSchemaFacet extends SchemaFacet {
public static final String NAME = "XSDSchemaFacet"; // XSDSchemaFacet.class.getSimpleName();
@ISProperty(mandatory=true, nullable=false)
public String getContent();
public void setContent(String content);
}

View File

@ -14,8 +14,8 @@ import org.gcube.resourcemanagement.model.impl.entities.resources.EServiceImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.AccessPointFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.EventFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.LicenseFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.ServiceStateFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.SoftwareFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.StateFacet;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.IsIdentifiedBy;
import org.gcube.resourcemanagement.model.reference.relations.isrelatedto.Discovers;
import org.gcube.resourcemanagement.model.reference.relations.isrelatedto.Uses;
@ -31,7 +31,7 @@ import org.gcube.resourcemanagement.model.reference.relations.isrelatedto.Uses;
@ResourceSchemaEntry(facet = SoftwareFacet.class, description = "Software available in the EService environment that characterizes the specific EService instance."),
@ResourceSchemaEntry(facet = AccessPointFacet.class, min = 1, description = "Identify the endpoints of the EService."),
@ResourceSchemaEntry(facet = EventFacet.class, min = 1, description = "Events characterising the current status and lifecycle of the service, e.g. ActivationTime, DeploymentTime."),
@ResourceSchemaEntry(facet = ServiceStateFacet.class, min = 1, max = 1, description = "The current status of the EService, e.g. STARTED, ready, down, failed."),
@ResourceSchemaEntry(facet = StateFacet.class, min = 1, max = 1, description = "The current status of the EService, e.g. STARTED, ready, down, failed."),
@ResourceSchemaEntry(facet = LicenseFacet.class, description = "The specific terms of use governing the exploitation of the EService.")
},
resources= {

View File

@ -11,12 +11,12 @@ import org.gcube.informationsystem.types.reference.TypeMetadata;
import org.gcube.informationsystem.utils.TypeVersion;
import org.gcube.resourcemanagement.model.impl.entities.resources.HostingNodeImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.CPUFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.ContainerStateFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.EventFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.MemoryFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.NetworkingFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.SimplePropertyFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.SoftwareFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.StateFacet;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasPersistentMemory;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasVolatileMemory;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.IsIdentifiedBy;
@ -33,7 +33,7 @@ import org.gcube.resourcemanagement.model.reference.relations.consistsof.IsIdent
@ResourceSchemaEntry(relation=HasPersistentMemory.class, facet=MemoryFacet.class, min=1, description="The Disk Space Capacity of the Hosting Node."),
@ResourceSchemaEntry(relation=HasVolatileMemory.class, facet=MemoryFacet.class, min=1, description="The RAM Capacity of the Hosting Node."),
@ResourceSchemaEntry(facet=EventFacet.class, min=1, description="Every event characterizing the life cycle of the Hosting Node, e.g. the activation time."),
@ResourceSchemaEntry(facet=ContainerStateFacet.class, min=1, max=1, description="The current state of the Hosting Node, e.g. started, ready, certified, down, failed."),
@ResourceSchemaEntry(facet=StateFacet.class, min=1, max=1, description="The current state of the Hosting Node, e.g. started, ready, certified, down, failed."),
@ResourceSchemaEntry(facet=SimplePropertyFacet.class, description="Any <key,value> pair property worth associating with the Hosting Node, e.g. Environment Variables"),
@ResourceSchemaEntry(facet=SoftwareFacet.class, description=" Any Software characterising the Hosting Node. Useful to report the hosted software that are not registered in the Resource Registry as Software Resource, e.g. Operating System")
}

View File

@ -13,10 +13,8 @@ import org.gcube.informationsystem.utils.TypeVersion;
import org.gcube.resourcemanagement.model.impl.entities.resources.SchemaImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.ContactFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.DescriptiveMetadataFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.JSONSchemaFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.SchemaFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.SubjectFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.XSDSchemaFacet;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasContact;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.IsIdentifiedBy;
import org.gcube.resourcemanagement.model.reference.relations.isrelatedto.IsCompliantWith;
@ -29,8 +27,6 @@ import org.gcube.resourcemanagement.model.reference.relations.isrelatedto.IsComp
@ResourceSchema(
facets={
@ResourceSchemaEntry(relation=IsIdentifiedBy.class, facet=SchemaFacet.class, min=1),
@ResourceSchemaEntry(relation=IsIdentifiedBy.class, facet=JSONSchemaFacet.class),
@ResourceSchemaEntry(relation=IsIdentifiedBy.class, facet=XSDSchemaFacet.class),
@ResourceSchemaEntry(relation=HasContact.class, facet=ContactFacet.class, min=1),
@ResourceSchemaEntry(facet=DescriptiveMetadataFacet.class),
@ResourceSchemaEntry(facet=SubjectFacet.class)
@ -49,4 +45,4 @@ public interface Schema extends GCubeResource {
public static final String NAME = "Schema"; // Schema.class.getSimpleName();
}
}

View File

@ -49,4 +49,5 @@ public interface EnumStringProperty extends GCubeProperty, ValidatedTypedPropert
: Validation.fail(property.getValue() + " is not a valid value.");
}
}
}

View File

@ -8,7 +8,7 @@ import org.gcube.informationsystem.utils.TypeVersion;
import org.gcube.resourcemanagement.model.impl.properties.GCubePropertyImpl;
/**
* Marker interface for {@link Property} properties extended in the gCube model.
* Marker type for {@link Property} properties extended in the gCube model.
*
* @author Manuele Simi (ISTI - CNR)
* @author Luca Frosini (ISTI - CNR)
@ -17,7 +17,7 @@ import org.gcube.resourcemanagement.model.impl.properties.GCubePropertyImpl;
@JsonDeserialize(as=GCubePropertyImpl.class)
@TypeMetadata(
name = GCubeProperty.NAME,
description = "The base class for any Property defined in the gCube Model.",
description = "Marker type for any properties extended in the gCube model.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
@ -25,5 +25,4 @@ public interface GCubeProperty extends Property {
public static final String NAME = "GCubeProperty"; //GCubeProperty.class.getSimpleName();
}
}

View File

@ -13,12 +13,21 @@ import org.gcube.resourcemanagement.model.reference.properties.utilities.Validat
import org.gcube.resourcemanagement.model.reference.properties.utilities.Validation;
/**
* This type aims at exposing a value which can be automatically managed by any client with no knowledge of its format.
*
* The client can retrieve the schema at the provided URI, i.e., schema property,
* and use its content to understand/validate/manipulate the information contained in the value property.
* The client must have the capability to understand the semantics of content retrieved at the URI endpoint.
*
* Examples of application of such type are eXtensible Markup Language (XML) values which can be
* validated by a Document Type Definition (DTD) or XML Schema Definition (XSD).
*
* @author Luca Frosini (ISTI - CNR)
*/
@JsonDeserialize(as=ValueSchemaImpl.class)
@TypeMetadata(
name = ValueSchema.NAME,
description = "This property type capture any property which can be described by a value-schema couple.",
description = "This type aims at exposing a value which can be automatically managed by any client with no knowledge of its format.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
@ -46,15 +55,21 @@ public interface ValueSchema extends GCubeProperty, ValidatedTypedProperty<URI,S
}
}
@ISProperty
/**
* The value which schema is available at the URI provided in the schema property.
*/
@ISProperty(description = "The value which schema is available at the URI provided in the schema property.", mandatory=true, nullable=false)
@Override
public String getValue();
@Override
public void setValue(String value);
@ISProperty
/**
* An URI containing a schema used to validate/interpret the content of the value.
* It is only an informative field. The validation is charge of the client.
*/
@ISProperty(description = "An URI containing a schema used to validate/interpret the content of the value. It is only an informative field. The validation is charge of the client.", mandatory=true, nullable=false)
@Override
public URI getType();

View File

@ -3,6 +3,9 @@ package org.gcube.resourcemanagement.model.reference.relations.consistsof;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.relations.ConsistsOf;
import org.gcube.informationsystem.types.annotations.Abstract;
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.relations.consistsof.HasActionImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.ActionFacet;
import org.gcube.resourcemanagement.model.reference.entities.resources.Service;
@ -10,13 +13,19 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.Service;
/**
* Relation among a {@link Service} and its {@link ActionFacet}.
*
* @author Manuele Simi (ISTI CNR)
*
* @author Manuele Simi (ISTI - CNR)
* @author Luca Frosini (ISTI - CNR)
*/
@Abstract
@JsonDeserialize(as=HasActionImpl.class)
@TypeMetadata(
name = HasAction.NAME,
description = "Relation among a {@link Service} and its {@link ActionFacet}",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface HasAction<Out extends Service, In extends ActionFacet> extends ConsistsOf<Out, In> {
public static final String NAME = "HasAction";
}
}

View File

@ -1,6 +1,9 @@
package org.gcube.resourcemanagement.model.reference.relations.consistsof;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
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.relations.consistsof.HasAddActionImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.ActionFacet;
import org.gcube.resourcemanagement.model.reference.entities.resources.Service;
@ -8,10 +11,16 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.Service;
/**
* An action triggered when a {@link Service} is activated.
*
* @author Manuele Simi (ISTI CNR)
*
* @author Manuele Simi (ISTI - CNR)
* @author Luca Frosini (ISTI - CNR)
*/
@JsonDeserialize(as=HasAddActionImpl.class)
@TypeMetadata(
name = HasAction.NAME,
description = "An action triggered when a {@link Service} is activated.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface HasAddAction<Out extends Service, In extends ActionFacet>
extends HasAction<Out, In> {

View File

@ -7,17 +7,46 @@ import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.entities.Resource;
import org.gcube.informationsystem.model.reference.relations.ConsistsOf;
import org.gcube.informationsystem.types.annotations.Abstract;
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.relations.consistsof.HasContactImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.ContactFacet;
/**
* HasContact is a base relation type to capture the diverse points of contact associated with a resource.
* This relation is abstract because if not specialised it does not add any semantic of
* relating the resource with the target {@link ContactFacet}.
* Instead, every specialisation refines the reason of using the @link ContactFacet} allowing
* to discriminate between two or more {@link ContactFacet} attached to the same resource.
*
* The identified specialisations are
* {@link HasContributor}, {@link HasCreator}, {@link HasCurator},
* {@link HasDeveloper}, {@link HasMaintainer}, {@link HasManager} and
* {@link HasOwner}.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#HasContact
*
* @author Luca Frosini (ISTI - CNR)
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#hasContact
*/
@Abstract
@JsonDeserialize(as=HasContactImpl.class)
@TypeMetadata(
name = HasContact.NAME,
description = "A base relation type to capture the diverse points of contact associated with a resource. "
+ "This relation is abstract because if not specialised it does not add any semantic of relating "
+ "the resource with the target {@link ContactFacet}.\n"
+ "Instead, every specialisation refines the reason of using the "
+ "@link ContactFacet} allowing to discriminate between two or more {@link ContactFacet} attached to the same resource."
+ "The identified specialisations are: "
+ "{@link HasContributor}, {@link HasCreator}, {@link HasCurator}, "
+ "{@link HasDeveloper}, {@link HasMaintainer}, {@link HasManager} and {@link HasOwner}.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface HasContact<Out extends Resource, In extends ContactFacet>
extends ConsistsOf<Out, In> {
public static final String NAME = "HasContact"; //HasContact.class.getSimpleName();
}
}

View File

@ -5,16 +5,31 @@ package org.gcube.resourcemanagement.model.reference.relations.consistsof;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.entities.Resource;
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.relations.consistsof.HasContributorImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.ContactFacet;
/**
* HasContributor indicates that the target ContactFacet contains the information
* related to a contributor to the source resource e.g., the contact points of
* the contributor of software or the contributor of a dataset.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#HasContributor
*
* @author Luca Frosini (ISTI - CNR)
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#hasContributor
*/
@JsonDeserialize(as=HasContributorImpl.class)
@TypeMetadata(
name = HasContributor.NAME,
description = "HasContributor indicates that the target ContactFacet contains the information related to a contributor to the source resource e.g., the contact points of the contributor of software or the contributor of a dataset.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface HasContributor<Out extends Resource, In extends ContactFacet>
extends HasContact<Out, In> {
public static final String NAME = "HasContributor"; //HasContributor.class.getSimpleName();
}
public static final String NAME = "HasContributor"; // HasContributor.class.getSimpleName();
}

View File

@ -7,17 +7,38 @@ import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.entities.Resource;
import org.gcube.informationsystem.model.reference.relations.ConsistsOf;
import org.gcube.informationsystem.types.annotations.Abstract;
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.relations.consistsof.HasCoverageImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.CoverageFacet;
/**
* Let consider a dataset containing information regarding the salinity of a specific
* ocean area in a certain amount of time. What is essential in the information system is
* not representing the data of the salinity. Instead, to specify the temporal period and the
* ocean area the dataset is valid. This information is captured using the same schema
* i.e., the CoverageFacet but using different relations to distinguish between them with
* no need to understand the value or the schema of the coverage.
* For such a reason it has been defined the abstract HasCoverage relation and the
* specialisation {@link HasTemporalCoverage} and {@link HasSpatialCoverage}
* have been defined to refines the reason of using the CoverageFacet.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#HasCoverage
*
* @author Luca Frosini (ISTI - CNR)
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#hasCoverage
*/
@Abstract
@JsonDeserialize(as=HasCoverageImpl.class)
@TypeMetadata(
name = HasCoverage.NAME,
description = "HasCoverage represents the type of coverage that is provided by the CoverageFacet.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface HasCoverage<Out extends Resource, In extends CoverageFacet>
extends ConsistsOf<Out, In> {
public static final String NAME = "HasCoverage"; //HasCoverage.class.getSimpleName();
}
}

View File

@ -5,14 +5,27 @@ package org.gcube.resourcemanagement.model.reference.relations.consistsof;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.entities.Resource;
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.relations.consistsof.HasCreatorImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.ContactFacet;
/**
* HasCreator indicates that the target ContactFacet contains the information related to
* a creator of the source resource e.g., the contact points of the creator of a dataset.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#HasCreator
*
* @author Luca Frosini (ISTI - CNR)
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#hasCreator
*/
@JsonDeserialize(as=HasCreatorImpl.class)
@TypeMetadata(
name = HasCreator.NAME,
description = "HasCreator indicates that the target ContactFacet contains the information related to a creator of the source resource e.g., the contact points of the creator of a dataset.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface HasCreator<Out extends Resource, In extends ContactFacet>
extends HasContact<Out, In> {

View File

@ -5,14 +5,27 @@ package org.gcube.resourcemanagement.model.reference.relations.consistsof;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.entities.Resource;
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.relations.consistsof.HasCuratorImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.ContactFacet;
/**
* HasCurator indicates that the target ContactFacet contains the information related to
* a curator of the source resource e.g., the contact points of the curator of a dataset.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#HasCurator
*
* @author Luca Frosini (ISTI - CNR)
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#hasCurator
*/
@JsonDeserialize(as=HasCuratorImpl.class)
@TypeMetadata(
name = HasCurator.NAME,
description = "HasCurator indicates that the target ContactFacet contains the information related to a curator of the source resource e.g., the contact points of the curator of a dataset.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface HasCurator<Out extends Resource, In extends ContactFacet>
extends HasContact<Out, In> {

View File

@ -5,14 +5,27 @@ package org.gcube.resourcemanagement.model.reference.relations.consistsof;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.entities.Resource;
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.relations.consistsof.HasDeveloperImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.ContactFacet;
/**
* HasDeveloper indicates that the target ContactFacet contains the information related to a
* developer of the source resource e.g., the contact points ofthe developer of a software.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#HasDeveloper
*
* @author Luca Frosini (ISTI - CNR)
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#hasDeveloper
*/
@JsonDeserialize(as=HasDeveloperImpl.class)
@TypeMetadata(
name = HasDeveloper.NAME,
description = "HasDeveloper indicates that the target ContactFacet contains the information related to a developer of the source resource e.g., the contact points ofthe developer of a software.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface HasDeveloper<Out extends Resource, In extends ContactFacet>
extends HasContact<Out, In> {

View File

@ -5,14 +5,26 @@ package org.gcube.resourcemanagement.model.reference.relations.consistsof;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.entities.Resource;
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.relations.consistsof.HasMaintainerImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.ContactFacet;
/**
* HasDeveloper indicates that the target ContactFacet contains the information related to a developer of the source resource e.g., the contact points of the developer of a software.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#HasMaintainer
*
* @author Luca Frosini (ISTI - CNR)
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#hasMaintainer
*/
@JsonDeserialize(as=HasMaintainerImpl.class)
@TypeMetadata(
name = HasContact.NAME,
description = "HasDeveloper indicates that the target ContactFacet contains the information related to a developer of the source resource e.g., the contact points of the developer of a software.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface HasMaintainer<Out extends Resource, In extends ContactFacet>
extends HasContact<Out, In> {

View File

@ -5,14 +5,28 @@ package org.gcube.resourcemanagement.model.reference.relations.consistsof;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.entities.Resource;
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.relations.consistsof.HasManagerImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.ContactFacet;
/**
* HasManager indicates that the target ContactFacet contains the information
* related to a manager of the source Resource e.g., the contact points of the
* manager of a research infrastructure or a data centre.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#HasManager
*
* @author Luca Frosini (ISTI - CNR)
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#hasManager
*/
@JsonDeserialize(as=HasManagerImpl.class)
@TypeMetadata(
name = HasManager.NAME,
description = "HasManager indicates that the target ContactFacet contains the information related to a manager of the source Resource e.g., the contact points of the manager of a research infrastructure or a data centre.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface HasManager<Out extends Resource, In extends ContactFacet>
extends HasContact<Out, In> {

View File

@ -7,17 +7,44 @@ import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.entities.Resource;
import org.gcube.informationsystem.model.reference.relations.ConsistsOf;
import org.gcube.informationsystem.types.annotations.Abstract;
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.relations.consistsof.HasMemoryImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.MemoryFacet;
/**
* HasMemory is a base relation type to capture the diverse type of memories associated with a resource.
* This relation is abstract because if not specialised it does not add any semantic of
* relating the resource with the target {@link MemoryFacet}.
*
* It is in charge of the specialisation {@link HasVolatileMemory} and {@link HasPersistentMemory}
* to clarify the semantics of the memory. (Any resource describing a computing machine must have at least
* two types of memories, i.e., persistent and volatile.)
*
* We do not exclude other specialisation required by services to select the appropriated memory better.
* For example, to discriminate between Solid State Disk and Magnetic Rotative.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#HasMemory
*
* @author Luca Frosini (ISTI - CNR)
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#hasMemory
*/
@Abstract
@JsonDeserialize(as=HasMemoryImpl.class)
@TypeMetadata(
name = HasMemory.NAME,
description = "HasMemory is a base relation type to capture the diverse type of memories associated with a resource.\n"
+ "This relation is abstract because if not specialised it does not add any semantic of relating the resource with the target {@link MemoryFacet}.\n"
+ "It is in charge of the specialisation {@link HasVolatileMemory} and {@link HasPersistentMemory} to clarify the semantics of the memory."
+ "(Any resource describing a computing machine must have at least two types of memories, i.e., persistent and volatile.)."
+ "We do not exclude other specialisation required by services to select the appropriated memory better.\n"
+ "For example, to discriminate between Solid State Disk and Magnetic Rotative.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface HasMemory<Out extends Resource, In extends MemoryFacet>
extends ConsistsOf<Out, In> {
public static final String NAME = "HasMemory"; // HasMemory.class.getSimpleName();
}
}

View File

@ -5,14 +5,28 @@ package org.gcube.resourcemanagement.model.reference.relations.consistsof;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.entities.Resource;
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.relations.consistsof.HasOwnerImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.ContactFacet;
/**
* HasOwner indicates that the target ContactFacet contains the information related to
* the owner of the source resource e.g., the contact points of the owner of dataset.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#HasOwner
*
* @author Luca Frosini (ISTI - CNR)
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#hasOwner
*/
@JsonDeserialize(as=HasOwnerImpl.class)
@TypeMetadata(
name = HasOwner.NAME,
description = "HasOwner indicates that the target ContactFacet contains the information related "
+ "to the owner of the source resource e.g., the contact points of the owner of dataset.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface HasOwner<Out extends Resource, In extends ContactFacet>
extends HasContact<Out, In> {

View File

@ -5,16 +5,48 @@ package org.gcube.resourcemanagement.model.reference.relations.consistsof;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.entities.Resource;
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.relations.consistsof.HasPersistentMemoryImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.MemoryFacet;
/**
* HasPersistentMemory indicates that the target MemoryFacet indicates a non-volatile
* memory, i.e., a memory which does not lose the data when the device is powered down.
*
* This type of memory is also known as secondary memory, external memory, auxiliary
* storage, or secondary storage.
*
* Of course more than one MemoryFacet related with HasPersistentMemory can be
* attached to the same resource, but actually from an infrastructure management point of view,
* we did not find any reason to further specialise the HasPersistentMemory relation.
*
* Anyway, we do not exclude other specialisation required by services to select the appropriated persistent memory better.
* For example, to discriminate between Solid State Disk and Magnetic Rotative.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#HasPersistentMemory
*
* @author Luca Frosini (ISTI - CNR)
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#hasPersistentMemory
*/
@JsonDeserialize(as=HasPersistentMemoryImpl.class)
public interface HasPersistentMemory<Out extends Resource, In extends MemoryFacet>
extends HasMemory<Out, In> {
@TypeMetadata(
name = HasPersistentMemory.NAME,
description = "HasPersistentMemory indicates that the target MemoryFacet indicates a non-volatile "
+ " memory, i.e., a memory which does not lose the data when the device is powered down.\n"
+ "This type of memory is also known as secondary memory, external memory, auxiliary "
+ "storage, or secondary storage.\n"
+ "Of course more than one MemoryFacet related with HasPersistentMemory can be "
+ "attached to the same resource, but actually from an infrastructure management point of view, "
+ "we did not find any reason to further specialise the HasPersistentMemory relation.\n"
+ "Anyway, we do not exclude other specialisation required by services to select the "
+ "appropriated persistent memory better. "
+ "For example, to discriminate between Solid State Disk and Magnetic Rotative.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface HasPersistentMemory<Out extends Resource, In extends MemoryFacet> extends HasMemory<Out, In> {
public static final String NAME = "HasPersistentMemory"; // HasPersistentMemory.class.getSimpleName();
}
}

View File

@ -1,6 +1,9 @@
package org.gcube.resourcemanagement.model.reference.relations.consistsof;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
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.relations.consistsof.HasRemoveActionImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.ActionFacet;
import org.gcube.resourcemanagement.model.reference.entities.resources.Service;
@ -12,6 +15,12 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.Service;
*
*/
@JsonDeserialize(as=HasRemoveActionImpl.class)
@TypeMetadata(
name = .NAME,
description = "",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface HasRemoveAction<Out extends Service, In extends ActionFacet>
extends HasAction<Out, In> {

View File

@ -5,16 +5,29 @@ package org.gcube.resourcemanagement.model.reference.relations.consistsof;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.entities.Resource;
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.relations.consistsof.HasSpatialCoverageImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.CoverageFacet;
/**
* HasSpatialCoverage indicates that the target CoverageFacet indicates a spatial coverage information
* e.g., the geographic area indication for the dataset.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#HasSpatialCoverage
* @author Luca Frosini (ISTI - CNR)
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#hasSpatialCoverage
*/
@JsonDeserialize(as=HasSpatialCoverageImpl.class)
@TypeMetadata(
name = HasSpatialCoverage.NAME,
description = "HasSpatialCoverage indicates that the target CoverageFacet indicates a spatial coverage information e.g., the geographic area indication for the dataset.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface HasSpatialCoverage<Out extends Resource, In extends CoverageFacet>
extends HasCoverage<Out, In> {
public static final String NAME = "HasSpatialCoverage"; // HasSpatialCoverage.class.getSimpleName();
}
}

View File

@ -5,14 +5,27 @@ package org.gcube.resourcemanagement.model.reference.relations.consistsof;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.entities.Resource;
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.relations.consistsof.HasTemporalCoverageImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.CoverageFacet;
/**
* HasTemporalCoverage indicates that the target CoverageFacet indicates a temporal coverage information
* e.g., the temporal period indication for the dataset.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#HasTemporalCoverage
*
* @author Luca Frosini (ISTI - CNR)
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#hasTemporalCoverage
*/
@JsonDeserialize(as=HasTemporalCoverageImpl.class)
@TypeMetadata(
name = HasTemporalCoverage.NAME,
description = "HasTemporalCoverage indicates that the target CoverageFacet indicates a temporal coverage information e.g., the temporal period indication for the dataset.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface HasTemporalCoverage<Out extends Resource, In extends CoverageFacet>
extends HasCoverage<Out, In> {

View File

@ -5,14 +5,30 @@ package org.gcube.resourcemanagement.model.reference.relations.consistsof;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.entities.Resource;
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.relations.consistsof.HasVolatileMemoryImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.MemoryFacet;
/**
* HasVolatileMemory indicates that the target MemoryFacet is a volatile memory,
* i.e., a memory which requires power to maintain the stored information.
* Volatile memory is also known as main memory, internal memory or primary storage.
*
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#HasVolatileMemory
*
* @author Luca Frosini (ISTI - CNR)
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#hasVolatileMemory
*/
@JsonDeserialize(as=HasVolatileMemoryImpl.class)
@TypeMetadata(
name = HasVolatileMemory.NAME,
description = "HasVolatileMemory indicates that the target MemoryFacet is a volatile memory, "
+ "i.e., a memory which requires power to maintain the stored information.\n"
+ "Volatile memory is also known as main memory, internal memory or primary storage.",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface HasVolatileMemory<Out extends Resource, In extends MemoryFacet>
extends HasMemory<Out, In> {

View File

@ -7,6 +7,9 @@ import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.entities.Facet;
import org.gcube.informationsystem.model.reference.entities.Resource;
import org.gcube.informationsystem.model.reference.relations.ConsistsOf;
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.relations.consistsof.IsIdentifiedByImpl;
/**
@ -14,6 +17,12 @@ import org.gcube.resourcemanagement.model.impl.relations.consistsof.IsIdentified
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#isIdentifiedBy
*/
@JsonDeserialize(as=IsIdentifiedByImpl.class)
@TypeMetadata(
name = .NAME,
description = "",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface IsIdentifiedBy<S extends Resource, T extends Facet>
extends ConsistsOf<S, T> {

View File

@ -5,6 +5,9 @@ package org.gcube.resourcemanagement.model.reference.relations.isrelatedto;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.relations.IsRelatedTo;
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.relations.isrelatedto.ActivatesImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.Service;
@ -13,6 +16,12 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.Service;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#activates
*/
@JsonDeserialize(as=ActivatesImpl.class)
@TypeMetadata(
name = .NAME,
description = "",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface Activates<Out extends Service, In extends Service>
extends IsRelatedTo<Out, In> {

View File

@ -5,6 +5,9 @@ package org.gcube.resourcemanagement.model.reference.relations.isrelatedto;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.relations.IsRelatedTo;
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.relations.isrelatedto.BelongsToImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.LegalBody;
import org.gcube.resourcemanagement.model.reference.entities.resources.Person;
@ -14,6 +17,12 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.Person;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#belongsTo
*/
@JsonDeserialize(as=BelongsToImpl.class)
@TypeMetadata(
name = .NAME,
description = "",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface BelongsTo<Out extends Person, In extends LegalBody>
extends IsRelatedTo<Out, In> {

View File

@ -13,6 +13,12 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.Service;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#callsFor
*/
@JsonDeserialize(as=CallsForImpl.class)
@TypeMetadata(
name = .NAME,
description = "",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface CallsFor<Out extends Service, In extends Service>
extends IsRelatedTo<Out, In> {

View File

@ -5,6 +5,9 @@ package org.gcube.resourcemanagement.model.reference.relations.isrelatedto;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.relations.IsRelatedTo;
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.relations.isrelatedto.DemandsImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.Software;
import org.gcube.resourcemanagement.model.reference.entities.resources.VirtualService;
@ -14,6 +17,12 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.VirtualSe
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#demands
*/
@JsonDeserialize(as=DemandsImpl.class)
@TypeMetadata(
name = .NAME,
description = "",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface Demands<Out extends VirtualService, In extends Software>
extends IsRelatedTo<Out, In> {

View File

@ -5,6 +5,9 @@ package org.gcube.resourcemanagement.model.reference.relations.isrelatedto;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.relations.IsRelatedTo;
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.relations.isrelatedto.DependsOnImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.Software;
@ -13,6 +16,12 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.Software;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#dependsOn
*/
@JsonDeserialize(as = DependsOnImpl.class)
@TypeMetadata(
name = .NAME,
description = "",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface DependsOn<Out extends Software, In extends Software> extends IsRelatedTo<Out,In> {
public static final String NAME = "DependsOn"; // DependsOn.class.getSimpleName();

View File

@ -12,6 +12,12 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.EService;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#discovers
*/
@JsonDeserialize(as=DiscoversImpl.class)
@TypeMetadata(
name = .NAME,
description = "",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface Discovers<Out extends EService, In extends EService>
extends CallsFor<Out, In> {

View File

@ -5,6 +5,9 @@ package org.gcube.resourcemanagement.model.reference.relations.isrelatedto;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.relations.IsRelatedTo;
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.relations.isrelatedto.EnablesImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.Service;
import org.gcube.resourcemanagement.model.reference.entities.resources.Software;
@ -14,6 +17,12 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.Software;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#enables
*/
@JsonDeserialize(as=EnablesImpl.class)
@TypeMetadata(
name = .NAME,
description = "",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface Enables<Out extends Service, In extends Software>
extends IsRelatedTo<Out, In> {

View File

@ -5,6 +5,9 @@ package org.gcube.resourcemanagement.model.reference.relations.isrelatedto;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.relations.IsRelatedTo;
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.relations.isrelatedto.HostsImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.Service;
import org.gcube.resourcemanagement.model.reference.entities.resources.Site;
@ -15,6 +18,12 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.Site;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#hosts
*/
@JsonDeserialize(as=HostsImpl.class)
@TypeMetadata(
name = .NAME,
description = "",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface Hosts<Out extends Site, In extends Service>
extends IsRelatedTo<Out, In> {

View File

@ -5,6 +5,9 @@ package org.gcube.resourcemanagement.model.reference.relations.isrelatedto;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.relations.IsRelatedTo;
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.relations.isrelatedto.InvolvesImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.Actor;
import org.gcube.resourcemanagement.model.reference.entities.resources.Dataset;
@ -14,6 +17,12 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.Dataset;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#involves
*/
@JsonDeserialize(as=InvolvesImpl.class)
@TypeMetadata(
name = .NAME,
description = "",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface Involves<Out extends Dataset, In extends Actor>
extends IsRelatedTo<Out, In> {

View File

@ -5,6 +5,9 @@ package org.gcube.resourcemanagement.model.reference.relations.isrelatedto;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.relations.IsRelatedTo;
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.relations.isrelatedto.IsCompliantWithImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.Dataset;
import org.gcube.resourcemanagement.model.reference.entities.resources.Schema;
@ -14,6 +17,12 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.Schema;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#isCompliantWith
*/
@JsonDeserialize(as=IsCompliantWithImpl.class)
@TypeMetadata(
name = .NAME,
description = "",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface IsCompliantWith<Out extends Dataset, In extends Schema>
extends IsRelatedTo<Out, In> {

View File

@ -5,6 +5,9 @@ package org.gcube.resourcemanagement.model.reference.relations.isrelatedto;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.relations.IsRelatedTo;
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.relations.isrelatedto.IsConfiguredByImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.ConfigurationTemplate;
import org.gcube.resourcemanagement.model.reference.entities.resources.Software;
@ -14,6 +17,12 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.Software;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#isConfiguredBy
*/
@JsonDeserialize(as=IsConfiguredByImpl.class)
@TypeMetadata(
name = .NAME,
description = "",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface IsConfiguredBy<Out extends Software, In extends ConfigurationTemplate>
extends IsRelatedTo<Out, In> {

View File

@ -5,6 +5,9 @@ package org.gcube.resourcemanagement.model.reference.relations.isrelatedto;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.relations.IsRelatedTo;
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.relations.isrelatedto.IsCorrelatedToImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.Dataset;
@ -13,6 +16,12 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.Dataset;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#isCorrelatedTo
*/
@JsonDeserialize(as=IsCorrelatedToImpl.class)
@TypeMetadata(
name = .NAME,
description = "",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface IsCorrelatedTo<Out extends Dataset, In extends Dataset>
extends IsRelatedTo<Out, In> {

View File

@ -5,6 +5,9 @@ package org.gcube.resourcemanagement.model.reference.relations.isrelatedto;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.relations.IsRelatedTo;
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.relations.isrelatedto.IsCustomizedByImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.ConfigurationTemplate;
import org.gcube.resourcemanagement.model.reference.entities.resources.Service;
@ -14,6 +17,12 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.Service;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#isCustomizedBy
*/
@JsonDeserialize(as=IsCustomizedByImpl.class)
@TypeMetadata(
name = .NAME,
description = "",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface IsCustomizedBy<Out extends Service, In extends ConfigurationTemplate>
extends IsRelatedTo<Out, In> {

View File

@ -5,6 +5,9 @@ package org.gcube.resourcemanagement.model.reference.relations.isrelatedto;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.relations.IsRelatedTo;
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.relations.isrelatedto.IsDerivationOfImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.Configuration;
import org.gcube.resourcemanagement.model.reference.entities.resources.ConfigurationTemplate;
@ -14,6 +17,12 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.Configura
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#isDerivationOf
*/
@JsonDeserialize(as=IsDerivationOfImpl.class)
@TypeMetadata(
name = .NAME,
description = "",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface IsDerivationOf<Out extends Configuration, In extends ConfigurationTemplate>
extends IsRelatedTo<Out, In> {

View File

@ -5,6 +5,9 @@ package org.gcube.resourcemanagement.model.reference.relations.isrelatedto;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.relations.IsRelatedTo;
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.relations.isrelatedto.IsOwnedByImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.Actor;
import org.gcube.resourcemanagement.model.reference.entities.resources.Site;
@ -14,6 +17,12 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.Site;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#isOwnedBy
*/
@JsonDeserialize(as=IsOwnedByImpl.class)
@TypeMetadata(
name = .NAME,
description = "",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface IsOwnedBy<Out extends Site, In extends Actor>
extends IsRelatedTo<Out, In> {

View File

@ -4,6 +4,9 @@
package org.gcube.resourcemanagement.model.reference.relations.isrelatedto;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
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.relations.isrelatedto.IsPartOfImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.ConcreteDataset;
import org.gcube.resourcemanagement.model.reference.entities.resources.Dataset;
@ -13,6 +16,12 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.Dataset;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#isPartOf
*/
@JsonDeserialize(as=IsPartOfImpl.class)
@TypeMetadata(
name = .NAME,
description = "",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface IsPartOf<Out extends ConcreteDataset, In extends Dataset>
extends IsCorrelatedTo<Out, In> {

View File

@ -4,6 +4,9 @@
package org.gcube.resourcemanagement.model.reference.relations.isrelatedto;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
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.relations.isrelatedto.IsPluginOfImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.Plugin;
import org.gcube.resourcemanagement.model.reference.entities.resources.Software;
@ -13,6 +16,12 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.Software;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#isPluginOf
*/
@JsonDeserialize(as = IsPluginOfImpl.class)
@TypeMetadata(
name = .NAME,
description = "",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface IsPluginOf<Out extends Plugin, In extends Software> extends DependsOn<Out,In> {
public static final String NAME = "IsPluginOf"; // IsPluginOf.class.getSimpleName();

View File

@ -5,6 +5,9 @@ package org.gcube.resourcemanagement.model.reference.relations.isrelatedto;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.relations.IsRelatedTo;
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.relations.isrelatedto.ManagesImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.Dataset;
import org.gcube.resourcemanagement.model.reference.entities.resources.Service;
@ -14,6 +17,12 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.Service;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#manages
*/
@JsonDeserialize(as=ManagesImpl.class)
@TypeMetadata(
name = .NAME,
description = "",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface Manages<Out extends Service, In extends Dataset>
extends IsRelatedTo<Out, In> {

View File

@ -5,6 +5,9 @@ package org.gcube.resourcemanagement.model.reference.relations.isrelatedto;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.reference.relations.IsRelatedTo;
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.relations.isrelatedto.RequiresImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.Service;
import org.gcube.resourcemanagement.model.reference.entities.resources.Software;
@ -14,6 +17,12 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.Software;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#requires
*/
@JsonDeserialize(as=RequiresImpl.class)
@TypeMetadata(
name = .NAME,
description = "",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface Requires<Out extends Software, In extends Service>
extends IsRelatedTo<Out, In> {

View File

@ -4,6 +4,9 @@
package org.gcube.resourcemanagement.model.reference.relations.isrelatedto;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
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.relations.isrelatedto.UsesImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.EService;
@ -11,6 +14,12 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.EService;
* @author Luca Frosini (ISTI - CNR)
*/
@JsonDeserialize(as=UsesImpl.class)
@TypeMetadata(
name = .NAME,
description = "",
version = TypeVersion.MINIMAL_VERSION_STRING
)
@Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION)
public interface Uses<Out extends EService, In extends EService>
extends CallsFor<Out, In> {