From e403b2459c30c28cc1939e3f932b15efebda43af Mon Sep 17 00:00:00 2001 From: "luca.frosini" Date: Wed, 25 Oct 2023 18:01:11 +0200 Subject: [PATCH] Creating model knowledge --- .../knowledge/ModelKnowledge.java | 104 +++++++++++++++--- .../knowledge/UsageKnowledge.java | 14 +-- .../knowledge/ModelKnowledgeTest.java | 101 +++++++++++++++++ .../types/SerializationTest.java | 8 ++ src/test/resources/types/ConsistsOf.json | 1 + src/test/resources/types/Facet.json | 1 + src/test/resources/types/IsRelatedTo.json | 1 + src/test/resources/types/Property.json | 1 + src/test/resources/types/Resource.json | 1 + 9 files changed, 208 insertions(+), 24 deletions(-) create mode 100644 src/test/java/org/gcube/informationsystem/knowledge/ModelKnowledgeTest.java create mode 100644 src/test/resources/types/ConsistsOf.json create mode 100644 src/test/resources/types/Facet.json create mode 100644 src/test/resources/types/IsRelatedTo.json create mode 100644 src/test/resources/types/Property.json create mode 100644 src/test/resources/types/Resource.json diff --git a/src/main/java/org/gcube/informationsystem/knowledge/ModelKnowledge.java b/src/main/java/org/gcube/informationsystem/knowledge/ModelKnowledge.java index 1f75afb..f5480ba 100644 --- a/src/main/java/org/gcube/informationsystem/knowledge/ModelKnowledge.java +++ b/src/main/java/org/gcube/informationsystem/knowledge/ModelKnowledge.java @@ -1,13 +1,26 @@ package org.gcube.informationsystem.knowledge; +import java.util.AbstractMap.SimpleEntry; import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; +import java.util.Map.Entry; import java.util.Set; import org.gcube.informationsystem.base.reference.AccessType; +import org.gcube.informationsystem.base.reference.entities.EntityElement; +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.model.reference.relations.IsRelatedTo; +import org.gcube.informationsystem.model.reference.relations.Relation; import org.gcube.informationsystem.tree.NodeInformation; import org.gcube.informationsystem.tree.Tree; +import org.gcube.informationsystem.types.PropertyTypeName; +import org.gcube.informationsystem.types.TypeMapper; +import org.gcube.informationsystem.types.impl.properties.PropertyDefinitionImpl; +import org.gcube.informationsystem.types.reference.Type; import org.gcube.informationsystem.types.reference.entities.FacetType; import org.gcube.informationsystem.types.reference.entities.ResourceType; import org.gcube.informationsystem.types.reference.properties.LinkedEntity; @@ -28,7 +41,8 @@ public class ModelKnowledge> { protected Map> trees; protected Map> usageKnowledges; - public ModelKnowledge() { + public ModelKnowledge(NI nodeInformation) { + this.nodeInformation = nodeInformation; reset(); } @@ -52,7 +66,7 @@ public class ModelKnowledge> { * In this way we have a complete overview of the usege of the * property type */ - usageKnowledge = new UsageKnowledge>(accessType); + usageKnowledge = new UsageKnowledge>(accessType); }else { usageKnowledge = new UsageKnowledge(accessType); } @@ -61,7 +75,7 @@ public class ModelKnowledge> { } - protected void add(LinkedEntity linkedEntity, UsageKnowledge relationUsage, UsageKnowledge targetEntityUsage) { + protected void addUsage(LinkedEntity linkedEntity, UsageKnowledge relationUsage, UsageKnowledge targetEntityUsage) { if (linkedEntity != null) { @SuppressWarnings("unchecked") UsageKnowledge resourceUsage = (UsageKnowledge) usageKnowledges.get(AccessType.RESOURCE); @@ -74,23 +88,63 @@ public class ModelKnowledge> { } } - protected void addAll(Collection linkedEntities, UsageKnowledge relationUsage, UsageKnowledge targetEntityUsage) { + protected void addAllUsage(Collection linkedEntities, UsageKnowledge relationUsage, UsageKnowledge targetEntityUsage) { if(linkedEntities!=null) { for(LinkedEntity le : linkedEntities) { - add(le, relationUsage, targetEntityUsage); + addUsage(le, relationUsage, targetEntityUsage); } } } - protected void addPropertyUsage(Set properties, UsageKnowledge propertyUsage) { - // for() + protected void addPropertyUsage(T t, Set properties, UsageKnowledge> propertyUsage) { + if(properties==null || properties.size()==0) { + return; + } + for(PropertyDefinition propertyDefinition : properties) { + PropertyTypeName propertyTypeName = ((PropertyDefinitionImpl) propertyDefinition).getPropertyTypeName(); + if(propertyTypeName.isGenericType()) { + SimpleEntry entry = new SimpleEntry<>(t, propertyDefinition); + propertyUsage.add(propertyTypeName.getGenericClassName(), entry); + } + } + } + + protected void addMetadataUsage(T t, UsageKnowledge> propertyUsage) { + Type type = TypeMapper.createTypeDefinition(EntityElement.class); + addPropertyUsage(t, type.getProperties(), propertyUsage); + } + + protected void addPropagationConstraintUsage(T t, UsageKnowledge> propertyUsage) { + Type type = TypeMapper.createTypeDefinition(Relation.class); + addPropertyUsage(t, type.getProperties(), propertyUsage); + } + + public void addAllType(Collection types) { + Set toRetry = new HashSet<>(); + + for(T t : types) { + logger.trace("Going to add {}", nodeInformation.getIdentifier(t)); + try { + addType(t); + }catch (RuntimeException e) { + toRetry.add(t); + } + } + + if(toRetry.size()>0) { + addAllType(toRetry); + } } public void addType(T t) { AccessType accessType = nodeInformation.getAccessType(t); + String typeName = nodeInformation.getIdentifier(t); + + Tree tree = trees.get(accessType); + tree.addNode(t); @SuppressWarnings("unchecked") - UsageKnowledge propertyUsage = (UsageKnowledge) usageKnowledges.get(AccessType.PROPERTY); + UsageKnowledge> propertyUsage = (UsageKnowledge>) usageKnowledges.get(AccessType.PROPERTY); @SuppressWarnings("unchecked") UsageKnowledge resourceUsage = (UsageKnowledge) usageKnowledges.get(AccessType.RESOURCE); @@ -108,33 +162,49 @@ public class ModelKnowledge> { case RESOURCE: ResourceType resourceType = (ResourceType) t; - addAll(resourceType.getFacets(), consistsOfUsage, facetUsage); - addAll(resourceType.getResources(), isRelatedToUsage, resourceUsage); + addAllUsage(resourceType.getFacets(), consistsOfUsage, facetUsage); + addAllUsage(resourceType.getResources(), isRelatedToUsage, resourceUsage); + + /* + * Metadata is defined in parent type i.e. EntityElement. + * We want to have a reference to all Base type + */ + if(typeName.compareTo(Resource.NAME)==0) { + addMetadataUsage(t, propertyUsage); + } break; case FACET: FacetType facetType = (FacetType) t; - addPropertyUsage(facetType.getProperties(), propertyUsage); + if(typeName.compareTo(Facet.NAME)==0) { + addMetadataUsage(t, propertyUsage); + } + addPropertyUsage(t, facetType.getProperties(), propertyUsage); + break; case IS_RELATED_TO: IsRelatedToType isRelatedToType = (IsRelatedToType) t; - + if(typeName.compareTo(IsRelatedTo.NAME)==0) { + addMetadataUsage(t, propertyUsage); + addPropagationConstraintUsage(t, propertyUsage); + } + addPropertyUsage(t, isRelatedToType.getProperties(), propertyUsage); break; case CONSISTS_OF: ConsistsOfType consistsOfType = (ConsistsOfType) t; - + if(typeName.compareTo(ConsistsOf.NAME)==0) { + addMetadataUsage(t, propertyUsage); + addPropagationConstraintUsage(t, propertyUsage); + } + addPropertyUsage(t, consistsOfType.getProperties(), propertyUsage); break; default: break; } - if(accessType == AccessType.RESOURCE) { - - - } } public Tree getTree(AccessType accessType) { diff --git a/src/main/java/org/gcube/informationsystem/knowledge/UsageKnowledge.java b/src/main/java/org/gcube/informationsystem/knowledge/UsageKnowledge.java index f497a54..ebcfdb5 100644 --- a/src/main/java/org/gcube/informationsystem/knowledge/UsageKnowledge.java +++ b/src/main/java/org/gcube/informationsystem/knowledge/UsageKnowledge.java @@ -1,9 +1,9 @@ package org.gcube.informationsystem.knowledge; +import java.util.ArrayList; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; -import java.util.Set; -import java.util.TreeSet; import org.gcube.informationsystem.base.reference.AccessType; @@ -12,23 +12,23 @@ import org.gcube.informationsystem.base.reference.AccessType; */ public class UsageKnowledge { - protected Map> map; + protected Map> map; public UsageKnowledge(AccessType accessType){ this.map = new LinkedHashMap<>(); } public void add(String typeName, U u) { - Set list = map.get(typeName); + List list = map.get(typeName); if(list==null) { - list = new TreeSet<>(); + list = new ArrayList<>(); map.put(typeName, list); } list.add(u); } - public Set getUsage(String typeName){ - Set list = map.get(typeName); + public List getUsage(String typeName){ + List list = map.get(typeName); return list; } diff --git a/src/test/java/org/gcube/informationsystem/knowledge/ModelKnowledgeTest.java b/src/test/java/org/gcube/informationsystem/knowledge/ModelKnowledgeTest.java new file mode 100644 index 0000000..37e1715 --- /dev/null +++ b/src/test/java/org/gcube/informationsystem/knowledge/ModelKnowledgeTest.java @@ -0,0 +1,101 @@ +package org.gcube.informationsystem.knowledge; + +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.util.List; +import java.util.Set; + +import org.gcube.com.fasterxml.jackson.databind.JsonNode; +import org.gcube.com.fasterxml.jackson.databind.ObjectMapper; +import org.gcube.informationsystem.base.reference.AccessType; +import org.gcube.informationsystem.queries.templates.QueryTemplateTest; +import org.gcube.informationsystem.tree.Node; +import org.gcube.informationsystem.tree.NodeElaborator; +import org.gcube.informationsystem.tree.Tree; +import org.gcube.informationsystem.types.TypeMapper; +import org.gcube.informationsystem.types.reference.Type; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author Luca Frosini (ISTI - CNR) + */ +public class ModelKnowledgeTest{ + + private static final Logger logger = LoggerFactory.getLogger(ModelKnowledgeTest.class); + + protected File getTypesDirectory() throws Exception { + URL logbackFileURL = QueryTemplateTest.class.getClassLoader().getResource("logback-test.xml"); + File logbackFile = new File(logbackFileURL.toURI()); + File resourcesDirectory = logbackFile.getParentFile(); + return new File(resourcesDirectory, "types"); + } + + protected String readFile(File file) throws IOException { + byte[] encoded = Files.readAllBytes(file.toPath()); + return new String(encoded, Charset.defaultCharset()); + } + + @Test + public void test() throws Exception { + ModelKnowledge modelKnowledge = new ModelKnowledge<>(new TypeInformation()); + + File typesDirectory = getTypesDirectory(); + + AccessType[] modelTypes = AccessType.getModelTypes(); + for(AccessType modelType : modelTypes) { + File file = new File(typesDirectory, modelType.getName() + ".json"); + String json = readFile(file); + List types = TypeMapper.deserializeTypeDefinitions(json); + modelKnowledge.addAllType(types); + } + + for(AccessType modelType : modelTypes) { + Tree tree = modelKnowledge.getTree(modelType); + + tree.elaborate(new NodeElaborator() { + + @Override + public void elaborate(Node node, int level) throws Exception { + StringBuffer stringBuffer = new StringBuffer(); + for (int i = 0; i < level; ++i) { + stringBuffer.append(Node.INDENTATION); + } + + String typeName = node.getNodeElement().getName(); + logger.info("{}- {}{}", stringBuffer.toString(), typeName, level==0 ? " (ROOT)" : ""); + + } + }); + } + + logger.info("---------------------------------------------------\n\n\n"); + + for(AccessType modelType : modelTypes) { + Tree tree = modelKnowledge.getTree(modelType); + UsageKnowledge usageKnowledge = modelKnowledge.getUsageKnowledge(modelType); + + tree.elaborate(new NodeElaborator() { + + @Override + public void elaborate(Node node, int level) throws Exception { + StringBuffer stringBuffer = new StringBuffer(); + for (int i = 0; i < level; ++i) { + stringBuffer.append(Node.INDENTATION); + } + + String typeName = node.getNodeElement().getName(); + List usage = usageKnowledge.getUsage(typeName); + + logger.info("{}- {}{} {}", stringBuffer.toString(), typeName, level==0 ? " (ROOT) " : "", usage!=null ? "known usage from definitions " + usage : "No known usage from definitions"); + + } + }); + } + + } +} diff --git a/src/test/java/org/gcube/informationsystem/types/SerializationTest.java b/src/test/java/org/gcube/informationsystem/types/SerializationTest.java index 84d796f..aa1e6da 100644 --- a/src/test/java/org/gcube/informationsystem/types/SerializationTest.java +++ b/src/test/java/org/gcube/informationsystem/types/SerializationTest.java @@ -23,6 +23,7 @@ import org.gcube.informationsystem.queries.templates.reference.properties.Templa import org.gcube.informationsystem.serialization.ElementMapper; import org.gcube.informationsystem.types.annotations.Final; import org.gcube.informationsystem.types.reference.Change; +import org.gcube.informationsystem.types.reference.Type; import org.gcube.informationsystem.types.reference.TypeMetadata; import org.gcube.informationsystem.types.reference.entities.EntityType; import org.gcube.informationsystem.types.reference.entities.FacetType; @@ -63,6 +64,13 @@ public class SerializationTest { EntityType resourceTypeDefinitionSelf = (EntityType) TypeMapper.createTypeDefinition(ResourceType.class); logger.info(ElementMapper.marshal(resourceTypeDefinitionSelf)); } + + @Test + public void entityElementDefinition() throws Exception{ + Type type = TypeMapper.createTypeDefinition(EntityElement.class); + logger.info(ElementMapper.marshal(type)); + } + @Test public void testPropertyTypeDefinition() throws Exception{ diff --git a/src/test/resources/types/ConsistsOf.json b/src/test/resources/types/ConsistsOf.json new file mode 100644 index 0000000..9c5e958 --- /dev/null +++ b/src/test/resources/types/ConsistsOf.json @@ -0,0 +1 @@ +[{"type":"ConsistsOfType","id":"5ad3ac6b-e425-4996-9c95-e041e22c5cd3","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:30:23.060 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:30:23.060 +0000"},"name":"ConsistsOf","description":"This is the base type for any ConsistsOf relation","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Relation"],"source":{"type":"ResourceType","id":"5aa731ec-b1c8-46eb-a2b2-f25172d0bc6f","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:22.304 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:22.304 +0000"},"name":"Resource","description":"This is the base type for any Resource","facets":[{"type":"LinkedEntity","source":"Resource","relation":"ConsistsOf","target":"Facet","description":"Any Resource consists of one or more Facets which describes the different aspects of the resource.","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"Resource","relation":"IsRelatedTo","target":"Resource","description":"Any Resource can be related to any other resource.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Entity"]},"target":{"type":"FacetType","id":"5f582355-57fd-41d3-93c8-62f17da6433e","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:24.869 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:24.869 +0000"},"name":"Facet","description":"This is the base type for any Facet","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Entity"]}},{"type":"ConsistsOfType","id":"caf70874-e19f-4c56-a226-2de402c675b4","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:30:39.657 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:30:39.657 +0000"},"name":"HasContact","description":"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}.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["ConsistsOf"],"source":{"type":"ResourceType","id":"5aa731ec-b1c8-46eb-a2b2-f25172d0bc6f","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:22.304 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:22.304 +0000"},"name":"Resource","description":"This is the base type for any Resource","facets":[{"type":"LinkedEntity","source":"Resource","relation":"ConsistsOf","target":"Facet","description":"Any Resource consists of one or more Facets which describes the different aspects of the resource.","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"Resource","relation":"IsRelatedTo","target":"Resource","description":"Any Resource can be related to any other resource.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Entity"]},"target":{"type":"FacetType","id":"3093a81d-e65b-468f-a1f8-9bdb28f2ab78","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:26:24.251 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:26:24.251 +0000"},"name":"ContactFacet","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.","properties":[{"type":"PropertyDefinition","name":"surname","description":"Surname","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"middleName","description":"Middle Name","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"title","description":"A name describing the profession or marital status of the point of contact. e.g., Dr, Mrs, Mr.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"eMail","description":"Email address","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":"^[a-z0-9._%+-]{1,128}@[a-z0-9.-]{1,128}$","propertyType":"String"},{"type":"PropertyDefinition","name":"name","description":"First Name","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]}},{"type":"ConsistsOfType","id":"8cf5c98e-0461-4e83-b914-187455c751b8","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:31:12.497 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:31:12.497 +0000"},"name":"HasContributor","description":"HasContributor indicates that the target {@link 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":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["HasContact"],"source":{"type":"ResourceType","id":"5aa731ec-b1c8-46eb-a2b2-f25172d0bc6f","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:22.304 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:22.304 +0000"},"name":"Resource","description":"This is the base type for any Resource","facets":[{"type":"LinkedEntity","source":"Resource","relation":"ConsistsOf","target":"Facet","description":"Any Resource consists of one or more Facets which describes the different aspects of the resource.","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"Resource","relation":"IsRelatedTo","target":"Resource","description":"Any Resource can be related to any other resource.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Entity"]},"target":{"type":"FacetType","id":"3093a81d-e65b-468f-a1f8-9bdb28f2ab78","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:26:24.251 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:26:24.251 +0000"},"name":"ContactFacet","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.","properties":[{"type":"PropertyDefinition","name":"surname","description":"Surname","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"middleName","description":"Middle Name","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"title","description":"A name describing the profession or marital status of the point of contact. e.g., Dr, Mrs, Mr.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"eMail","description":"Email address","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":"^[a-z0-9._%+-]{1,128}@[a-z0-9.-]{1,128}$","propertyType":"String"},{"type":"PropertyDefinition","name":"name","description":"First Name","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]}},{"type":"ConsistsOfType","id":"bb0caf98-d725-46c3-b091-a1da92816efd","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:31:07.025 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:31:07.025 +0000"},"name":"HasRemoveAction","description":"An action triggered when a {@link Service} is deactivated.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["HasAction"],"source":{"type":"ResourceType","id":"30922302-8db8-4f78-9d52-07b2a1dcae5d","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:45.398 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:45.398 +0000"},"name":"Service","description":"Service (Abstract) represents any typology of service worth registering in the infrastructure. Service has relations with quite all other resources. If on one side, an Hybrid Data Infrastructure (HDI) is created to manage datasets, on the other side the HDI born to manage such datasets digitally. We could affirm that datasets and services are the two pillar resources around which revolves the entire infrastructure. It is important to highlight that Service has a general meaning and must not be intended as a network-callable service which is represented instead by one of its specialisation called {@link EService}.Giving that Service is abstract no {@link IsIdentifiedBy} association with a facet is provided which in turns is responsibility of the specialisation.","facets":[{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"DescriptiveMetadataFacet","description":"Any descriptive information associated with the service, e.g. for discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"SubjectFacet","description":"Any subject/tag associated with the service for descriptive, cataloguing and discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"CapabilityFacet","description":"Any facility supported/offered by the Service.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Service","relation":"CallsFor","target":"Service","description":"A reference to the Services needed by the target instance to work.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Activates","target":"Service","description":"The source Service enables the target Service to be running. Examples are an Hosting Node which enables an EService; A VirtualMachine enabling an EService or an HostingNode; An EService enabling a RunningPlugin; A VirtualMachine enabling an HostingNode etc","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"IsCustomizedBy","target":"ConfigurationTemplate","description":"A reference to any configuration characterising the Service behaviour.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Manages","target":"Dataset","description":"A reference to any Dataset resource managed by the Service instance.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Enables","target":"Software","description":"A reference to any Software the Service is enabling (i.e. the Software is running throught the EService).","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Requires","target":"Service","description":"A reference to any Service needed by a Software to properly operate, e.g. this can be used to capture a sort of run-time requirements between a software component and the Service it needs.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["GCubeResource"]},"target":{"type":"FacetType","id":"601de5d1-dff7-4cb7-bb10-cf1a54c7f9a6","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:26:48.652 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:26:48.652 +0000"},"name":"ActionFacet","description":"This facet is expected to capture information on which action perform while a resource is added or removed from a context.","properties":[{"type":"PropertyDefinition","name":"command","description":"The command to execute.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"options","description":"The options/params to use when executing the action.","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"source","description":"From where to download the action.","mandatory":false,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"type","description":"Type of action","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"EnumStringProperty"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]}},{"type":"ConsistsOfType","id":"eb897ef9-67d7-418d-95be-dd42c2ae2be8","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:30:51.684 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:30:51.684 +0000"},"name":"HasMemory","description":"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.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["ConsistsOf"],"source":{"type":"ResourceType","id":"5aa731ec-b1c8-46eb-a2b2-f25172d0bc6f","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:22.304 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:22.304 +0000"},"name":"Resource","description":"This is the base type for any Resource","facets":[{"type":"LinkedEntity","source":"Resource","relation":"ConsistsOf","target":"Facet","description":"Any Resource consists of one or more Facets which describes the different aspects of the resource.","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"Resource","relation":"IsRelatedTo","target":"Resource","description":"Any Resource can be related to any other resource.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Entity"]},"target":{"type":"FacetType","id":"813497b8-dbef-4793-a115-bf9c5267d57b","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:27:14.799 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:27:14.799 +0000"},"name":"MemoryFacet","description":"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.","properties":[{"type":"PropertyDefinition","name":"used","description":"","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"Long"},{"type":"PropertyDefinition","name":"unit","description":"","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":"^(Byte|kB|MB|GB|TB|PB|EB|ZB|YB)$","propertyType":"String"},{"type":"PropertyDefinition","name":"size","description":"","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"Long"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]}},{"type":"ConsistsOfType","id":"51c9bc3d-f23b-4fde-b4fa-57d0062e507a","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:31:04.106 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:31:04.106 +0000"},"name":"IsIdentifiedBy","description":"Each {@link GCubeResource} has been defined to have at least a facet linked with an IsIdentifiedBy relation. IsIdentifiedBy indicates that the target facet represents a sort of identification for the source resource. For instance, a software can consist of one or more {@link SoftwareFacet} but the one related with IsIdentifiedBy represents the identify of the software.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["ConsistsOf"],"source":{"type":"ResourceType","id":"5aa731ec-b1c8-46eb-a2b2-f25172d0bc6f","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:22.304 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:22.304 +0000"},"name":"Resource","description":"This is the base type for any Resource","facets":[{"type":"LinkedEntity","source":"Resource","relation":"ConsistsOf","target":"Facet","description":"Any Resource consists of one or more Facets which describes the different aspects of the resource.","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"Resource","relation":"IsRelatedTo","target":"Resource","description":"Any Resource can be related to any other resource.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Entity"]},"target":{"type":"FacetType","id":"5f582355-57fd-41d3-93c8-62f17da6433e","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:24.869 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:24.869 +0000"},"name":"Facet","description":"This is the base type for any Facet","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Entity"]}},{"type":"ConsistsOfType","id":"ba776497-261f-42ea-83b5-01fba6ba4e74","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:30:54.124 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:30:54.124 +0000"},"name":"HasPersistentMemory","description":"HasPersistentMemory indicates that the target {@link 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.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["HasMemory"],"source":{"type":"ResourceType","id":"5aa731ec-b1c8-46eb-a2b2-f25172d0bc6f","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:22.304 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:22.304 +0000"},"name":"Resource","description":"This is the base type for any Resource","facets":[{"type":"LinkedEntity","source":"Resource","relation":"ConsistsOf","target":"Facet","description":"Any Resource consists of one or more Facets which describes the different aspects of the resource.","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"Resource","relation":"IsRelatedTo","target":"Resource","description":"Any Resource can be related to any other resource.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Entity"]},"target":{"type":"FacetType","id":"813497b8-dbef-4793-a115-bf9c5267d57b","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:27:14.799 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:27:14.799 +0000"},"name":"MemoryFacet","description":"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.","properties":[{"type":"PropertyDefinition","name":"used","description":"","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"Long"},{"type":"PropertyDefinition","name":"unit","description":"","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":"^(Byte|kB|MB|GB|TB|PB|EB|ZB|YB)$","propertyType":"String"},{"type":"PropertyDefinition","name":"size","description":"","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"Long"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]}},{"type":"ConsistsOfType","id":"8b09887d-adc4-4c00-889b-ff92c17e9e95","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:31:01.615 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:31:01.615 +0000"},"name":"HasVolatileMemory","description":"HasVolatileMemory indicates that the target {@link 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.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["HasMemory"],"source":{"type":"ResourceType","id":"5aa731ec-b1c8-46eb-a2b2-f25172d0bc6f","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:22.304 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:22.304 +0000"},"name":"Resource","description":"This is the base type for any Resource","facets":[{"type":"LinkedEntity","source":"Resource","relation":"ConsistsOf","target":"Facet","description":"Any Resource consists of one or more Facets which describes the different aspects of the resource.","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"Resource","relation":"IsRelatedTo","target":"Resource","description":"Any Resource can be related to any other resource.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Entity"]},"target":{"type":"FacetType","id":"813497b8-dbef-4793-a115-bf9c5267d57b","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:27:14.799 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:27:14.799 +0000"},"name":"MemoryFacet","description":"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.","properties":[{"type":"PropertyDefinition","name":"used","description":"","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"Long"},{"type":"PropertyDefinition","name":"unit","description":"","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":"^(Byte|kB|MB|GB|TB|PB|EB|ZB|YB)$","propertyType":"String"},{"type":"PropertyDefinition","name":"size","description":"","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"Long"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]}},{"type":"ConsistsOfType","id":"5d412589-daf1-4b3a-993b-aa8aeafdd51c","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:30:59.092 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:30:59.092 +0000"},"name":"HasCreator","description":"HasCreator indicates that the target {@link ContactFacet} contains the information related to a creator of the source resource, e.g., the contact points of the creator of a dataset.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["HasContact"],"source":{"type":"ResourceType","id":"5aa731ec-b1c8-46eb-a2b2-f25172d0bc6f","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:22.304 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:22.304 +0000"},"name":"Resource","description":"This is the base type for any Resource","facets":[{"type":"LinkedEntity","source":"Resource","relation":"ConsistsOf","target":"Facet","description":"Any Resource consists of one or more Facets which describes the different aspects of the resource.","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"Resource","relation":"IsRelatedTo","target":"Resource","description":"Any Resource can be related to any other resource.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Entity"]},"target":{"type":"FacetType","id":"3093a81d-e65b-468f-a1f8-9bdb28f2ab78","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:26:24.251 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:26:24.251 +0000"},"name":"ContactFacet","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.","properties":[{"type":"PropertyDefinition","name":"surname","description":"Surname","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"middleName","description":"Middle Name","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"title","description":"A name describing the profession or marital status of the point of contact. e.g., Dr, Mrs, Mr.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"eMail","description":"Email address","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":"^[a-z0-9._%+-]{1,128}@[a-z0-9.-]{1,128}$","propertyType":"String"},{"type":"PropertyDefinition","name":"name","description":"First Name","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]}},{"type":"ConsistsOfType","id":"ec2088bd-d0c9-453a-bc99-7772d44f37d3","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:30:31.912 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:30:31.912 +0000"},"name":"HasCoverage","description":"HasCoverage represents the type of coverage that is provided by the 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 isnot 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 {@link 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 {@link CoverageFacet}.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["ConsistsOf"],"source":{"type":"ResourceType","id":"5aa731ec-b1c8-46eb-a2b2-f25172d0bc6f","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:22.304 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:22.304 +0000"},"name":"Resource","description":"This is the base type for any Resource","facets":[{"type":"LinkedEntity","source":"Resource","relation":"ConsistsOf","target":"Facet","description":"Any Resource consists of one or more Facets which describes the different aspects of the resource.","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"Resource","relation":"IsRelatedTo","target":"Resource","description":"Any Resource can be related to any other resource.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Entity"]},"target":{"type":"FacetType","id":"ef0b2492-d01e-48a7-83a4-785ba77f4260","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:26:00.375 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:26:00.375 +0000"},"name":"CoverageFacet","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'. 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 theocean area the dataset is valid. This information is captured by the CoverageFacet.","properties":[{"type":"PropertyDefinition","name":"coverage","description":"The value indicates the 'area' covered by the dataset according to the schema","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"ValueSchema"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]}},{"type":"ConsistsOfType","id":"23552c99-2ea3-4f86-97ae-a1a921e8f962","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:30:34.537 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:30:34.537 +0000"},"name":"HasTemporalCoverage","description":"HasTemporalCoverage indicates that the target {@link CoverageFacet} indicates a temporal coverage information e.g., the temporal period indication for the dataset.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["HasCoverage"],"source":{"type":"ResourceType","id":"5aa731ec-b1c8-46eb-a2b2-f25172d0bc6f","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:22.304 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:22.304 +0000"},"name":"Resource","description":"This is the base type for any Resource","facets":[{"type":"LinkedEntity","source":"Resource","relation":"ConsistsOf","target":"Facet","description":"Any Resource consists of one or more Facets which describes the different aspects of the resource.","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"Resource","relation":"IsRelatedTo","target":"Resource","description":"Any Resource can be related to any other resource.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Entity"]},"target":{"type":"FacetType","id":"ef0b2492-d01e-48a7-83a4-785ba77f4260","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:26:00.375 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:26:00.375 +0000"},"name":"CoverageFacet","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'. 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 theocean area the dataset is valid. This information is captured by the CoverageFacet.","properties":[{"type":"PropertyDefinition","name":"coverage","description":"The value indicates the 'area' covered by the dataset according to the schema","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"ValueSchema"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]}},{"type":"ConsistsOfType","id":"5ea56fd8-8c33-4c4e-b685-55d3e488411a","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:30:25.584 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:30:25.584 +0000"},"name":"HasAction","description":"Relation among a {@link Service} and its {@link ActionFacet}","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["ConsistsOf"],"source":{"type":"ResourceType","id":"30922302-8db8-4f78-9d52-07b2a1dcae5d","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:45.398 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:45.398 +0000"},"name":"Service","description":"Service (Abstract) represents any typology of service worth registering in the infrastructure. Service has relations with quite all other resources. If on one side, an Hybrid Data Infrastructure (HDI) is created to manage datasets, on the other side the HDI born to manage such datasets digitally. We could affirm that datasets and services are the two pillar resources around which revolves the entire infrastructure. It is important to highlight that Service has a general meaning and must not be intended as a network-callable service which is represented instead by one of its specialisation called {@link EService}.Giving that Service is abstract no {@link IsIdentifiedBy} association with a facet is provided which in turns is responsibility of the specialisation.","facets":[{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"DescriptiveMetadataFacet","description":"Any descriptive information associated with the service, e.g. for discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"SubjectFacet","description":"Any subject/tag associated with the service for descriptive, cataloguing and discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"CapabilityFacet","description":"Any facility supported/offered by the Service.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Service","relation":"CallsFor","target":"Service","description":"A reference to the Services needed by the target instance to work.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Activates","target":"Service","description":"The source Service enables the target Service to be running. Examples are an Hosting Node which enables an EService; A VirtualMachine enabling an EService or an HostingNode; An EService enabling a RunningPlugin; A VirtualMachine enabling an HostingNode etc","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"IsCustomizedBy","target":"ConfigurationTemplate","description":"A reference to any configuration characterising the Service behaviour.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Manages","target":"Dataset","description":"A reference to any Dataset resource managed by the Service instance.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Enables","target":"Software","description":"A reference to any Software the Service is enabling (i.e. the Software is running throught the EService).","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Requires","target":"Service","description":"A reference to any Service needed by a Software to properly operate, e.g. this can be used to capture a sort of run-time requirements between a software component and the Service it needs.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["GCubeResource"]},"target":{"type":"FacetType","id":"601de5d1-dff7-4cb7-bb10-cf1a54c7f9a6","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:26:48.652 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:26:48.652 +0000"},"name":"ActionFacet","description":"This facet is expected to capture information on which action perform while a resource is added or removed from a context.","properties":[{"type":"PropertyDefinition","name":"options","description":"The options/params to use when executing the action.","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"command","description":"The command to execute.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"source","description":"From where to download the action.","mandatory":false,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"type","description":"Type of action","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"EnumStringProperty"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]}},{"type":"ConsistsOfType","id":"bee61a60-7577-45c4-9588-ecdb015e0e78","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:30:28.275 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:30:28.275 +0000"},"name":"HasAddAction","description":"An action triggered when a {@link Service} is activated.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["HasAction"],"source":{"type":"ResourceType","id":"30922302-8db8-4f78-9d52-07b2a1dcae5d","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:45.398 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:45.398 +0000"},"name":"Service","description":"Service (Abstract) represents any typology of service worth registering in the infrastructure. Service has relations with quite all other resources. If on one side, an Hybrid Data Infrastructure (HDI) is created to manage datasets, on the other side the HDI born to manage such datasets digitally. We could affirm that datasets and services are the two pillar resources around which revolves the entire infrastructure. It is important to highlight that Service has a general meaning and must not be intended as a network-callable service which is represented instead by one of its specialisation called {@link EService}.Giving that Service is abstract no {@link IsIdentifiedBy} association with a facet is provided which in turns is responsibility of the specialisation.","facets":[{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"DescriptiveMetadataFacet","description":"Any descriptive information associated with the service, e.g. for discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"SubjectFacet","description":"Any subject/tag associated with the service for descriptive, cataloguing and discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"CapabilityFacet","description":"Any facility supported/offered by the Service.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Service","relation":"CallsFor","target":"Service","description":"A reference to the Services needed by the target instance to work.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Activates","target":"Service","description":"The source Service enables the target Service to be running. Examples are an Hosting Node which enables an EService; A VirtualMachine enabling an EService or an HostingNode; An EService enabling a RunningPlugin; A VirtualMachine enabling an HostingNode etc","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"IsCustomizedBy","target":"ConfigurationTemplate","description":"A reference to any configuration characterising the Service behaviour.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Manages","target":"Dataset","description":"A reference to any Dataset resource managed by the Service instance.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Enables","target":"Software","description":"A reference to any Software the Service is enabling (i.e. the Software is running throught the EService).","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Requires","target":"Service","description":"A reference to any Service needed by a Software to properly operate, e.g. this can be used to capture a sort of run-time requirements between a software component and the Service it needs.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["GCubeResource"]},"target":{"type":"FacetType","id":"601de5d1-dff7-4cb7-bb10-cf1a54c7f9a6","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:26:48.652 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:26:48.652 +0000"},"name":"ActionFacet","description":"This facet is expected to capture information on which action perform while a resource is added or removed from a context.","properties":[{"type":"PropertyDefinition","name":"options","description":"The options/params to use when executing the action.","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"command","description":"The command to execute.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"source","description":"From where to download the action.","mandatory":false,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"type","description":"Type of action","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"EnumStringProperty"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]}},{"type":"ConsistsOfType","id":"bd8a0bce-7956-4d1c-b150-7babd83f3b8c","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:30:56.557 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:30:56.557 +0000"},"name":"HasOwner","description":"HasOwner indicates that the target {@link ContactFacet} contains the information related to the owner of the source resource, e.g., the contact points of the owner of dataset.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["HasContact"],"source":{"type":"ResourceType","id":"5aa731ec-b1c8-46eb-a2b2-f25172d0bc6f","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:22.304 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:22.304 +0000"},"name":"Resource","description":"This is the base type for any Resource","facets":[{"type":"LinkedEntity","source":"Resource","relation":"ConsistsOf","target":"Facet","description":"Any Resource consists of one or more Facets which describes the different aspects of the resource.","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"Resource","relation":"IsRelatedTo","target":"Resource","description":"Any Resource can be related to any other resource.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Entity"]},"target":{"type":"FacetType","id":"3093a81d-e65b-468f-a1f8-9bdb28f2ab78","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:26:24.251 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:26:24.251 +0000"},"name":"ContactFacet","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.","properties":[{"type":"PropertyDefinition","name":"surname","description":"Surname","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"middleName","description":"Middle Name","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"title","description":"A name describing the profession or marital status of the point of contact. e.g., Dr, Mrs, Mr.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"eMail","description":"Email address","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":"^[a-z0-9._%+-]{1,128}@[a-z0-9.-]{1,128}$","propertyType":"String"},{"type":"PropertyDefinition","name":"name","description":"First Name","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]}},{"type":"ConsistsOfType","id":"11c82300-0a7b-4384-b2ce-fb151cda57eb","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:30:46.348 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:30:46.348 +0000"},"name":"HasMaintainer","description":"HasDeveloper indicates that the target {@link ContactFacet} contains the information related to a developer of the source resource, e.g., the contact points of the developer of a software.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["HasContact"],"source":{"type":"ResourceType","id":"5aa731ec-b1c8-46eb-a2b2-f25172d0bc6f","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:22.304 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:22.304 +0000"},"name":"Resource","description":"This is the base type for any Resource","facets":[{"type":"LinkedEntity","source":"Resource","relation":"ConsistsOf","target":"Facet","description":"Any Resource consists of one or more Facets which describes the different aspects of the resource.","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"Resource","relation":"IsRelatedTo","target":"Resource","description":"Any Resource can be related to any other resource.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Entity"]},"target":{"type":"FacetType","id":"3093a81d-e65b-468f-a1f8-9bdb28f2ab78","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:26:24.251 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:26:24.251 +0000"},"name":"ContactFacet","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.","properties":[{"type":"PropertyDefinition","name":"surname","description":"Surname","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"middleName","description":"Middle Name","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"title","description":"A name describing the profession or marital status of the point of contact. e.g., Dr, Mrs, Mr.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"eMail","description":"Email address","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":"^[a-z0-9._%+-]{1,128}@[a-z0-9.-]{1,128}$","propertyType":"String"},{"type":"PropertyDefinition","name":"name","description":"First Name","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]}},{"type":"ConsistsOfType","id":"a88fd602-95b1-44ce-98e3-9a88b9f2cd06","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:30:49.017 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:30:49.017 +0000"},"name":"HasCurator","description":"HasCurator indicates that the target {@link ContactFacet} contains the information related to a curator of the source resource, e.g., the contact points of the curator of a dataset.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["HasContact"],"source":{"type":"ResourceType","id":"5aa731ec-b1c8-46eb-a2b2-f25172d0bc6f","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:22.304 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:22.304 +0000"},"name":"Resource","description":"This is the base type for any Resource","facets":[{"type":"LinkedEntity","source":"Resource","relation":"ConsistsOf","target":"Facet","description":"Any Resource consists of one or more Facets which describes the different aspects of the resource.","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"Resource","relation":"IsRelatedTo","target":"Resource","description":"Any Resource can be related to any other resource.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Entity"]},"target":{"type":"FacetType","id":"3093a81d-e65b-468f-a1f8-9bdb28f2ab78","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:26:24.251 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:26:24.251 +0000"},"name":"ContactFacet","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.","properties":[{"type":"PropertyDefinition","name":"surname","description":"Surname","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"middleName","description":"Middle Name","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"title","description":"A name describing the profession or marital status of the point of contact. e.g., Dr, Mrs, Mr.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"eMail","description":"Email address","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":"^[a-z0-9._%+-]{1,128}@[a-z0-9.-]{1,128}$","propertyType":"String"},{"type":"PropertyDefinition","name":"name","description":"First Name","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]}},{"type":"ConsistsOfType","id":"2ea7080c-0ad6-4024-b01d-7403af706fe7","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:31:09.716 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:31:09.716 +0000"},"name":"HasManager","description":"HasManager indicates that the target {@link 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":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["HasContact"],"source":{"type":"ResourceType","id":"5aa731ec-b1c8-46eb-a2b2-f25172d0bc6f","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:22.304 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:22.304 +0000"},"name":"Resource","description":"This is the base type for any Resource","facets":[{"type":"LinkedEntity","source":"Resource","relation":"ConsistsOf","target":"Facet","description":"Any Resource consists of one or more Facets which describes the different aspects of the resource.","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"Resource","relation":"IsRelatedTo","target":"Resource","description":"Any Resource can be related to any other resource.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Entity"]},"target":{"type":"FacetType","id":"3093a81d-e65b-468f-a1f8-9bdb28f2ab78","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:26:24.251 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:26:24.251 +0000"},"name":"ContactFacet","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.","properties":[{"type":"PropertyDefinition","name":"surname","description":"Surname","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"middleName","description":"Middle Name","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"title","description":"A name describing the profession or marital status of the point of contact. e.g., Dr, Mrs, Mr.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"eMail","description":"Email address","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":"^[a-z0-9._%+-]{1,128}@[a-z0-9.-]{1,128}$","propertyType":"String"},{"type":"PropertyDefinition","name":"name","description":"First Name","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]}},{"type":"ConsistsOfType","id":"fd0f90d0-c2b3-4a26-a348-f5f48c05f4fb","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:30:43.715 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:30:43.715 +0000"},"name":"HasDeveloper","description":"HasDeveloper indicates that the target {@link ContactFacet} contains the information related to a developer of the source resource e.g., the contact points ofthe developer of a software.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["HasContact"],"source":{"type":"ResourceType","id":"5aa731ec-b1c8-46eb-a2b2-f25172d0bc6f","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:22.304 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:22.304 +0000"},"name":"Resource","description":"This is the base type for any Resource","facets":[{"type":"LinkedEntity","source":"Resource","relation":"ConsistsOf","target":"Facet","description":"Any Resource consists of one or more Facets which describes the different aspects of the resource.","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"Resource","relation":"IsRelatedTo","target":"Resource","description":"Any Resource can be related to any other resource.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Entity"]},"target":{"type":"FacetType","id":"3093a81d-e65b-468f-a1f8-9bdb28f2ab78","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:26:24.251 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:26:24.251 +0000"},"name":"ContactFacet","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.","properties":[{"type":"PropertyDefinition","name":"surname","description":"Surname","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"middleName","description":"Middle Name","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"title","description":"A name describing the profession or marital status of the point of contact. e.g., Dr, Mrs, Mr.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"eMail","description":"Email address","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":"^[a-z0-9._%+-]{1,128}@[a-z0-9.-]{1,128}$","propertyType":"String"},{"type":"PropertyDefinition","name":"name","description":"First Name","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]}},{"type":"ConsistsOfType","id":"968cfc00-4eae-47a5-963f-f89973f3bbf8","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:30:36.992 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:30:36.992 +0000"},"name":"HasSpatialCoverage","description":"HasSpatialCoverage indicates that the target {@link CoverageFacet} indicates a spatial coverage information, e.g., the geographic area indication for the dataset.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["HasCoverage"],"source":{"type":"ResourceType","id":"5aa731ec-b1c8-46eb-a2b2-f25172d0bc6f","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:22.304 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:22.304 +0000"},"name":"Resource","description":"This is the base type for any Resource","facets":[{"type":"LinkedEntity","source":"Resource","relation":"ConsistsOf","target":"Facet","description":"Any Resource consists of one or more Facets which describes the different aspects of the resource.","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"Resource","relation":"IsRelatedTo","target":"Resource","description":"Any Resource can be related to any other resource.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Entity"]},"target":{"type":"FacetType","id":"ef0b2492-d01e-48a7-83a4-785ba77f4260","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:26:00.375 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:26:00.375 +0000"},"name":"CoverageFacet","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'. 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 theocean area the dataset is valid. This information is captured by the CoverageFacet.","properties":[{"type":"PropertyDefinition","name":"coverage","description":"The value indicates the 'area' covered by the dataset according to the schema","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"ValueSchema"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]}}] \ No newline at end of file diff --git a/src/test/resources/types/Facet.json b/src/test/resources/types/Facet.json new file mode 100644 index 0000000..cf7ea50 --- /dev/null +++ b/src/test/resources/types/Facet.json @@ -0,0 +1 @@ +[{"type":"FacetType","id":"5f582355-57fd-41d3-93c8-62f17da6433e","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:24.869 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:24.869 +0000"},"name":"Facet","description":"This is the base type for any Facet","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Entity"]},{"type":"FacetType","id":"3aef7125-cdc0-4ee3-bb19-e17233e31ba2","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:27:05.815 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:27:05.815 +0000"},"name":"ProvenanceFacet","description":"ProvenanceFacet captures information on provenance/lineage of the entire resource. It is mainly used to describe provenance information of a Dataset.","properties":[{"type":"PropertyDefinition","name":"document","description":"Provenance Document, e.g., an XML according to the reference schema.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"ValueSchema"},{"type":"PropertyDefinition","name":"reference","description":"The ID of the referenced resource.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"relationship","description":"Relationship with the resource indicated by ID. Please note that the provenance has not been modelled as IsRelatedTo specialization, because the source resource is not necessarly in the IS or could be deleted from the IS at any time.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":"^(wasDerivedFrom|wasGeneratedBy)$","propertyType":"String"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]},{"type":"FacetType","id":"f1ed587b-8e08-4075-8889-5201864d4565","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:26:10.083 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:26:10.083 +0000"},"name":"CPUFacet","description":"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.","properties":[{"type":"PropertyDefinition","name":"model","description":"CPU Model","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"vendor","description":"CPU Vendor","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"clockSpeed","description":"Clock speed expressed with the unit, e.g., 1 GHz.","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]},{"type":"FacetType","id":"eea9ea80-d9ca-48dc-86db-f4c8fc63c8aa","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:25:47.991 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:25:47.991 +0000"},"name":"LocationFacet","description":"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.","properties":[{"type":"PropertyDefinition","name":"longitude","description":"Longitude","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"latitude","description":"Latitude","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"location","description":"The City name","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"country","description":"The English name of the country","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]},{"type":"FacetType","id":"1a5380dd-2b07-416f-bce9-47b0901df507","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:58.174 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:58.174 +0000"},"name":"SoftwareFacet","description":"SoftwareFacet captures information on any software associated with the resource.","properties":[{"type":"PropertyDefinition","name":"optional","description":"Used to indicate the software optionality, e.g., optional in maven coordinates","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"Boolean"},{"type":"PropertyDefinition","name":"name","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,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"group","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,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"description","description":"A human oriented description of the software artifact being described","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"version","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,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"qualifier","description":"A qualifier for the software, e.g., packaging or scope in maven coordinates, target architecture for retail software such as x86 or amd64","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]},{"type":"FacetType","id":"6248d07b-37f0-499e-b2b9-4f68543dc47c","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:22.355 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:22.355 +0000"},"name":"IdentifierFacet","description":"IdentifierFacet captures information on identifiers (other than the ones automatically generated by the system) that can be attached to a resource.","properties":[{"type":"PropertyDefinition","name":"value","description":"The identifier","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"identificationType","description":"The typology of identifier","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":"^(URI|DOI|IRI|URL|URN|UUID|STRING)$","propertyType":"String"},{"type":"PropertyDefinition","name":"perstent","description":"To indicate whether the identifier is persistent or not","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"Boolean"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]},{"type":"FacetType","id":"a89c5127-725f-4dc5-b463-f4f5fa37a673","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:26:35.669 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:26:35.669 +0000"},"name":"SimpleFacet","description":"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 Facetto capture the particular aspect of the resource. The usage of SimpleFacet should be reduced to the maximum.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]},{"type":"FacetType","id":"5459f648-f00c-4121-8dff-0df569034dc7","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:25:34.463 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:25:34.463 +0000"},"name":"AccessPointFacet","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. For example, it is used to define the network endpoint to contact the service. The endpoint can expose a well-known high-level protocol.","properties":[{"type":"PropertyDefinition","name":"authorization","description":"Contains authorisation information. e.g., a token, the couple username:password, etc.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"Property"},{"type":"PropertyDefinition","name":"protocol","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.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"endpoint","description":"The URI which characterises the specific endpoint instance.","mandatory":true,"readonly":true,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"entryName","description":"A distinguishing string to be used by clients to identify the access point of interest.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"description","description":"A human-oriented text accompanying the access point.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]},{"type":"FacetType","id":"813497b8-dbef-4793-a115-bf9c5267d57b","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:27:14.799 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:27:14.799 +0000"},"name":"MemoryFacet","description":"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.","properties":[{"type":"PropertyDefinition","name":"used","description":"","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"Long"},{"type":"PropertyDefinition","name":"unit","description":"","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":"^(Byte|kB|MB|GB|TB|PB|EB|ZB|YB)$","propertyType":"String"},{"type":"PropertyDefinition","name":"size","description":"","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"Long"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]},{"type":"FacetType","id":"2e1e663f-9624-41f3-9428-51a72bd199ed","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:41.008 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:41.008 +0000"},"name":"SchemaFacet","description":"SchemaFacet captures information on any schema, i.e., a vocabulary used to validate a document associated with a resource. Examples of schema are JavaScript Object Notation (JSON) schema and XML schema. JSON schema \"is a vocabulary that allows you to annotate and validate JSON documents\". JSON schema is under standardisation by Internet Engineering Task force (IETF) (see references at https://json-schema.org/specification.html). XSD defines the legal building blocks of an XML document. DTD defines the structure and the legal elements and attributes of an XML document.","properties":[{"type":"PropertyDefinition","name":"schema","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.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"ValueSchema"},{"type":"PropertyDefinition","name":"name","description":"Schema Name","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"description","description":"Schema Description","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]},{"type":"FacetType","id":"cd66de5f-c494-44e2-938c-e0265ee11df3","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:25:19.564 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:25:19.564 +0000"},"name":"NetworkingFacet","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. It should not be confused with the {@link AccessPointFacet} which instead describes the protocol and the endpoint of a web-based service.","properties":[{"type":"PropertyDefinition","name":"broadcastAddress","description":"Broadcast Address","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"IPAddress","description":"Internet Protocol (IP) Address","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"hostName","description":"Host Name","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"domainName","description":"Domain Name","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"mask","description":"Network Mask","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]},{"type":"FacetType","id":"ef0b2492-d01e-48a7-83a4-785ba77f4260","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:26:00.375 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:26:00.375 +0000"},"name":"CoverageFacet","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'. 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 theocean area the dataset is valid. This information is captured by the CoverageFacet.","properties":[{"type":"PropertyDefinition","name":"coverage","description":"The value indicates the 'area' covered by the dataset according to the schema","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"ValueSchema"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]},{"type":"FacetType","id":"bad50352-cd3b-4717-81ea-9826f675e373","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:25:03.574 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:25:03.574 +0000"},"name":"SubjectFacet","description":"SubjectFacet captures information on subjects associated with the resource for description, classification and discovery purposes.","properties":[{"type":"PropertyDefinition","name":"subject","description":"The value of the subject according to the schema","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"ValueSchema"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]},{"type":"FacetType","id":"0ba34161-ce99-4b19-8abe-cfe5f273e0db","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:12.276 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:12.276 +0000"},"name":"DescriptiveMetadataFacet","description":"DescriptiveMetadataFacet captures information on descriptive metadata to be associated with the resource. This facet is mainly used to attach metadata to a Dataset.","properties":[{"type":"PropertyDefinition","name":"descriptiveMetadata","description":"A metadata record representing the descriptive metadata according to the schema","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"ValueSchema"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]},{"type":"FacetType","id":"28a8139c-f59d-470b-acfc-062f6d8a53ed","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:29.639 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:29.639 +0000"},"name":"StateFacet","description":"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.","properties":[{"type":"PropertyDefinition","name":"value","description":"The value of the state","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]},{"type":"FacetType","id":"601de5d1-dff7-4cb7-bb10-cf1a54c7f9a6","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:26:48.652 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:26:48.652 +0000"},"name":"ActionFacet","description":"This facet is expected to capture information on which action perform while a resource is added or removed from a context.","properties":[{"type":"PropertyDefinition","name":"options","description":"The options/params to use when executing the action.","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"command","description":"The command to execute.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"source","description":"From where to download the action.","mandatory":false,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"type","description":"Type of action","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"EnumStringProperty"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]},{"type":"FacetType","id":"3093a81d-e65b-468f-a1f8-9bdb28f2ab78","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:26:24.251 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:26:24.251 +0000"},"name":"ContactFacet","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.","properties":[{"type":"PropertyDefinition","name":"surname","description":"Surname","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"middleName","description":"Middle Name","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"title","description":"A name describing the profession or marital status of the point of contact. e.g., Dr, Mrs, Mr.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"eMail","description":"Email address","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":"^[a-z0-9._%+-]{1,128}@[a-z0-9.-]{1,128}$","propertyType":"String"},{"type":"PropertyDefinition","name":"name","description":"First Name","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]},{"type":"FacetType","id":"464cffab-11a6-4163-be8e-d74838bee571","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:07.425 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:07.425 +0000"},"name":"CapabilityFacet","description":"CapabilityFacet captures a defined facility for performing 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)).","properties":[{"type":"PropertyDefinition","name":"qualifier","description":"A string used to specialise the capability.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"name","description":"The distinguishing name of the capability.","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"description","description":"A human oriented description of the capability.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]},{"type":"FacetType","id":"e3f359f7-fb40-4a7e-b691-77c054b10670","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:26:56.395 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:26:56.395 +0000"},"name":"SimplePropertyFacet","description":"Collect name-value property","properties":[{"type":"PropertyDefinition","name":"value","description":"","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"name","description":"","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]},{"type":"FacetType","id":"70cf2546-4f1e-46de-a78b-96cdfec32031","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:25:55.230 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:25:55.230 +0000"},"name":"EventFacet","description":"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.","properties":[{"type":"PropertyDefinition","name":"event","description":"The typology of event","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"date","description":"The time the event took place/occurred","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"Date"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]},{"type":"FacetType","id":"4037b44f-b69b-4d1f-9ca1-8aad392e84bc","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:27:35.767 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:27:35.767 +0000"},"name":"LicenseFacet","description":"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.","properties":[{"type":"PropertyDefinition","name":"name","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,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"textURL","description":"The URL to the actual text of the license.","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]},{"type":"FacetType","id":"bcfaf02a-1675-45b7-918b-b2798c307b47","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:26:33.646 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:26:33.646 +0000"},"name":"ContactReferenceFacet","description":"ContactReferenceFacet captures information on the primary and authoritative contact for the resource it is associated with.","properties":[{"type":"PropertyDefinition","name":"address","description":"A physical address","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"website","description":"The main website","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"phoneNumber","description":"A phone number","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Facet"]}] \ No newline at end of file diff --git a/src/test/resources/types/IsRelatedTo.json b/src/test/resources/types/IsRelatedTo.json new file mode 100644 index 0000000..8b48906 --- /dev/null +++ b/src/test/resources/types/IsRelatedTo.json @@ -0,0 +1 @@ +[{"type":"IsRelatedToType","id":"c2eed75b-2932-4023-a826-f7ec91e35224","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:25.349 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:25.349 +0000"},"name":"IsRelatedTo","description":"This is the base type for any IsRelatedTo relation","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Relation"],"source":{"type":"ResourceType","id":"5aa731ec-b1c8-46eb-a2b2-f25172d0bc6f","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:22.304 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:22.304 +0000"},"name":"Resource","description":"This is the base type for any Resource","facets":[{"type":"LinkedEntity","source":"Resource","relation":"ConsistsOf","target":"Facet","description":"Any Resource consists of one or more Facets which describes the different aspects of the resource.","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"Resource","relation":"IsRelatedTo","target":"Resource","description":"Any Resource can be related to any other resource.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Entity"]},"target":{"type":"ResourceType","id":"5aa731ec-b1c8-46eb-a2b2-f25172d0bc6f","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:22.304 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:22.304 +0000"},"name":"Resource","description":"This is the base type for any Resource","facets":[{"type":"LinkedEntity","source":"Resource","relation":"ConsistsOf","target":"Facet","description":"Any Resource consists of one or more Facets which describes the different aspects of the resource.","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"Resource","relation":"IsRelatedTo","target":"Resource","description":"Any Resource can be related to any other resource.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Entity"]}},{"type":"IsRelatedToType","id":"a56dce6c-bb39-4f06-a32b-0d5385118715","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:30:12.683 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:30:12.683 +0000"},"name":"Enables","description":"Any {@link Service} representing running code of a specific software has the relation Enables targeted to the corresponding {@link Software}. Enables is used for example by {@link EService} to indicates the running software; from {@link HostingNode} to indicate the running software container; within {@link RunningPlugin} and the software represented as {@link Plugin}.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["IsRelatedTo"],"source":{"type":"ResourceType","id":"30922302-8db8-4f78-9d52-07b2a1dcae5d","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:45.398 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:45.398 +0000"},"name":"Service","description":"Service (Abstract) represents any typology of service worth registering in the infrastructure. Service has relations with quite all other resources. If on one side, an Hybrid Data Infrastructure (HDI) is created to manage datasets, on the other side the HDI born to manage such datasets digitally. We could affirm that datasets and services are the two pillar resources around which revolves the entire infrastructure. It is important to highlight that Service has a general meaning and must not be intended as a network-callable service which is represented instead by one of its specialisation called {@link EService}.Giving that Service is abstract no {@link IsIdentifiedBy} association with a facet is provided which in turns is responsibility of the specialisation.","facets":[{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"DescriptiveMetadataFacet","description":"Any descriptive information associated with the service, e.g. for discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"SubjectFacet","description":"Any subject/tag associated with the service for descriptive, cataloguing and discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"CapabilityFacet","description":"Any facility supported/offered by the Service.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Service","relation":"CallsFor","target":"Service","description":"A reference to the Services needed by the target instance to work.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Activates","target":"Service","description":"The source Service enables the target Service to be running. Examples are an Hosting Node which enables an EService; A VirtualMachine enabling an EService or an HostingNode; An EService enabling a RunningPlugin; A VirtualMachine enabling an HostingNode etc","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"IsCustomizedBy","target":"ConfigurationTemplate","description":"A reference to any configuration characterising the Service behaviour.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Manages","target":"Dataset","description":"A reference to any Dataset resource managed by the Service instance.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Enables","target":"Software","description":"A reference to any Software the Service is enabling (i.e. the Software is running throught the EService).","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Requires","target":"Service","description":"A reference to any Service needed by a Software to properly operate, e.g. this can be used to capture a sort of run-time requirements between a software component and the Service it needs.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["GCubeResource"]},"target":{"type":"ResourceType","id":"3d73bcc3-5750-406c-bfab-9730a401a8ff","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:07.549 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:07.549 +0000"},"name":"Software","description":"Software is an entity worth being represented for management purposes. The relation {@link DependsOn} indicates dependencies between two Software captured for management purposes.","facets":[{"type":"LinkedEntity","source":"Software","relation":"IsIdentifiedBy","target":"SoftwareFacet","description":"Software coordinates which identify the Software per se.","min":1,"max":1},{"type":"LinkedEntity","source":"Software","relation":"ConsistsOf","target":"SoftwareFacet","description":"Apart the one connected by the IsIdentifiedBy relation (gCube coordinates) the others identify the software in other way e.g. (Maven coordinates).","min":1,"max":null},{"type":"LinkedEntity","source":"Software","relation":"ConsistsOf","target":"CapabilityFacet","description":"","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Software","relation":"DependsOn","target":"Software","description":"To capture any dependency between two software artifacts.","min":0,"max":null},{"type":"LinkedEntity","source":"Software","relation":"IsConfiguredBy","target":"ConfigurationTemplate","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Software","relation":"Requires","target":"Service","description":"To capture any dependency between a software artifact and a Service, e.g. A software requiring a specific database instance.","min":0,"max":null},{"type":"LinkedEntity","source":"VirtualService","relation":"Demands","target":"Software","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Plugin","relation":"IsPluginOf","target":"Software","description":"To capture the relation between a Software and its Plugins.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]}},{"type":"IsRelatedToType","id":"15559ec7-d4ad-49c3-984d-dbcf27c06af2","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:30:20.392 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:30:20.392 +0000"},"name":"IsPartOf","description":"IsPartOf is used when a {@link ConcreteDataset} is part of a {@link Dataset}.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["IsCorrelatedTo"],"source":{"type":"ResourceType","id":"e1515685-5d2d-40f6-be51-a3b396aacd04","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:53.686 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:53.686 +0000"},"name":"ConcreteDataset","description":"ConcreteDataset is any incarnation/manifestation of a dataset or part of it. The relation {@link IsPartOf} is used when a ConcreteDataset is part of a {@link Dataset}.","facets":[{"type":"LinkedEntity","source":"ConcreteDataset","relation":"HasMaintainer","target":"ContactFacet","description":"The contact information of the entity responsible for the maintenance of the concrete dataset","min":1,"max":null},{"type":"LinkedEntity","source":"ConcreteDataset","relation":"ConsistsOf","target":"AccessPointFacet","description":"The access point to use for having access to the concrete dataset. The embargoState can be modeled through the access policy defined in the consistsOf relation.","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"ConcreteDataset","relation":"IsPartOf","target":"Dataset","description":"The reference to the 'incarnations'/'manifestations' contributing to a dataset.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Dataset"]},"target":{"type":"ResourceType","id":"7192a2b5-a30f-4f71-86ce-982390213288","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:51.753 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:51.753 +0000"},"name":"Dataset","description":"A Dataset is a set of digital objects representing data and treated collectively as a unit. It is the key resource of a HDI, even more, it is the reason the HDI exists. A Dataset can be correlated to another Dataset by using {@link IsCorrelatedTo} relation.","facets":[{"type":"LinkedEntity","source":"Dataset","relation":"IsIdentifiedBy","target":"IdentifierFacet","description":"The set of Identifiers associated with the Dataset instance.","min":1,"max":1},{"type":"LinkedEntity","source":"Dataset","relation":"HasContact","target":"ContactFacet","description":"The contact information of the entity responsible for the dataset.","min":1,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasContributor","target":"ContactFacet","description":"The contact information on contributors supporting the creation and development of the Dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasCreator","target":"ContactFacet","description":" The contact information of the creator of the Dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasCurator","target":"ContactFacet","description":" The contact information of the entity responsible for the curation of the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasMaintainer","target":"ContactFacet","description":"The contact information of the entity responsible for the maintenance of the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasOwner","target":"ContactFacet","description":"The contact information of the entity having the ownership of the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"AccessPointFacet","description":"The access point to use for having access to the dataset. The embargoState can be modeled through the access policy defined in the consistsOf relation.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"LicenseFacet","description":"The licence governing dataset exploitation. The duration of license (if any) is captured by the expiry date defined in the consistsOf relation.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"EventFacet","description":"Any 'event' characterising the lifecycle of the dataset, e.g. collection date, last collection date.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"ProvenanceFacet","description":"Any provenance record associated with the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasCoverage","target":"CoverageFacet","description":"Any coverage related information (e.g. topic, species) characterising the content of the dataset.","min":1,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasTemporalCoverage","target":"CoverageFacet","description":"Any temporal coverage information characterising the content of the dataset, e.g. the time-span covered by the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasSpatialCoverage","target":"CoverageFacet","description":"Any geo-spatial coverage information characterising the content of the dataset, e.g. the area covered by the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"DescriptiveMetadataFacet","description":"Any descriptive information associated with the dataset, e.g. for discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"SubjectFacet","description":"Any subject/tag associated with the dataset for descriptive and discovery purposes.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Dataset","relation":"Involves","target":"Actor","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"IsCorrelatedTo","target":"Dataset","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"IsCompliantWith","target":"Schema","description":"Any schema characterising the content of the dataset, e.g. the schema describing the 'columns' of a CSV-based dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"ConcreteDataset","relation":"IsPartOf","target":"Dataset","description":"The reference to the 'incarnations'/'manifestations' contributing to a dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Manages","target":"Dataset","description":"The link between the service that 'manages' the dataset and the dataset, e.g. the service that hosts the dataset and give access to it.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]}},{"type":"IsRelatedToType","id":"b00bdac8-5f69-44f6-8fb7-fb1992bcac02","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:30:17.639 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:30:17.639 +0000"},"name":"Activates","description":"Activates has a {@link Service} instance both as source and target as well as {@link CallsFor} but with a complete different semantic. Activates is used to indicates that the source {@link Service} of the relation enable the operation of the target Service. Examples are between a {@link VirtualMachine} and an {@link HostingNode} to capture the {@link VirtualMachine} is operating the {@link HostingNode}. Another example is between a {@link VirtualMachine} and an {@link EService}, e.g., between a {@link VirtualMachine} and a database instance. This relation can be created also between an {@link HostingNode} and one {@link EService}, e.g., to represent a container e.g., Tomcat and the web-service(s) is operating. Activates is also used between an {@link EService} and a {@link RunningPlugin} which enrich the functionality offered by the source service.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["IsRelatedTo"],"source":{"type":"ResourceType","id":"30922302-8db8-4f78-9d52-07b2a1dcae5d","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:45.398 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:45.398 +0000"},"name":"Service","description":"Service (Abstract) represents any typology of service worth registering in the infrastructure. Service has relations with quite all other resources. If on one side, an Hybrid Data Infrastructure (HDI) is created to manage datasets, on the other side the HDI born to manage such datasets digitally. We could affirm that datasets and services are the two pillar resources around which revolves the entire infrastructure. It is important to highlight that Service has a general meaning and must not be intended as a network-callable service which is represented instead by one of its specialisation called {@link EService}.Giving that Service is abstract no {@link IsIdentifiedBy} association with a facet is provided which in turns is responsibility of the specialisation.","facets":[{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"DescriptiveMetadataFacet","description":"Any descriptive information associated with the service, e.g. for discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"SubjectFacet","description":"Any subject/tag associated with the service for descriptive, cataloguing and discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"CapabilityFacet","description":"Any facility supported/offered by the Service.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Service","relation":"CallsFor","target":"Service","description":"A reference to the Services needed by the target instance to work.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Activates","target":"Service","description":"The source Service enables the target Service to be running. Examples are an Hosting Node which enables an EService; A VirtualMachine enabling an EService or an HostingNode; An EService enabling a RunningPlugin; A VirtualMachine enabling an HostingNode etc","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"IsCustomizedBy","target":"ConfigurationTemplate","description":"A reference to any configuration characterising the Service behaviour.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Manages","target":"Dataset","description":"A reference to any Dataset resource managed by the Service instance.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Enables","target":"Software","description":"A reference to any Software the Service is enabling (i.e. the Software is running throught the EService).","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Requires","target":"Service","description":"A reference to any Service needed by a Software to properly operate, e.g. this can be used to capture a sort of run-time requirements between a software component and the Service it needs.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["GCubeResource"]},"target":{"type":"ResourceType","id":"30922302-8db8-4f78-9d52-07b2a1dcae5d","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:45.398 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:45.398 +0000"},"name":"Service","description":"Service (Abstract) represents any typology of service worth registering in the infrastructure. Service has relations with quite all other resources. If on one side, an Hybrid Data Infrastructure (HDI) is created to manage datasets, on the other side the HDI born to manage such datasets digitally. We could affirm that datasets and services are the two pillar resources around which revolves the entire infrastructure. It is important to highlight that Service has a general meaning and must not be intended as a network-callable service which is represented instead by one of its specialisation called {@link EService}.Giving that Service is abstract no {@link IsIdentifiedBy} association with a facet is provided which in turns is responsibility of the specialisation.","facets":[{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"DescriptiveMetadataFacet","description":"Any descriptive information associated with the service, e.g. for discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"SubjectFacet","description":"Any subject/tag associated with the service for descriptive, cataloguing and discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"CapabilityFacet","description":"Any facility supported/offered by the Service.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Service","relation":"CallsFor","target":"Service","description":"A reference to the Services needed by the target instance to work.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Activates","target":"Service","description":"The source Service enables the target Service to be running. Examples are an Hosting Node which enables an EService; A VirtualMachine enabling an EService or an HostingNode; An EService enabling a RunningPlugin; A VirtualMachine enabling an HostingNode etc","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"IsCustomizedBy","target":"ConfigurationTemplate","description":"A reference to any configuration characterising the Service behaviour.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Manages","target":"Dataset","description":"A reference to any Dataset resource managed by the Service instance.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Enables","target":"Software","description":"A reference to any Software the Service is enabling (i.e. the Software is running throught the EService).","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Requires","target":"Service","description":"A reference to any Service needed by a Software to properly operate, e.g. this can be used to capture a sort of run-time requirements between a software component and the Service it needs.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["GCubeResource"]}},{"type":"IsRelatedToType","id":"1befe0bd-917e-4a8d-9c63-a1e437f397da","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:55.458 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:55.458 +0000"},"name":"IsCorrelatedTo","description":"IsCorrelatedTo relates a {@link Dataset} to another.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["IsRelatedTo"],"source":{"type":"ResourceType","id":"7192a2b5-a30f-4f71-86ce-982390213288","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:51.753 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:51.753 +0000"},"name":"Dataset","description":"A Dataset is a set of digital objects representing data and treated collectively as a unit. It is the key resource of a HDI, even more, it is the reason the HDI exists. A Dataset can be correlated to another Dataset by using {@link IsCorrelatedTo} relation.","facets":[{"type":"LinkedEntity","source":"Dataset","relation":"IsIdentifiedBy","target":"IdentifierFacet","description":"The set of Identifiers associated with the Dataset instance.","min":1,"max":1},{"type":"LinkedEntity","source":"Dataset","relation":"HasContact","target":"ContactFacet","description":"The contact information of the entity responsible for the dataset.","min":1,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasContributor","target":"ContactFacet","description":"The contact information on contributors supporting the creation and development of the Dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasCreator","target":"ContactFacet","description":" The contact information of the creator of the Dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasCurator","target":"ContactFacet","description":" The contact information of the entity responsible for the curation of the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasMaintainer","target":"ContactFacet","description":"The contact information of the entity responsible for the maintenance of the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasOwner","target":"ContactFacet","description":"The contact information of the entity having the ownership of the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"AccessPointFacet","description":"The access point to use for having access to the dataset. The embargoState can be modeled through the access policy defined in the consistsOf relation.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"LicenseFacet","description":"The licence governing dataset exploitation. The duration of license (if any) is captured by the expiry date defined in the consistsOf relation.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"EventFacet","description":"Any 'event' characterising the lifecycle of the dataset, e.g. collection date, last collection date.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"ProvenanceFacet","description":"Any provenance record associated with the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasCoverage","target":"CoverageFacet","description":"Any coverage related information (e.g. topic, species) characterising the content of the dataset.","min":1,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasTemporalCoverage","target":"CoverageFacet","description":"Any temporal coverage information characterising the content of the dataset, e.g. the time-span covered by the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasSpatialCoverage","target":"CoverageFacet","description":"Any geo-spatial coverage information characterising the content of the dataset, e.g. the area covered by the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"DescriptiveMetadataFacet","description":"Any descriptive information associated with the dataset, e.g. for discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"SubjectFacet","description":"Any subject/tag associated with the dataset for descriptive and discovery purposes.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Dataset","relation":"Involves","target":"Actor","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"IsCorrelatedTo","target":"Dataset","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"IsCompliantWith","target":"Schema","description":"Any schema characterising the content of the dataset, e.g. the schema describing the 'columns' of a CSV-based dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"ConcreteDataset","relation":"IsPartOf","target":"Dataset","description":"The reference to the 'incarnations'/'manifestations' contributing to a dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Manages","target":"Dataset","description":"The link between the service that 'manages' the dataset and the dataset, e.g. the service that hosts the dataset and give access to it.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]},"target":{"type":"ResourceType","id":"7192a2b5-a30f-4f71-86ce-982390213288","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:51.753 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:51.753 +0000"},"name":"Dataset","description":"A Dataset is a set of digital objects representing data and treated collectively as a unit. It is the key resource of a HDI, even more, it is the reason the HDI exists. A Dataset can be correlated to another Dataset by using {@link IsCorrelatedTo} relation.","facets":[{"type":"LinkedEntity","source":"Dataset","relation":"IsIdentifiedBy","target":"IdentifierFacet","description":"The set of Identifiers associated with the Dataset instance.","min":1,"max":1},{"type":"LinkedEntity","source":"Dataset","relation":"HasContact","target":"ContactFacet","description":"The contact information of the entity responsible for the dataset.","min":1,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasContributor","target":"ContactFacet","description":"The contact information on contributors supporting the creation and development of the Dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasCreator","target":"ContactFacet","description":" The contact information of the creator of the Dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasCurator","target":"ContactFacet","description":" The contact information of the entity responsible for the curation of the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasMaintainer","target":"ContactFacet","description":"The contact information of the entity responsible for the maintenance of the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasOwner","target":"ContactFacet","description":"The contact information of the entity having the ownership of the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"AccessPointFacet","description":"The access point to use for having access to the dataset. The embargoState can be modeled through the access policy defined in the consistsOf relation.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"LicenseFacet","description":"The licence governing dataset exploitation. The duration of license (if any) is captured by the expiry date defined in the consistsOf relation.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"EventFacet","description":"Any 'event' characterising the lifecycle of the dataset, e.g. collection date, last collection date.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"ProvenanceFacet","description":"Any provenance record associated with the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasCoverage","target":"CoverageFacet","description":"Any coverage related information (e.g. topic, species) characterising the content of the dataset.","min":1,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasTemporalCoverage","target":"CoverageFacet","description":"Any temporal coverage information characterising the content of the dataset, e.g. the time-span covered by the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasSpatialCoverage","target":"CoverageFacet","description":"Any geo-spatial coverage information characterising the content of the dataset, e.g. the area covered by the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"DescriptiveMetadataFacet","description":"Any descriptive information associated with the dataset, e.g. for discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"SubjectFacet","description":"Any subject/tag associated with the dataset for descriptive and discovery purposes.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Dataset","relation":"Involves","target":"Actor","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"IsCorrelatedTo","target":"Dataset","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"IsCompliantWith","target":"Schema","description":"Any schema characterising the content of the dataset, e.g. the schema describing the 'columns' of a CSV-based dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"ConcreteDataset","relation":"IsPartOf","target":"Dataset","description":"The reference to the 'incarnations'/'manifestations' contributing to a dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Manages","target":"Dataset","description":"The link between the service that 'manages' the dataset and the dataset, e.g. the service that hosts the dataset and give access to it.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]}},{"type":"IsRelatedToType","id":"256a81ac-9bbd-46e4-973b-28259d22394f","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:30.694 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:30.694 +0000"},"name":"IsCompliantWith","description":"IsCompliantWith is used to indicated a {@link Dataset} compliant with a {@link Schema}.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["IsRelatedTo"],"source":{"type":"ResourceType","id":"7192a2b5-a30f-4f71-86ce-982390213288","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:51.753 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:51.753 +0000"},"name":"Dataset","description":"A Dataset is a set of digital objects representing data and treated collectively as a unit. It is the key resource of a HDI, even more, it is the reason the HDI exists. A Dataset can be correlated to another Dataset by using {@link IsCorrelatedTo} relation.","facets":[{"type":"LinkedEntity","source":"Dataset","relation":"IsIdentifiedBy","target":"IdentifierFacet","description":"The set of Identifiers associated with the Dataset instance.","min":1,"max":1},{"type":"LinkedEntity","source":"Dataset","relation":"HasContact","target":"ContactFacet","description":"The contact information of the entity responsible for the dataset.","min":1,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasContributor","target":"ContactFacet","description":"The contact information on contributors supporting the creation and development of the Dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasCreator","target":"ContactFacet","description":" The contact information of the creator of the Dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasCurator","target":"ContactFacet","description":" The contact information of the entity responsible for the curation of the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasMaintainer","target":"ContactFacet","description":"The contact information of the entity responsible for the maintenance of the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasOwner","target":"ContactFacet","description":"The contact information of the entity having the ownership of the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"AccessPointFacet","description":"The access point to use for having access to the dataset. The embargoState can be modeled through the access policy defined in the consistsOf relation.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"LicenseFacet","description":"The licence governing dataset exploitation. The duration of license (if any) is captured by the expiry date defined in the consistsOf relation.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"EventFacet","description":"Any 'event' characterising the lifecycle of the dataset, e.g. collection date, last collection date.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"ProvenanceFacet","description":"Any provenance record associated with the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasCoverage","target":"CoverageFacet","description":"Any coverage related information (e.g. topic, species) characterising the content of the dataset.","min":1,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasTemporalCoverage","target":"CoverageFacet","description":"Any temporal coverage information characterising the content of the dataset, e.g. the time-span covered by the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasSpatialCoverage","target":"CoverageFacet","description":"Any geo-spatial coverage information characterising the content of the dataset, e.g. the area covered by the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"DescriptiveMetadataFacet","description":"Any descriptive information associated with the dataset, e.g. for discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"SubjectFacet","description":"Any subject/tag associated with the dataset for descriptive and discovery purposes.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Dataset","relation":"Involves","target":"Actor","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"IsCorrelatedTo","target":"Dataset","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"IsCompliantWith","target":"Schema","description":"Any schema characterising the content of the dataset, e.g. the schema describing the 'columns' of a CSV-based dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"ConcreteDataset","relation":"IsPartOf","target":"Dataset","description":"The reference to the 'incarnations'/'manifestations' contributing to a dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Manages","target":"Dataset","description":"The link between the service that 'manages' the dataset and the dataset, e.g. the service that hosts the dataset and give access to it.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]},"target":{"type":"ResourceType","id":"136650ac-1374-4764-89f1-cd516e56e3ee","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:13.898 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:13.898 +0000"},"name":"Schema","description":"Schema is any reference schema used to specify compliant values. Examples include controlled vocabularies, ontologies, and others. This resource is mainly used by {@link Dataset} to evidence that is compliant with a Schema by using {@link IsCompliantWith} relation.","facets":[{"type":"LinkedEntity","source":"Schema","relation":"IsIdentifiedBy","target":"SchemaFacet","description":"","min":1,"max":1},{"type":"LinkedEntity","source":"Schema","relation":"HasContact","target":"ContactFacet","description":"","min":1,"max":null},{"type":"LinkedEntity","source":"Schema","relation":"ConsistsOf","target":"DescriptiveMetadataFacet","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Schema","relation":"ConsistsOf","target":"SubjectFacet","description":"","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Dataset","relation":"IsCompliantWith","target":"Schema","description":"Any schema characterising the content of the dataset, e.g. the schema describing the 'columns' of a CSV-based dataset.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]}},{"type":"IsRelatedToType","id":"b718decc-7ce1-4046-ad8e-91b89ddd38fa","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:43.178 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:43.178 +0000"},"name":"Involves","description":"Involves is used to indicate that and {@link Actor} is involved in a {@link Dataset}.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["IsRelatedTo"],"source":{"type":"ResourceType","id":"7192a2b5-a30f-4f71-86ce-982390213288","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:51.753 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:51.753 +0000"},"name":"Dataset","description":"A Dataset is a set of digital objects representing data and treated collectively as a unit. It is the key resource of a HDI, even more, it is the reason the HDI exists. A Dataset can be correlated to another Dataset by using {@link IsCorrelatedTo} relation.","facets":[{"type":"LinkedEntity","source":"Dataset","relation":"IsIdentifiedBy","target":"IdentifierFacet","description":"The set of Identifiers associated with the Dataset instance.","min":1,"max":1},{"type":"LinkedEntity","source":"Dataset","relation":"HasContact","target":"ContactFacet","description":"The contact information of the entity responsible for the dataset.","min":1,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasContributor","target":"ContactFacet","description":"The contact information on contributors supporting the creation and development of the Dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasCreator","target":"ContactFacet","description":" The contact information of the creator of the Dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasCurator","target":"ContactFacet","description":" The contact information of the entity responsible for the curation of the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasMaintainer","target":"ContactFacet","description":"The contact information of the entity responsible for the maintenance of the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasOwner","target":"ContactFacet","description":"The contact information of the entity having the ownership of the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"AccessPointFacet","description":"The access point to use for having access to the dataset. The embargoState can be modeled through the access policy defined in the consistsOf relation.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"LicenseFacet","description":"The licence governing dataset exploitation. The duration of license (if any) is captured by the expiry date defined in the consistsOf relation.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"EventFacet","description":"Any 'event' characterising the lifecycle of the dataset, e.g. collection date, last collection date.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"ProvenanceFacet","description":"Any provenance record associated with the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasCoverage","target":"CoverageFacet","description":"Any coverage related information (e.g. topic, species) characterising the content of the dataset.","min":1,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasTemporalCoverage","target":"CoverageFacet","description":"Any temporal coverage information characterising the content of the dataset, e.g. the time-span covered by the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasSpatialCoverage","target":"CoverageFacet","description":"Any geo-spatial coverage information characterising the content of the dataset, e.g. the area covered by the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"DescriptiveMetadataFacet","description":"Any descriptive information associated with the dataset, e.g. for discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"SubjectFacet","description":"Any subject/tag associated with the dataset for descriptive and discovery purposes.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Dataset","relation":"Involves","target":"Actor","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"IsCorrelatedTo","target":"Dataset","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"IsCompliantWith","target":"Schema","description":"Any schema characterising the content of the dataset, e.g. the schema describing the 'columns' of a CSV-based dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"ConcreteDataset","relation":"IsPartOf","target":"Dataset","description":"The reference to the 'incarnations'/'manifestations' contributing to a dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Manages","target":"Dataset","description":"The link between the service that 'manages' the dataset and the dataset, e.g. the service that hosts the dataset and give access to it.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]},"target":{"type":"ResourceType","id":"b959a18d-645d-4208-8e96-6f6b0ec2c018","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:43.199 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:43.199 +0000"},"name":"Actor","description":"Actor (Abstract) is any entity (human or machine) playing an active role in the infrastructure. Actor has two specialisations, {@link LegalBody} which represent any legal entity, and {@link Person} which is any human playing the role of Actor. An Actor can belong to a {@link LegalBody} and this is expressed using the defined {@link BelongsTo} relation.","facets":[{"type":"LinkedEntity","source":"Actor","relation":"IsIdentifiedBy","target":"ContactFacet","description":" An Actor has at least a Contact Facet which permit to identify the Actor per se. ","min":1,"max":1},{"type":"LinkedEntity","source":"Actor","relation":"ConsistsOf","target":"ContactReferenceFacet","description":"","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Dataset","relation":"Involves","target":"Actor","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Site","relation":"IsOwnedBy","target":"Actor","description":"","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["GCubeResource"]}},{"type":"IsRelatedToType","id":"c21eb12b-8862-4e1d-a116-af7a539f4046","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:33.354 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:33.354 +0000"},"name":"DependsOn","description":"DependsOn indicates that a {@link Software} requires another one to work. This relation must not be confused with {@link Requires}.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["IsRelatedTo"],"source":{"type":"ResourceType","id":"3d73bcc3-5750-406c-bfab-9730a401a8ff","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:07.549 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:07.549 +0000"},"name":"Software","description":"Software is an entity worth being represented for management purposes. The relation {@link DependsOn} indicates dependencies between two Software captured for management purposes.","facets":[{"type":"LinkedEntity","source":"Software","relation":"IsIdentifiedBy","target":"SoftwareFacet","description":"Software coordinates which identify the Software per se.","min":1,"max":1},{"type":"LinkedEntity","source":"Software","relation":"ConsistsOf","target":"SoftwareFacet","description":"Apart the one connected by the IsIdentifiedBy relation (gCube coordinates) the others identify the software in other way e.g. (Maven coordinates).","min":1,"max":null},{"type":"LinkedEntity","source":"Software","relation":"ConsistsOf","target":"CapabilityFacet","description":"","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Software","relation":"DependsOn","target":"Software","description":"To capture any dependency between two software artifacts.","min":0,"max":null},{"type":"LinkedEntity","source":"Software","relation":"IsConfiguredBy","target":"ConfigurationTemplate","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Software","relation":"Requires","target":"Service","description":"To capture any dependency between a software artifact and a Service, e.g. A software requiring a specific database instance.","min":0,"max":null},{"type":"LinkedEntity","source":"VirtualService","relation":"Demands","target":"Software","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Plugin","relation":"IsPluginOf","target":"Software","description":"To capture the relation between a Software and its Plugins.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]},"target":{"type":"ResourceType","id":"3d73bcc3-5750-406c-bfab-9730a401a8ff","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:07.549 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:07.549 +0000"},"name":"Software","description":"Software is an entity worth being represented for management purposes. The relation {@link DependsOn} indicates dependencies between two Software captured for management purposes.","facets":[{"type":"LinkedEntity","source":"Software","relation":"IsIdentifiedBy","target":"SoftwareFacet","description":"Software coordinates which identify the Software per se.","min":1,"max":1},{"type":"LinkedEntity","source":"Software","relation":"ConsistsOf","target":"SoftwareFacet","description":"Apart the one connected by the IsIdentifiedBy relation (gCube coordinates) the others identify the software in other way e.g. (Maven coordinates).","min":1,"max":null},{"type":"LinkedEntity","source":"Software","relation":"ConsistsOf","target":"CapabilityFacet","description":"","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Software","relation":"DependsOn","target":"Software","description":"To capture any dependency between two software artifacts.","min":0,"max":null},{"type":"LinkedEntity","source":"Software","relation":"IsConfiguredBy","target":"ConfigurationTemplate","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Software","relation":"Requires","target":"Service","description":"To capture any dependency between a software artifact and a Service, e.g. A software requiring a specific database instance.","min":0,"max":null},{"type":"LinkedEntity","source":"VirtualService","relation":"Demands","target":"Software","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Plugin","relation":"IsPluginOf","target":"Software","description":"To capture the relation between a Software and its Plugins.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]}},{"type":"IsRelatedToType","id":"51e5d39a-6060-432a-9eca-b5ae58ab345b","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:30:03.236 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:30:03.236 +0000"},"name":"Hosts","description":"Hosts relation is used from a {@link Site} a {@link Service} instance. The target of the Hosts relation depends on the service offered by the Site. When the resources provided by a site are virtual machines, Hosts relation is created from a {@link Site} to a {@link VirtualMachine}. When, instead a Site provides web-services, Hosts relation is created with {@link EService}. If a site provides container facilities Hosts relation is created with {@link HostingNode}. By defining Hosts relation with target {@link Service}, the model is capable of representing the diverse type of federated systems and service.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["IsRelatedTo"],"source":{"type":"ResourceType","id":"62f76174-315d-4322-9275-caa9da397eda","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:11.657 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:11.657 +0000"},"name":"Site","description":"Site is a resource representing the location (physical or virtual) hosting the resources associated. Site allows to identify all the services that will be affected by downtime due to a scheduled maintenance, as well as the impact on the infrastructure that an accidentalloss of connectivity could cause. This resource allows to study and define the replication scenarios or to provide an adequate redundancy level to a VRE.","facets":[{"type":"LinkedEntity","source":"Site","relation":"IsIdentifiedBy","target":"IdentifierFacet","description":"The Site Identifier.","min":1,"max":1},{"type":"LinkedEntity","source":"Site","relation":"HasContact","target":"ContactFacet","description":"The main contact for the Site.","min":1,"max":null},{"type":"LinkedEntity","source":"Site","relation":"HasMaintainer","target":"ContactFacet","description":"Contact information of the maintainer of the Site.","min":1,"max":null},{"type":"LinkedEntity","source":"Site","relation":"HasManager","target":"ContactFacet","description":"Contact information of the Site Manager.","min":1,"max":null},{"type":"LinkedEntity","source":"Site","relation":"ConsistsOf","target":"LocationFacet","description":"","min":1,"max":null},{"type":"LinkedEntity","source":"Site","relation":"ConsistsOf","target":"NetworkingFacet","description":"","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"Site","relation":"IsOwnedBy","target":"Actor","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Site","relation":"Hosts","target":"Service","description":"","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]},"target":{"type":"ResourceType","id":"30922302-8db8-4f78-9d52-07b2a1dcae5d","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:45.398 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:45.398 +0000"},"name":"Service","description":"Service (Abstract) represents any typology of service worth registering in the infrastructure. Service has relations with quite all other resources. If on one side, an Hybrid Data Infrastructure (HDI) is created to manage datasets, on the other side the HDI born to manage such datasets digitally. We could affirm that datasets and services are the two pillar resources around which revolves the entire infrastructure. It is important to highlight that Service has a general meaning and must not be intended as a network-callable service which is represented instead by one of its specialisation called {@link EService}.Giving that Service is abstract no {@link IsIdentifiedBy} association with a facet is provided which in turns is responsibility of the specialisation.","facets":[{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"DescriptiveMetadataFacet","description":"Any descriptive information associated with the service, e.g. for discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"SubjectFacet","description":"Any subject/tag associated with the service for descriptive, cataloguing and discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"CapabilityFacet","description":"Any facility supported/offered by the Service.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Service","relation":"CallsFor","target":"Service","description":"A reference to the Services needed by the target instance to work.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Activates","target":"Service","description":"The source Service enables the target Service to be running. Examples are an Hosting Node which enables an EService; A VirtualMachine enabling an EService or an HostingNode; An EService enabling a RunningPlugin; A VirtualMachine enabling an HostingNode etc","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"IsCustomizedBy","target":"ConfigurationTemplate","description":"A reference to any configuration characterising the Service behaviour.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Manages","target":"Dataset","description":"A reference to any Dataset resource managed by the Service instance.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Enables","target":"Software","description":"A reference to any Software the Service is enabling (i.e. the Software is running throught the EService).","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Requires","target":"Service","description":"A reference to any Service needed by a Software to properly operate, e.g. this can be used to capture a sort of run-time requirements between a software component and the Service it needs.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["GCubeResource"]}},{"type":"IsRelatedToType","id":"91f2d4c7-38e0-4b7b-9dc7-a0caff30cee2","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:57.862 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:57.862 +0000"},"name":"Requires","description":"Requires is used to indicate that the source {@link Software} when activated requires to interact with a specific {@link Service} instance, i.e., the target of the relation. This relation usually reflects an administrative constraint than a technological limitation. When there are no constraint on the instance the relation is instead {@link DependsOn} which is between two {@link Software}.Not necessarily all the {@link Software} running in the infrastructure are represented as resources. Only the {@link Software} required for infrastructure administration or the ones to be managed with specific policies are represented. Indeed, Requires relation is normally used as policy constraint. Let imagine an open source software which uses a MySQL database as backend. In many cases, what characterises the software instance is the data present in the backend. The infrastructure manager could stipulate an agreement with a provider having a particular set of data which is not for public domain. The software once deployed, giving the business agreement, is entitled to use the instance of the provider and not a generic MySQL database instance. The infrastructure manager imposes the use of such a particular instance because of the data it contains.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["IsRelatedTo"],"source":{"type":"ResourceType","id":"3d73bcc3-5750-406c-bfab-9730a401a8ff","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:07.549 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:07.549 +0000"},"name":"Software","description":"Software is an entity worth being represented for management purposes. The relation {@link DependsOn} indicates dependencies between two Software captured for management purposes.","facets":[{"type":"LinkedEntity","source":"Software","relation":"IsIdentifiedBy","target":"SoftwareFacet","description":"Software coordinates which identify the Software per se.","min":1,"max":1},{"type":"LinkedEntity","source":"Software","relation":"ConsistsOf","target":"SoftwareFacet","description":"Apart the one connected by the IsIdentifiedBy relation (gCube coordinates) the others identify the software in other way e.g. (Maven coordinates).","min":1,"max":null},{"type":"LinkedEntity","source":"Software","relation":"ConsistsOf","target":"CapabilityFacet","description":"","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Software","relation":"DependsOn","target":"Software","description":"To capture any dependency between two software artifacts.","min":0,"max":null},{"type":"LinkedEntity","source":"Software","relation":"IsConfiguredBy","target":"ConfigurationTemplate","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Software","relation":"Requires","target":"Service","description":"To capture any dependency between a software artifact and a Service, e.g. A software requiring a specific database instance.","min":0,"max":null},{"type":"LinkedEntity","source":"VirtualService","relation":"Demands","target":"Software","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Plugin","relation":"IsPluginOf","target":"Software","description":"To capture the relation between a Software and its Plugins.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]},"target":{"type":"ResourceType","id":"30922302-8db8-4f78-9d52-07b2a1dcae5d","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:45.398 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:45.398 +0000"},"name":"Service","description":"Service (Abstract) represents any typology of service worth registering in the infrastructure. Service has relations with quite all other resources. If on one side, an Hybrid Data Infrastructure (HDI) is created to manage datasets, on the other side the HDI born to manage such datasets digitally. We could affirm that datasets and services are the two pillar resources around which revolves the entire infrastructure. It is important to highlight that Service has a general meaning and must not be intended as a network-callable service which is represented instead by one of its specialisation called {@link EService}.Giving that Service is abstract no {@link IsIdentifiedBy} association with a facet is provided which in turns is responsibility of the specialisation.","facets":[{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"DescriptiveMetadataFacet","description":"Any descriptive information associated with the service, e.g. for discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"SubjectFacet","description":"Any subject/tag associated with the service for descriptive, cataloguing and discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"CapabilityFacet","description":"Any facility supported/offered by the Service.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Service","relation":"CallsFor","target":"Service","description":"A reference to the Services needed by the target instance to work.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Activates","target":"Service","description":"The source Service enables the target Service to be running. Examples are an Hosting Node which enables an EService; A VirtualMachine enabling an EService or an HostingNode; An EService enabling a RunningPlugin; A VirtualMachine enabling an HostingNode etc","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"IsCustomizedBy","target":"ConfigurationTemplate","description":"A reference to any configuration characterising the Service behaviour.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Manages","target":"Dataset","description":"A reference to any Dataset resource managed by the Service instance.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Enables","target":"Software","description":"A reference to any Software the Service is enabling (i.e. the Software is running throught the EService).","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Requires","target":"Service","description":"A reference to any Service needed by a Software to properly operate, e.g. this can be used to capture a sort of run-time requirements between a software component and the Service it needs.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["GCubeResource"]}},{"type":"IsRelatedToType","id":"db6bba11-4fa9-4dd3-a853-7ffb1079fdc3","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:30:00.311 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:30:00.311 +0000"},"name":"IsPluginOf","description":"A {@link Plugin} is a piece of Software extending the capabilities of another {@link Software} (main) and requiring the main {@link Software} to be executed. The relation between the main {@link Software} and the {@link Plugin} is expressed by IsPluginOf relation. IsPluginOf is an extension of {@link DependsOn}.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["DependsOn"],"source":{"type":"ResourceType","id":"62d038f4-d800-4fd9-82c2-1da6f14c1d44","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:09.694 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:09.694 +0000"},"name":"Plugin","description":"Collect Plugin information through the list of its facets.","facets":[],"resources":[{"type":"LinkedEntity","source":"Plugin","relation":"IsPluginOf","target":"Software","description":"A reference to the Software this Plugin is conceived to extend the capabilities.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Software"]},"target":{"type":"ResourceType","id":"3d73bcc3-5750-406c-bfab-9730a401a8ff","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:07.549 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:07.549 +0000"},"name":"Software","description":"Software is an entity worth being represented for management purposes. The relation {@link DependsOn} indicates dependencies between two Software captured for management purposes.","facets":[{"type":"LinkedEntity","source":"Software","relation":"IsIdentifiedBy","target":"SoftwareFacet","description":"Software coordinates which identify the Software per se.","min":1,"max":1},{"type":"LinkedEntity","source":"Software","relation":"ConsistsOf","target":"SoftwareFacet","description":"Apart the one connected by the IsIdentifiedBy relation (gCube coordinates) the others identify the software in other way e.g. (Maven coordinates).","min":1,"max":null},{"type":"LinkedEntity","source":"Software","relation":"ConsistsOf","target":"CapabilityFacet","description":"","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Software","relation":"DependsOn","target":"Software","description":"To capture any dependency between two software artifacts.","min":0,"max":null},{"type":"LinkedEntity","source":"Software","relation":"IsConfiguredBy","target":"ConfigurationTemplate","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Software","relation":"Requires","target":"Service","description":"To capture any dependency between a software artifact and a Service, e.g. A software requiring a specific database instance.","min":0,"max":null},{"type":"LinkedEntity","source":"VirtualService","relation":"Demands","target":"Software","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Plugin","relation":"IsPluginOf","target":"Software","description":"To capture the relation between a Software and its Plugins.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]}},{"type":"IsRelatedToType","id":"1a37466d-1aaf-48bb-b276-96d92cd07836","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:48.491 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:48.491 +0000"},"name":"IsCustomizedBy","description":"IsCustomizedBy evidences that any {@link Service} can be customised by a {@link ConfigurationTemplate}.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["IsRelatedTo"],"source":{"type":"ResourceType","id":"30922302-8db8-4f78-9d52-07b2a1dcae5d","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:45.398 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:45.398 +0000"},"name":"Service","description":"Service (Abstract) represents any typology of service worth registering in the infrastructure. Service has relations with quite all other resources. If on one side, an Hybrid Data Infrastructure (HDI) is created to manage datasets, on the other side the HDI born to manage such datasets digitally. We could affirm that datasets and services are the two pillar resources around which revolves the entire infrastructure. It is important to highlight that Service has a general meaning and must not be intended as a network-callable service which is represented instead by one of its specialisation called {@link EService}.Giving that Service is abstract no {@link IsIdentifiedBy} association with a facet is provided which in turns is responsibility of the specialisation.","facets":[{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"DescriptiveMetadataFacet","description":"Any descriptive information associated with the service, e.g. for discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"SubjectFacet","description":"Any subject/tag associated with the service for descriptive, cataloguing and discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"CapabilityFacet","description":"Any facility supported/offered by the Service.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Service","relation":"CallsFor","target":"Service","description":"A reference to the Services needed by the target instance to work.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Activates","target":"Service","description":"The source Service enables the target Service to be running. Examples are an Hosting Node which enables an EService; A VirtualMachine enabling an EService or an HostingNode; An EService enabling a RunningPlugin; A VirtualMachine enabling an HostingNode etc","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"IsCustomizedBy","target":"ConfigurationTemplate","description":"A reference to any configuration characterising the Service behaviour.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Manages","target":"Dataset","description":"A reference to any Dataset resource managed by the Service instance.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Enables","target":"Software","description":"A reference to any Software the Service is enabling (i.e. the Software is running throught the EService).","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Requires","target":"Service","description":"A reference to any Service needed by a Software to properly operate, e.g. this can be used to capture a sort of run-time requirements between a software component and the Service it needs.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["GCubeResource"]},"target":{"type":"ResourceType","id":"b2aa23eb-1ffd-4a04-9d63-9b5a0210ea89","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:57.648 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:57.648 +0000"},"name":"ConfigurationTemplate","description":"Configuration Template represents a template for a configuration. It describes how a configuration has to be realised, e.g. used to define the catalogue configuration parameters template.","facets":[{"type":"LinkedEntity","source":"ConfigurationTemplate","relation":"IsIdentifiedBy","target":"IdentifierFacet","description":"","min":1,"max":1}],"resources":[{"type":"LinkedEntity","source":"Configuration","relation":"IsDerivationOf","target":"ConfigurationTemplate","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"IsCustomizedBy","target":"ConfigurationTemplate","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Software","relation":"IsConfiguredBy","target":"ConfigurationTemplate","description":"","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]}},{"type":"IsRelatedToType","id":"edc95e14-a42b-448e-a428-75c240639a76","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:40.684 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:40.684 +0000"},"name":"Uses","description":"Uses relation inform regarding the network invocation of the target{@link EService} by the source. Uses relation specialises the semantic of {@link CallsFor}.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["CallsFor"],"source":{"type":"ResourceType","id":"dee1ce45-9311-4ff8-aab5-b8efcbc59ae2","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:02.243 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:02.243 +0000"},"name":"EService","description":"EService is any running service that is registered in the infrastructure and made available by an access point.","facets":[{"type":"LinkedEntity","source":"EService","relation":"IsIdentifiedBy","target":"SoftwareFacet","description":"The main software enabling the EService capabilities.","min":1,"max":1},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"SoftwareFacet","description":"Software available in the EService environment that characterizes the specific EService instance.","min":0,"max":null},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"AccessPointFacet","description":"Identify the endpoints of the EService.","min":1,"max":null},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"EventFacet","description":"Events characterising the current status and lifecycle of the service, e.g. ActivationTime, DeploymentTime.","min":1,"max":null},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"StateFacet","description":"The current status of the EService, e.g. STARTED, ready, down, failed.","min":1,"max":1},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"LicenseFacet","description":"The specific terms of use governing the exploitation of the EService.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"EService","relation":"Discovers","target":"EService","description":"A reference to any other EService, the EService instance is discovering through query on IS.","min":0,"max":null},{"type":"LinkedEntity","source":"EService","relation":"Uses","target":"EService","description":"A reference to any other EService, the EService instance is invoking.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Service"]},"target":{"type":"ResourceType","id":"dee1ce45-9311-4ff8-aab5-b8efcbc59ae2","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:02.243 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:02.243 +0000"},"name":"EService","description":"EService is any running service that is registered in the infrastructure and made available by an access point.","facets":[{"type":"LinkedEntity","source":"EService","relation":"IsIdentifiedBy","target":"SoftwareFacet","description":"The main software enabling the EService capabilities.","min":1,"max":1},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"SoftwareFacet","description":"Software available in the EService environment that characterizes the specific EService instance.","min":0,"max":null},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"AccessPointFacet","description":"Identify the endpoints of the EService.","min":1,"max":null},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"EventFacet","description":"Events characterising the current status and lifecycle of the service, e.g. ActivationTime, DeploymentTime.","min":1,"max":null},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"StateFacet","description":"The current status of the EService, e.g. STARTED, ready, down, failed.","min":1,"max":1},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"LicenseFacet","description":"The specific terms of use governing the exploitation of the EService.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"EService","relation":"Discovers","target":"EService","description":"A reference to any other EService, the EService instance is discovering through query on IS.","min":0,"max":null},{"type":"LinkedEntity","source":"EService","relation":"Uses","target":"EService","description":"A reference to any other EService, the EService instance is invoking.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Service"]}},{"type":"IsRelatedToType","id":"033fa996-05ae-422b-bc31-fd6d00762f99","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:30:14.964 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:30:14.964 +0000"},"name":"IsOwnedBy","description":"Any {@link Site} is owned by an {@link Actor} and this is captured by the IsOwnedBy relation. The referenced {@link Actor} can be used as a contact point during an emergency, to agree on the scheduling of a site downtime and to request additional resources during the downtime of another site.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["IsRelatedTo"],"source":{"type":"ResourceType","id":"62f76174-315d-4322-9275-caa9da397eda","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:11.657 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:11.657 +0000"},"name":"Site","description":"Site is a resource representing the location (physical or virtual) hosting the resources associated. Site allows to identify all the services that will be affected by downtime due to a scheduled maintenance, as well as the impact on the infrastructure that an accidentalloss of connectivity could cause. This resource allows to study and define the replication scenarios or to provide an adequate redundancy level to a VRE.","facets":[{"type":"LinkedEntity","source":"Site","relation":"IsIdentifiedBy","target":"IdentifierFacet","description":"The Site Identifier.","min":1,"max":1},{"type":"LinkedEntity","source":"Site","relation":"HasContact","target":"ContactFacet","description":"The main contact for the Site.","min":1,"max":null},{"type":"LinkedEntity","source":"Site","relation":"HasMaintainer","target":"ContactFacet","description":"Contact information of the maintainer of the Site.","min":1,"max":null},{"type":"LinkedEntity","source":"Site","relation":"HasManager","target":"ContactFacet","description":"Contact information of the Site Manager.","min":1,"max":null},{"type":"LinkedEntity","source":"Site","relation":"ConsistsOf","target":"LocationFacet","description":"","min":1,"max":null},{"type":"LinkedEntity","source":"Site","relation":"ConsistsOf","target":"NetworkingFacet","description":"","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"Site","relation":"IsOwnedBy","target":"Actor","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Site","relation":"Hosts","target":"Service","description":"","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]},"target":{"type":"ResourceType","id":"b959a18d-645d-4208-8e96-6f6b0ec2c018","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:43.199 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:43.199 +0000"},"name":"Actor","description":"Actor (Abstract) is any entity (human or machine) playing an active role in the infrastructure. Actor has two specialisations, {@link LegalBody} which represent any legal entity, and {@link Person} which is any human playing the role of Actor. An Actor can belong to a {@link LegalBody} and this is expressed using the defined {@link BelongsTo} relation.","facets":[{"type":"LinkedEntity","source":"Actor","relation":"IsIdentifiedBy","target":"ContactFacet","description":" An Actor has at least a Contact Facet which permit to identify the Actor per se. ","min":1,"max":1},{"type":"LinkedEntity","source":"Actor","relation":"ConsistsOf","target":"ContactReferenceFacet","description":"","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Dataset","relation":"Involves","target":"Actor","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Site","relation":"IsOwnedBy","target":"Actor","description":"","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["GCubeResource"]}},{"type":"IsRelatedToType","id":"00213ea9-b64b-4988-8b3f-b63f372b8216","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:28.023 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:28.023 +0000"},"name":"Demands","description":"Demands is used to properly support to share a {@link VirtualService} with another context.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["IsRelatedTo"],"source":{"type":"ResourceType","id":"b8cf0197-07cf-4dfc-8741-dc46d6649143","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:17.847 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:17.847 +0000"},"name":"VirtualService","description":"VirtualService is an abstract service (non-physically existing service) worth being represented as an existing Service for management purposes. Examples of usage include cases where classes or set of services have to be managed like an existing unit. This resource is essential from infrastructure management point of view because it allows easily share a pool of services across VREs as a single unit. VirtualService mainly consist of a service definition which uses relations to {@link ConfigurationTemplate}, {@link EService}, {@link Software} (using {@link Demands} relation) to properly support the sharing across VREs. The correct sharing is feasible thanks to the {@link PropagationConstraint} of the model. The IS provides only the support for resource sharing as a bundle. Instead, the actions required to deploy a {@link Software} are a responsibility of the service invoking the sharing operation. This resource emerged thank to the experience maturated with gCube IS V.1 (gCore Based IS) where this resource was represented as a Generic Resource containing the list of the resource’s id forming the bundle which often lead to inconsistency.","facets":[{"type":"LinkedEntity","source":"VirtualService","relation":"IsIdentifiedBy","target":"SoftwareFacet","description":"","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"VirtualService","relation":"Demands","target":"Software","description":"","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Service"]},"target":{"type":"ResourceType","id":"3d73bcc3-5750-406c-bfab-9730a401a8ff","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:07.549 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:07.549 +0000"},"name":"Software","description":"Software is an entity worth being represented for management purposes. The relation {@link DependsOn} indicates dependencies between two Software captured for management purposes.","facets":[{"type":"LinkedEntity","source":"Software","relation":"IsIdentifiedBy","target":"SoftwareFacet","description":"Software coordinates which identify the Software per se.","min":1,"max":1},{"type":"LinkedEntity","source":"Software","relation":"ConsistsOf","target":"SoftwareFacet","description":"Apart the one connected by the IsIdentifiedBy relation (gCube coordinates) the others identify the software in other way e.g. (Maven coordinates).","min":1,"max":null},{"type":"LinkedEntity","source":"Software","relation":"ConsistsOf","target":"CapabilityFacet","description":"","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Software","relation":"DependsOn","target":"Software","description":"To capture any dependency between two software artifacts.","min":0,"max":null},{"type":"LinkedEntity","source":"Software","relation":"IsConfiguredBy","target":"ConfigurationTemplate","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Software","relation":"Requires","target":"Service","description":"To capture any dependency between a software artifact and a Service, e.g. A software requiring a specific database instance.","min":0,"max":null},{"type":"LinkedEntity","source":"VirtualService","relation":"Demands","target":"Software","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Plugin","relation":"IsPluginOf","target":"Software","description":"To capture the relation between a Software and its Plugins.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]}},{"type":"IsRelatedToType","id":"80307bb5-610f-4195-99f5-13b67d5925df","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:50.868 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:50.868 +0000"},"name":"BelongsTo","description":"BelongsTo indicates that a {@link Person} belong to the target {@link LegalBody}.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["IsRelatedTo"],"source":{"type":"ResourceType","id":"15e0c7ce-8e11-41a6-958d-2625141ab68a","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:55.781 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:55.781 +0000"},"name":"Person","description":"Person represents any human playing the role of Actor.","facets":[],"resources":[{"type":"LinkedEntity","source":"Person","relation":"BelongsTo","target":"LegalBody","description":"","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Actor"]},"target":{"type":"ResourceType","id":"8a40ce88-4332-4509-b9dc-593125145f77","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:05.306 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:05.306 +0000"},"name":"LegalBody","description":"LegalBody represents any legal entity playing the role of an Actor.","facets":[],"resources":[{"type":"LinkedEntity","source":"Person","relation":"BelongsTo","target":"LegalBody","description":"","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Actor"]}},{"type":"IsRelatedToType","id":"b5052327-c7d3-4561-abab-a3c5b945efef","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:38.308 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:38.308 +0000"},"name":"CallsFor","description":"A {@link Service} instance can require another {@link Service} instance to properly operate and this is indicated with CallsFor. Motivations similar to the ones for {@link Requires} relation conducted to the definition for this relation.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["IsRelatedTo"],"source":{"type":"ResourceType","id":"30922302-8db8-4f78-9d52-07b2a1dcae5d","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:45.398 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:45.398 +0000"},"name":"Service","description":"Service (Abstract) represents any typology of service worth registering in the infrastructure. Service has relations with quite all other resources. If on one side, an Hybrid Data Infrastructure (HDI) is created to manage datasets, on the other side the HDI born to manage such datasets digitally. We could affirm that datasets and services are the two pillar resources around which revolves the entire infrastructure. It is important to highlight that Service has a general meaning and must not be intended as a network-callable service which is represented instead by one of its specialisation called {@link EService}.Giving that Service is abstract no {@link IsIdentifiedBy} association with a facet is provided which in turns is responsibility of the specialisation.","facets":[{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"DescriptiveMetadataFacet","description":"Any descriptive information associated with the service, e.g. for discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"SubjectFacet","description":"Any subject/tag associated with the service for descriptive, cataloguing and discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"CapabilityFacet","description":"Any facility supported/offered by the Service.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Service","relation":"CallsFor","target":"Service","description":"A reference to the Services needed by the target instance to work.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Activates","target":"Service","description":"The source Service enables the target Service to be running. Examples are an Hosting Node which enables an EService; A VirtualMachine enabling an EService or an HostingNode; An EService enabling a RunningPlugin; A VirtualMachine enabling an HostingNode etc","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"IsCustomizedBy","target":"ConfigurationTemplate","description":"A reference to any configuration characterising the Service behaviour.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Manages","target":"Dataset","description":"A reference to any Dataset resource managed by the Service instance.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Enables","target":"Software","description":"A reference to any Software the Service is enabling (i.e. the Software is running throught the EService).","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Requires","target":"Service","description":"A reference to any Service needed by a Software to properly operate, e.g. this can be used to capture a sort of run-time requirements between a software component and the Service it needs.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["GCubeResource"]},"target":{"type":"ResourceType","id":"30922302-8db8-4f78-9d52-07b2a1dcae5d","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:45.398 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:45.398 +0000"},"name":"Service","description":"Service (Abstract) represents any typology of service worth registering in the infrastructure. Service has relations with quite all other resources. If on one side, an Hybrid Data Infrastructure (HDI) is created to manage datasets, on the other side the HDI born to manage such datasets digitally. We could affirm that datasets and services are the two pillar resources around which revolves the entire infrastructure. It is important to highlight that Service has a general meaning and must not be intended as a network-callable service which is represented instead by one of its specialisation called {@link EService}.Giving that Service is abstract no {@link IsIdentifiedBy} association with a facet is provided which in turns is responsibility of the specialisation.","facets":[{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"DescriptiveMetadataFacet","description":"Any descriptive information associated with the service, e.g. for discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"SubjectFacet","description":"Any subject/tag associated with the service for descriptive, cataloguing and discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"CapabilityFacet","description":"Any facility supported/offered by the Service.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Service","relation":"CallsFor","target":"Service","description":"A reference to the Services needed by the target instance to work.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Activates","target":"Service","description":"The source Service enables the target Service to be running. Examples are an Hosting Node which enables an EService; A VirtualMachine enabling an EService or an HostingNode; An EService enabling a RunningPlugin; A VirtualMachine enabling an HostingNode etc","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"IsCustomizedBy","target":"ConfigurationTemplate","description":"A reference to any configuration characterising the Service behaviour.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Manages","target":"Dataset","description":"A reference to any Dataset resource managed by the Service instance.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Enables","target":"Software","description":"A reference to any Software the Service is enabling (i.e. the Software is running throught the EService).","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Requires","target":"Service","description":"A reference to any Service needed by a Software to properly operate, e.g. this can be used to capture a sort of run-time requirements between a software component and the Service it needs.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["GCubeResource"]}},{"type":"IsRelatedToType","id":"68c1d38b-0dff-4bee-8741-aa2ee9a5a5bb","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:30:05.931 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:30:05.931 +0000"},"name":"Manages","description":"Manages indicates that of the source {@link Service} manages the target {@link Dataset}, e.g. read, manipulate, etc.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["IsRelatedTo"],"source":{"type":"ResourceType","id":"30922302-8db8-4f78-9d52-07b2a1dcae5d","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:45.398 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:45.398 +0000"},"name":"Service","description":"Service (Abstract) represents any typology of service worth registering in the infrastructure. Service has relations with quite all other resources. If on one side, an Hybrid Data Infrastructure (HDI) is created to manage datasets, on the other side the HDI born to manage such datasets digitally. We could affirm that datasets and services are the two pillar resources around which revolves the entire infrastructure. It is important to highlight that Service has a general meaning and must not be intended as a network-callable service which is represented instead by one of its specialisation called {@link EService}.Giving that Service is abstract no {@link IsIdentifiedBy} association with a facet is provided which in turns is responsibility of the specialisation.","facets":[{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"DescriptiveMetadataFacet","description":"Any descriptive information associated with the service, e.g. for discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"SubjectFacet","description":"Any subject/tag associated with the service for descriptive, cataloguing and discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"CapabilityFacet","description":"Any facility supported/offered by the Service.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Service","relation":"CallsFor","target":"Service","description":"A reference to the Services needed by the target instance to work.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Activates","target":"Service","description":"The source Service enables the target Service to be running. Examples are an Hosting Node which enables an EService; A VirtualMachine enabling an EService or an HostingNode; An EService enabling a RunningPlugin; A VirtualMachine enabling an HostingNode etc","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"IsCustomizedBy","target":"ConfigurationTemplate","description":"A reference to any configuration characterising the Service behaviour.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Manages","target":"Dataset","description":"A reference to any Dataset resource managed by the Service instance.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Enables","target":"Software","description":"A reference to any Software the Service is enabling (i.e. the Software is running throught the EService).","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Requires","target":"Service","description":"A reference to any Service needed by a Software to properly operate, e.g. this can be used to capture a sort of run-time requirements between a software component and the Service it needs.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["GCubeResource"]},"target":{"type":"ResourceType","id":"7192a2b5-a30f-4f71-86ce-982390213288","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:51.753 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:51.753 +0000"},"name":"Dataset","description":"A Dataset is a set of digital objects representing data and treated collectively as a unit. It is the key resource of a HDI, even more, it is the reason the HDI exists. A Dataset can be correlated to another Dataset by using {@link IsCorrelatedTo} relation.","facets":[{"type":"LinkedEntity","source":"Dataset","relation":"IsIdentifiedBy","target":"IdentifierFacet","description":"The set of Identifiers associated with the Dataset instance.","min":1,"max":1},{"type":"LinkedEntity","source":"Dataset","relation":"HasContact","target":"ContactFacet","description":"The contact information of the entity responsible for the dataset.","min":1,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasContributor","target":"ContactFacet","description":"The contact information on contributors supporting the creation and development of the Dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasCreator","target":"ContactFacet","description":" The contact information of the creator of the Dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasCurator","target":"ContactFacet","description":" The contact information of the entity responsible for the curation of the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasMaintainer","target":"ContactFacet","description":"The contact information of the entity responsible for the maintenance of the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasOwner","target":"ContactFacet","description":"The contact information of the entity having the ownership of the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"AccessPointFacet","description":"The access point to use for having access to the dataset. The embargoState can be modeled through the access policy defined in the consistsOf relation.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"LicenseFacet","description":"The licence governing dataset exploitation. The duration of license (if any) is captured by the expiry date defined in the consistsOf relation.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"EventFacet","description":"Any 'event' characterising the lifecycle of the dataset, e.g. collection date, last collection date.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"ProvenanceFacet","description":"Any provenance record associated with the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasCoverage","target":"CoverageFacet","description":"Any coverage related information (e.g. topic, species) characterising the content of the dataset.","min":1,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasTemporalCoverage","target":"CoverageFacet","description":"Any temporal coverage information characterising the content of the dataset, e.g. the time-span covered by the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasSpatialCoverage","target":"CoverageFacet","description":"Any geo-spatial coverage information characterising the content of the dataset, e.g. the area covered by the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"DescriptiveMetadataFacet","description":"Any descriptive information associated with the dataset, e.g. for discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"SubjectFacet","description":"Any subject/tag associated with the dataset for descriptive and discovery purposes.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Dataset","relation":"Involves","target":"Actor","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"IsCorrelatedTo","target":"Dataset","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"IsCompliantWith","target":"Schema","description":"Any schema characterising the content of the dataset, e.g. the schema describing the 'columns' of a CSV-based dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"ConcreteDataset","relation":"IsPartOf","target":"Dataset","description":"The reference to the 'incarnations'/'manifestations' contributing to a dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Manages","target":"Dataset","description":"The link between the service that 'manages' the dataset and the dataset, e.g. the service that hosts the dataset and give access to it.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]}},{"type":"IsRelatedToType","id":"d92fa44c-0281-4071-8ba2-11757dde199f","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:30:08.537 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:30:08.537 +0000"},"name":"IsConfiguredBy","description":"The relation IsConfiguredBy indicates that the source {@link Software} requires a configuration when it is instantiated.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["IsRelatedTo"],"source":{"type":"ResourceType","id":"3d73bcc3-5750-406c-bfab-9730a401a8ff","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:07.549 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:07.549 +0000"},"name":"Software","description":"Software is an entity worth being represented for management purposes. The relation {@link DependsOn} indicates dependencies between two Software captured for management purposes.","facets":[{"type":"LinkedEntity","source":"Software","relation":"IsIdentifiedBy","target":"SoftwareFacet","description":"Software coordinates which identify the Software per se.","min":1,"max":1},{"type":"LinkedEntity","source":"Software","relation":"ConsistsOf","target":"SoftwareFacet","description":"Apart the one connected by the IsIdentifiedBy relation (gCube coordinates) the others identify the software in other way e.g. (Maven coordinates).","min":1,"max":null},{"type":"LinkedEntity","source":"Software","relation":"ConsistsOf","target":"CapabilityFacet","description":"","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Software","relation":"DependsOn","target":"Software","description":"To capture any dependency between two software artifacts.","min":0,"max":null},{"type":"LinkedEntity","source":"Software","relation":"IsConfiguredBy","target":"ConfigurationTemplate","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Software","relation":"Requires","target":"Service","description":"To capture any dependency between a software artifact and a Service, e.g. A software requiring a specific database instance.","min":0,"max":null},{"type":"LinkedEntity","source":"VirtualService","relation":"Demands","target":"Software","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Plugin","relation":"IsPluginOf","target":"Software","description":"To capture the relation between a Software and its Plugins.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]},"target":{"type":"ResourceType","id":"b2aa23eb-1ffd-4a04-9d63-9b5a0210ea89","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:57.648 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:57.648 +0000"},"name":"ConfigurationTemplate","description":"Configuration Template represents a template for a configuration. It describes how a configuration has to be realised, e.g. used to define the catalogue configuration parameters template.","facets":[{"type":"LinkedEntity","source":"ConfigurationTemplate","relation":"IsIdentifiedBy","target":"IdentifierFacet","description":"","min":1,"max":1}],"resources":[{"type":"LinkedEntity","source":"Configuration","relation":"IsDerivationOf","target":"ConfigurationTemplate","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"IsCustomizedBy","target":"ConfigurationTemplate","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Software","relation":"IsConfiguredBy","target":"ConfigurationTemplate","description":"","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]}},{"type":"IsRelatedToType","id":"53d94713-5436-4295-8a15-4b1c33a69dc3","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:45.808 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:45.808 +0000"},"name":"Discovers","description":"Any {@link EService} or its specialisations can be related with another {@link EService} with Discovers relation. Discovers relation inform that the source {@link EService} discovers the target through the information system.Discovers relation specialise the semantic of {@link CallsFor}.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["CallsFor"],"source":{"type":"ResourceType","id":"dee1ce45-9311-4ff8-aab5-b8efcbc59ae2","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:02.243 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:02.243 +0000"},"name":"EService","description":"EService is any running service that is registered in the infrastructure and made available by an access point.","facets":[{"type":"LinkedEntity","source":"EService","relation":"IsIdentifiedBy","target":"SoftwareFacet","description":"The main software enabling the EService capabilities.","min":1,"max":1},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"SoftwareFacet","description":"Software available in the EService environment that characterizes the specific EService instance.","min":0,"max":null},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"AccessPointFacet","description":"Identify the endpoints of the EService.","min":1,"max":null},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"EventFacet","description":"Events characterising the current status and lifecycle of the service, e.g. ActivationTime, DeploymentTime.","min":1,"max":null},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"StateFacet","description":"The current status of the EService, e.g. STARTED, ready, down, failed.","min":1,"max":1},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"LicenseFacet","description":"The specific terms of use governing the exploitation of the EService.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"EService","relation":"Discovers","target":"EService","description":"A reference to any other EService, the EService instance is discovering through query on IS.","min":0,"max":null},{"type":"LinkedEntity","source":"EService","relation":"Uses","target":"EService","description":"A reference to any other EService, the EService instance is invoking.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Service"]},"target":{"type":"ResourceType","id":"dee1ce45-9311-4ff8-aab5-b8efcbc59ae2","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:02.243 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:02.243 +0000"},"name":"EService","description":"EService is any running service that is registered in the infrastructure and made available by an access point.","facets":[{"type":"LinkedEntity","source":"EService","relation":"IsIdentifiedBy","target":"SoftwareFacet","description":"The main software enabling the EService capabilities.","min":1,"max":1},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"SoftwareFacet","description":"Software available in the EService environment that characterizes the specific EService instance.","min":0,"max":null},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"AccessPointFacet","description":"Identify the endpoints of the EService.","min":1,"max":null},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"EventFacet","description":"Events characterising the current status and lifecycle of the service, e.g. ActivationTime, DeploymentTime.","min":1,"max":null},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"StateFacet","description":"The current status of the EService, e.g. STARTED, ready, down, failed.","min":1,"max":1},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"LicenseFacet","description":"The specific terms of use governing the exploitation of the EService.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"EService","relation":"Discovers","target":"EService","description":"A reference to any other EService, the EService instance is discovering through query on IS.","min":0,"max":null},{"type":"LinkedEntity","source":"EService","relation":"Uses","target":"EService","description":"A reference to any other EService, the EService instance is invoking.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Service"]}},{"type":"IsRelatedToType","id":"cc102bd5-f0af-424a-b1f7-a3d568cf77ea","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:53.143 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:53.143 +0000"},"name":"IsDerivationOf","description":"IsDerivationOf indicate that the source {@link Configuration} is an instantiation of the target {@link ConfigurationTemplate}.","version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["IsRelatedTo"],"source":{"type":"ResourceType","id":"73c2bdd0-d6d7-44dc-a681-a499718086a2","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:59.725 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:59.725 +0000"},"name":"Configuration","description":"Configuration is a specialisation of {@link ConfigurationTemplate} and is an instance of a configuration template characterising the behaviour and shape of the resource it is attached to. The Configuration can be related to the template it derives using {@link IsDerivationOf}.","facets":[],"resources":[{"type":"LinkedEntity","source":"Configuration","relation":"IsDerivationOf","target":"ConfigurationTemplate","description":"","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["ConfigurationTemplate"]},"target":{"type":"ResourceType","id":"b2aa23eb-1ffd-4a04-9d63-9b5a0210ea89","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:57.648 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:57.648 +0000"},"name":"ConfigurationTemplate","description":"Configuration Template represents a template for a configuration. It describes how a configuration has to be realised, e.g. used to define the catalogue configuration parameters template.","facets":[{"type":"LinkedEntity","source":"ConfigurationTemplate","relation":"IsIdentifiedBy","target":"IdentifierFacet","description":"","min":1,"max":1}],"resources":[{"type":"LinkedEntity","source":"Configuration","relation":"IsDerivationOf","target":"ConfigurationTemplate","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"IsCustomizedBy","target":"ConfigurationTemplate","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Software","relation":"IsConfiguredBy","target":"ConfigurationTemplate","description":"","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]}}] \ No newline at end of file diff --git a/src/test/resources/types/Property.json b/src/test/resources/types/Property.json new file mode 100644 index 0000000..548fb9f --- /dev/null +++ b/src/test/resources/types/Property.json @@ -0,0 +1 @@ +[{"type":"PropertyType","name":"Property","description":"This is the base type for any Property","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:23:25.016 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:23:25.016 +0000"},"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["PropertyElement"],"id":"8a213270-3fb1-4348-9281-beb4848aa3b9"},{"type":"PropertyType","name":"Metadata","description":"This type provides metadata per every IdentifiableElement","properties":[{"type":"PropertyDefinition","name":"creationTime","description":"Creation time. It is represented in the format yyyy-MM-dd HH:mm:ss.SSS Z.","mandatory":true,"readonly":true,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"Date"},{"type":"PropertyDefinition","name":"lastUpdateBy","description":"The user that made the last update to the Entity or the Relation. At Creation Time, it assumes the same value of createdBy.","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"createdBy","description":"The user that created the Entity or the Relation. It is initialized at Creation Time.","mandatory":true,"readonly":true,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"lastUpdateTime","description":"Last Update time. At creation time it assumes the same value of creationTime. It is represented in the format yyyy-MM-dd HH:mm:ss.SSS Z","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"Date"}],"metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:23:25.267 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:23:25.267 +0000"},"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":true,"extendedTypes":["Property"],"id":"ba91ee9e-dc43-4c30-89d3-8c7cfa186436"},{"type":"PropertyType","name":"AccessPolicy","description":"AccessPolicy information","properties":[{"type":"PropertyDefinition","name":"note","description":"","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"policy","description":"","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"ValueSchema"}],"metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:11.003 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:11.003 +0000"},"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeProperty"],"id":"7085ea13-68ee-479e-a385-d0e3a9b5a386"},{"type":"PropertyType","name":"ValueSchema","description":"This type aims at exposing a value which can be automatically managed by any client with no knowledge of its format.","properties":[{"type":"PropertyDefinition","name":"value","description":"The value which schema is available at the URI provided in the schema property.","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"schema","description":"An URI containing a schema used to validate/interpret the content of the value. It is only an informative field. The validation is in charge of the client.","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"}],"metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:23:58.841 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:23:58.841 +0000"},"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeProperty"],"id":"b0885b74-87db-463a-9b43-a28692a8d8d3"},{"type":"PropertyType","name":"GCubeProperty","description":"Marker type for any properties extended in the gCube model.","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:23:51.879 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:23:51.879 +0000"},"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Property"],"id":"19cf0658-1594-48ed-b836-7e587eaa2133"},{"type":"PropertyType","name":"Encrypted","description":"This type is used to properly manage values must be stored safely (e.g. encrypted) in the IS.","properties":[{"type":"PropertyDefinition","name":"value","description":"The value to store safely in the IS","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":null,"propertyType":"String"}],"metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:23:49.932 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:23:49.932 +0000"},"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Property"],"id":"e7e595f7-4a6e-4a35-84c9-24998ffe5e30"},{"type":"PropertyType","name":"PropagationConstraint","description":"This type provides propagation constraint for Relation","properties":[{"type":"PropertyDefinition","name":"remove","description":"It indicates the behaviour to implement for the target Entity when a 'remove' action is performed on the source Resource. Remove actions is the operation of removing an instance from a context.","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":"^(cascadeWhenOrphan|cascade|keep)$","propertyType":"String"},{"type":"PropertyDefinition","name":"add","description":"It indicates the behaviour to implement for the target Entity when an 'add' action is performed on the source Resource. Add action is the operation of adding an instance to a context.","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":"^(propagate|unpropagate)$","propertyType":"String"},{"type":"PropertyDefinition","name":"delete","description":"It indicates the behaviour to implement for the target Entity when a 'delete' action is performed on the source Resource. Delet action is the operation of deleting an instance (it has an impact on all contexts).","mandatory":true,"readonly":false,"notnull":true,"max":null,"min":null,"regexp":"^(cascadeWhenOrphan|cascade|keep)$","propertyType":"String"}],"metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:23:45.260 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:23:45.260 +0000"},"version":"1.1.0","changelog":{"1.0.0":"First Version","1.1.0":"Added 'delete' propagation constraint"},"abstract":false,"final":true,"extendedTypes":["Property"],"id":"c9e3dfdf-d091-4f5a-b430-99ebdd3abb29"},{"type":"PropertyType","name":"EnumStringProperty","description":"Enum String Property","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:01.102 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:01.102 +0000"},"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeProperty"],"id":"c49e1261-8301-47b7-8606-5ea290fe29c2"},{"type":"PropertyType","name":"RegexProperty","description":"A property validated with a regular expression.","properties":[{"type":"PropertyDefinition","name":"value","description":"","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"},{"type":"PropertyDefinition","name":"schema","description":"","mandatory":false,"readonly":false,"notnull":false,"max":null,"min":null,"regexp":null,"propertyType":"String"}],"metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:18.047 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:18.047 +0000"},"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeProperty"],"id":"e7f871fe-7b88-40bd-aa99-5fd6c667e4fe"}] \ No newline at end of file diff --git a/src/test/resources/types/Resource.json b/src/test/resources/types/Resource.json new file mode 100644 index 0000000..a2d1087 --- /dev/null +++ b/src/test/resources/types/Resource.json @@ -0,0 +1 @@ +[{"type":"ResourceType","id":"5aa731ec-b1c8-46eb-a2b2-f25172d0bc6f","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:24:22.304 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:24:22.304 +0000"},"name":"Resource","description":"This is the base type for any Resource","facets":[{"type":"LinkedEntity","source":"Resource","relation":"ConsistsOf","target":"Facet","description":"Any Resource consists of one or more Facets which describes the different aspects of the resource.","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"Resource","relation":"IsRelatedTo","target":"Resource","description":"Any Resource can be related to any other resource.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Entity"]},{"type":"ResourceType","id":"341dd43c-2333-40da-a98f-059e94dfec87","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:41.094 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:41.094 +0000"},"name":"GCubeResource","description":"Marker type for any gCube Resource extended in the gCube model.","facets":[{"type":"LinkedEntity","source":"GCubeResource","relation":"IsIdentifiedBy","target":"Facet","description":"Any Resource has at least one Facet which in some way allow to identify the Resource per se.","min":1,"max":1}],"resources":[],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["Resource"]},{"type":"ResourceType","id":"b959a18d-645d-4208-8e96-6f6b0ec2c018","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:43.199 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:43.199 +0000"},"name":"Actor","description":"Actor (Abstract) is any entity (human or machine) playing an active role in the infrastructure. Actor has two specialisations, {@link LegalBody} which represent any legal entity, and {@link Person} which is any human playing the role of Actor. An Actor can belong to a {@link LegalBody} and this is expressed using the defined {@link BelongsTo} relation.","facets":[{"type":"LinkedEntity","source":"Actor","relation":"IsIdentifiedBy","target":"ContactFacet","description":" An Actor has at least a Contact Facet which permit to identify the Actor per se. ","min":1,"max":1},{"type":"LinkedEntity","source":"Actor","relation":"ConsistsOf","target":"ContactReferenceFacet","description":"","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Dataset","relation":"Involves","target":"Actor","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Site","relation":"IsOwnedBy","target":"Actor","description":"","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["GCubeResource"]},{"type":"ResourceType","id":"dee1ce45-9311-4ff8-aab5-b8efcbc59ae2","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:02.243 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:02.243 +0000"},"name":"EService","description":"EService is any running service that is registered in the infrastructure and made available by an access point.","facets":[{"type":"LinkedEntity","source":"EService","relation":"IsIdentifiedBy","target":"SoftwareFacet","description":"The main software enabling the EService capabilities.","min":1,"max":1},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"SoftwareFacet","description":"Software available in the EService environment that characterizes the specific EService instance.","min":0,"max":null},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"AccessPointFacet","description":"Identify the endpoints of the EService.","min":1,"max":null},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"EventFacet","description":"Events characterising the current status and lifecycle of the service, e.g. ActivationTime, DeploymentTime.","min":1,"max":null},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"StateFacet","description":"The current status of the EService, e.g. STARTED, ready, down, failed.","min":1,"max":1},{"type":"LinkedEntity","source":"EService","relation":"ConsistsOf","target":"LicenseFacet","description":"The specific terms of use governing the exploitation of the EService.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"EService","relation":"Discovers","target":"EService","description":"A reference to any other EService, the EService instance is discovering through query on IS.","min":0,"max":null},{"type":"LinkedEntity","source":"EService","relation":"Uses","target":"EService","description":"A reference to any other EService, the EService instance is invoking.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Service"]},{"type":"ResourceType","id":"4e24414a-e98c-4641-85d8-ddd75baced56","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:15.938 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:15.938 +0000"},"name":"RunningPlugin","description":"RunningPlugin allows differentiating which is the primary service and which is an additional capability of a such a service. Keeping the two concepts separated enables to share a service across VREs with a subset of its capabilities.","facets":[],"resources":[],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["EService"]},{"type":"ResourceType","id":"53455b7d-a03e-4d68-9ea1-45c8bb79edef","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:49.662 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:49.662 +0000"},"name":"HostingNode","description":"The HostingNode represent a container capable of managing the lifecycle of an electronic service, i.e., being capable to host and operate an {@link EService}. Examples are docker, tomcat. A container is a service which is conceived to enable any services respecting the container rules to be operative. The container does not typically provide any functionality rather than allowing the hosted service to operate. The HostingNode characterisation in terms of facets reflects the one presented for {@link VirtualMachine}. In particular, facets representing memory, CPU and networking interface are used to describe the HostingNode when the {@link VirtualMachine} enabling the HostingNode is not represented. Federated systems can provide virtual machines as resource or containers as resources. In some cases, the description of a container includes (virtual) hardware information. It is important to highlight that HostingNode is not a subclass of {@link VirtualMachine}.","facets":[{"type":"LinkedEntity","source":"HostingNode","relation":"IsIdentifiedBy","target":"NetworkingFacet","description":"The Network ID characterising the Hosting Node.","min":1,"max":1},{"type":"LinkedEntity","source":"HostingNode","relation":"ConsistsOf","target":"CPUFacet","description":"The CPU equipping the Hosting Node.","min":1,"max":null},{"type":"LinkedEntity","source":"HostingNode","relation":"HasPersistentMemory","target":"MemoryFacet","description":"The Disk Space Capacity of the Hosting Node.","min":1,"max":null},{"type":"LinkedEntity","source":"HostingNode","relation":"HasVolatileMemory","target":"MemoryFacet","description":"The RAM Capacity of the Hosting Node.","min":1,"max":null},{"type":"LinkedEntity","source":"HostingNode","relation":"ConsistsOf","target":"EventFacet","description":"Every event characterizing the life cycle of the Hosting Node, e.g. the activation time.","min":1,"max":null},{"type":"LinkedEntity","source":"HostingNode","relation":"ConsistsOf","target":"StateFacet","description":"The current state of the Hosting Node, e.g. started, ready, certified, down, failed.","min":1,"max":1},{"type":"LinkedEntity","source":"HostingNode","relation":"ConsistsOf","target":"SimplePropertyFacet","description":"Any pair property worth associating with the Hosting Node, e.g. Environment Variables","min":0,"max":null},{"type":"LinkedEntity","source":"HostingNode","relation":"ConsistsOf","target":"SoftwareFacet","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","min":0,"max":null}],"resources":[],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Service"]},{"type":"ResourceType","id":"b2aa23eb-1ffd-4a04-9d63-9b5a0210ea89","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:57.648 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:57.648 +0000"},"name":"ConfigurationTemplate","description":"Configuration Template represents a template for a configuration. It describes how a configuration has to be realised, e.g. used to define the catalogue configuration parameters template.","facets":[{"type":"LinkedEntity","source":"ConfigurationTemplate","relation":"IsIdentifiedBy","target":"IdentifierFacet","description":"","min":1,"max":1}],"resources":[{"type":"LinkedEntity","source":"Configuration","relation":"IsDerivationOf","target":"ConfigurationTemplate","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"IsCustomizedBy","target":"ConfigurationTemplate","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Software","relation":"IsConfiguredBy","target":"ConfigurationTemplate","description":"","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]},{"type":"ResourceType","id":"3d73bcc3-5750-406c-bfab-9730a401a8ff","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:07.549 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:07.549 +0000"},"name":"Software","description":"Software is an entity worth being represented for management purposes. The relation {@link DependsOn} indicates dependencies between two Software captured for management purposes.","facets":[{"type":"LinkedEntity","source":"Software","relation":"IsIdentifiedBy","target":"SoftwareFacet","description":"Software coordinates which identify the Software per se.","min":1,"max":1},{"type":"LinkedEntity","source":"Software","relation":"ConsistsOf","target":"SoftwareFacet","description":"Apart the one connected by the IsIdentifiedBy relation (gCube coordinates) the others identify the software in other way e.g. (Maven coordinates).","min":1,"max":null},{"type":"LinkedEntity","source":"Software","relation":"ConsistsOf","target":"CapabilityFacet","description":"","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Software","relation":"DependsOn","target":"Software","description":"To capture any dependency between two software artifacts.","min":0,"max":null},{"type":"LinkedEntity","source":"Software","relation":"IsConfiguredBy","target":"ConfigurationTemplate","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Software","relation":"Requires","target":"Service","description":"To capture any dependency between a software artifact and a Service, e.g. A software requiring a specific database instance.","min":0,"max":null},{"type":"LinkedEntity","source":"VirtualService","relation":"Demands","target":"Software","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Plugin","relation":"IsPluginOf","target":"Software","description":"To capture the relation between a Software and its Plugins.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]},{"type":"ResourceType","id":"62d038f4-d800-4fd9-82c2-1da6f14c1d44","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:09.694 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:09.694 +0000"},"name":"Plugin","description":"Collect Plugin information through the list of its facets.","facets":[],"resources":[{"type":"LinkedEntity","source":"Plugin","relation":"IsPluginOf","target":"Software","description":"A reference to the Software this Plugin is conceived to extend the capabilities.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Software"]},{"type":"ResourceType","id":"b8cf0197-07cf-4dfc-8741-dc46d6649143","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:17.847 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:17.847 +0000"},"name":"VirtualService","description":"VirtualService is an abstract service (non-physically existing service) worth being represented as an existing Service for management purposes. Examples of usage include cases where classes or set of services have to be managed like an existing unit. This resource is essential from infrastructure management point of view because it allows easily share a pool of services across VREs as a single unit. VirtualService mainly consist of a service definition which uses relations to {@link ConfigurationTemplate}, {@link EService}, {@link Software} (using {@link Demands} relation) to properly support the sharing across VREs. The correct sharing is feasible thanks to the {@link PropagationConstraint} of the model. The IS provides only the support for resource sharing as a bundle. Instead, the actions required to deploy a {@link Software} are a responsibility of the service invoking the sharing operation. This resource emerged thank to the experience maturated with gCube IS V.1 (gCore Based IS) where this resource was represented as a Generic Resource containing the list of the resource’s id forming the bundle which often lead to inconsistency.","facets":[{"type":"LinkedEntity","source":"VirtualService","relation":"IsIdentifiedBy","target":"SoftwareFacet","description":"","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"VirtualService","relation":"Demands","target":"Software","description":"","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Service"]},{"type":"ResourceType","id":"cae75df9-c3ec-49dc-bf2b-44a28f0e29e3","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:47.494 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:47.494 +0000"},"name":"VirtualMachine","description":"VirtualMachine (VM) is the typical resource represented in a cloud infrastructure. It is an emulation of a physical computer which appears to the running operative system as real hardware. A VM provides operative system functionality and potentially allows to install any software designed for the running operative system.","facets":[{"type":"LinkedEntity","source":"VirtualMachine","relation":"IsIdentifiedBy","target":"NetworkingFacet","description":"The Network ID characterising the Virtual Machine.","min":1,"max":1},{"type":"LinkedEntity","source":"VirtualMachine","relation":"ConsistsOf","target":"CPUFacet","description":"The CPU equipping the Virtual Machine.","min":1,"max":null},{"type":"LinkedEntity","source":"VirtualMachine","relation":"HasPersistentMemory","target":"MemoryFacet","description":"The Disk Space Capacity of the Virtual Machine.","min":1,"max":null},{"type":"LinkedEntity","source":"VirtualMachine","relation":"HasVolatileMemory","target":"MemoryFacet","description":"The RAM Capacity of the Virtual Machine.","min":1,"max":null},{"type":"LinkedEntity","source":"VirtualMachine","relation":"ConsistsOf","target":"EventFacet","description":"Every event characterizing the life cycle of the Virtual Machine, e.g. the activation time.","min":1,"max":null},{"type":"LinkedEntity","source":"VirtualMachine","relation":"ConsistsOf","target":"StateFacet","description":"The current state of the Virtual Machine, e.g. started, ready, down, unreachable.","min":1,"max":1},{"type":"LinkedEntity","source":"VirtualMachine","relation":"ConsistsOf","target":"SoftwareFacet","description":" Any Software characterising the Virtual Machine. Useful to report the hosted software that are not registered in the Resource Registry as Software Resource, e.g. Operating System","min":0,"max":null}],"resources":[],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Service"]},{"type":"ResourceType","id":"8a40ce88-4332-4509-b9dc-593125145f77","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:05.306 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:05.306 +0000"},"name":"LegalBody","description":"LegalBody represents any legal entity playing the role of an Actor.","facets":[],"resources":[{"type":"LinkedEntity","source":"Person","relation":"BelongsTo","target":"LegalBody","description":"","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Actor"]},{"type":"ResourceType","id":"15e0c7ce-8e11-41a6-958d-2625141ab68a","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:55.781 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:55.781 +0000"},"name":"Person","description":"Person represents any human playing the role of Actor.","facets":[],"resources":[{"type":"LinkedEntity","source":"Person","relation":"BelongsTo","target":"LegalBody","description":"","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Actor"]},{"type":"ResourceType","id":"73c2bdd0-d6d7-44dc-a681-a499718086a2","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:59.725 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:59.725 +0000"},"name":"Configuration","description":"Configuration is a specialisation of {@link ConfigurationTemplate} and is an instance of a configuration template characterising the behaviour and shape of the resource it is attached to. The Configuration can be related to the template it derives using {@link IsDerivationOf}.","facets":[],"resources":[{"type":"LinkedEntity","source":"Configuration","relation":"IsDerivationOf","target":"ConfigurationTemplate","description":"","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["ConfigurationTemplate"]},{"type":"ResourceType","id":"e1515685-5d2d-40f6-be51-a3b396aacd04","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:53.686 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:53.686 +0000"},"name":"ConcreteDataset","description":"ConcreteDataset is any incarnation/manifestation of a dataset or part of it. The relation {@link IsPartOf} is used when a ConcreteDataset is part of a {@link Dataset}.","facets":[{"type":"LinkedEntity","source":"ConcreteDataset","relation":"HasMaintainer","target":"ContactFacet","description":"The contact information of the entity responsible for the maintenance of the concrete dataset","min":1,"max":null},{"type":"LinkedEntity","source":"ConcreteDataset","relation":"ConsistsOf","target":"AccessPointFacet","description":"The access point to use for having access to the concrete dataset. The embargoState can be modeled through the access policy defined in the consistsOf relation.","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"ConcreteDataset","relation":"IsPartOf","target":"Dataset","description":"The reference to the 'incarnations'/'manifestations' contributing to a dataset.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["Dataset"]},{"type":"ResourceType","id":"62f76174-315d-4322-9275-caa9da397eda","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:11.657 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:11.657 +0000"},"name":"Site","description":"Site is a resource representing the location (physical or virtual) hosting the resources associated. Site allows to identify all the services that will be affected by downtime due to a scheduled maintenance, as well as the impact on the infrastructure that an accidentalloss of connectivity could cause. This resource allows to study and define the replication scenarios or to provide an adequate redundancy level to a VRE.","facets":[{"type":"LinkedEntity","source":"Site","relation":"IsIdentifiedBy","target":"IdentifierFacet","description":"The Site Identifier.","min":1,"max":1},{"type":"LinkedEntity","source":"Site","relation":"HasContact","target":"ContactFacet","description":"The main contact for the Site.","min":1,"max":null},{"type":"LinkedEntity","source":"Site","relation":"HasMaintainer","target":"ContactFacet","description":"Contact information of the maintainer of the Site.","min":1,"max":null},{"type":"LinkedEntity","source":"Site","relation":"HasManager","target":"ContactFacet","description":"Contact information of the Site Manager.","min":1,"max":null},{"type":"LinkedEntity","source":"Site","relation":"ConsistsOf","target":"LocationFacet","description":"","min":1,"max":null},{"type":"LinkedEntity","source":"Site","relation":"ConsistsOf","target":"NetworkingFacet","description":"","min":1,"max":null}],"resources":[{"type":"LinkedEntity","source":"Site","relation":"IsOwnedBy","target":"Actor","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Site","relation":"Hosts","target":"Service","description":"","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]},{"type":"ResourceType","id":"30922302-8db8-4f78-9d52-07b2a1dcae5d","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:45.398 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:45.398 +0000"},"name":"Service","description":"Service (Abstract) represents any typology of service worth registering in the infrastructure. Service has relations with quite all other resources. If on one side, an Hybrid Data Infrastructure (HDI) is created to manage datasets, on the other side the HDI born to manage such datasets digitally. We could affirm that datasets and services are the two pillar resources around which revolves the entire infrastructure. It is important to highlight that Service has a general meaning and must not be intended as a network-callable service which is represented instead by one of its specialisation called {@link EService}.Giving that Service is abstract no {@link IsIdentifiedBy} association with a facet is provided which in turns is responsibility of the specialisation.","facets":[{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"DescriptiveMetadataFacet","description":"Any descriptive information associated with the service, e.g. for discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"SubjectFacet","description":"Any subject/tag associated with the service for descriptive, cataloguing and discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"ConsistsOf","target":"CapabilityFacet","description":"Any facility supported/offered by the Service.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Service","relation":"CallsFor","target":"Service","description":"A reference to the Services needed by the target instance to work.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Activates","target":"Service","description":"The source Service enables the target Service to be running. Examples are an Hosting Node which enables an EService; A VirtualMachine enabling an EService or an HostingNode; An EService enabling a RunningPlugin; A VirtualMachine enabling an HostingNode etc","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"IsCustomizedBy","target":"ConfigurationTemplate","description":"A reference to any configuration characterising the Service behaviour.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Manages","target":"Dataset","description":"A reference to any Dataset resource managed by the Service instance.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Enables","target":"Software","description":"A reference to any Software the Service is enabling (i.e. the Software is running throught the EService).","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Requires","target":"Service","description":"A reference to any Service needed by a Software to properly operate, e.g. this can be used to capture a sort of run-time requirements between a software component and the Service it needs.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":true,"final":false,"extendedTypes":["GCubeResource"]},{"type":"ResourceType","id":"7192a2b5-a30f-4f71-86ce-982390213288","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:28:51.753 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:28:51.753 +0000"},"name":"Dataset","description":"A Dataset is a set of digital objects representing data and treated collectively as a unit. It is the key resource of a HDI, even more, it is the reason the HDI exists. A Dataset can be correlated to another Dataset by using {@link IsCorrelatedTo} relation.","facets":[{"type":"LinkedEntity","source":"Dataset","relation":"IsIdentifiedBy","target":"IdentifierFacet","description":"The set of Identifiers associated with the Dataset instance.","min":1,"max":1},{"type":"LinkedEntity","source":"Dataset","relation":"HasContact","target":"ContactFacet","description":"The contact information of the entity responsible for the dataset.","min":1,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasContributor","target":"ContactFacet","description":"The contact information on contributors supporting the creation and development of the Dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasCreator","target":"ContactFacet","description":" The contact information of the creator of the Dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasCurator","target":"ContactFacet","description":" The contact information of the entity responsible for the curation of the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasMaintainer","target":"ContactFacet","description":"The contact information of the entity responsible for the maintenance of the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasOwner","target":"ContactFacet","description":"The contact information of the entity having the ownership of the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"AccessPointFacet","description":"The access point to use for having access to the dataset. The embargoState can be modeled through the access policy defined in the consistsOf relation.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"LicenseFacet","description":"The licence governing dataset exploitation. The duration of license (if any) is captured by the expiry date defined in the consistsOf relation.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"EventFacet","description":"Any 'event' characterising the lifecycle of the dataset, e.g. collection date, last collection date.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"ProvenanceFacet","description":"Any provenance record associated with the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasCoverage","target":"CoverageFacet","description":"Any coverage related information (e.g. topic, species) characterising the content of the dataset.","min":1,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasTemporalCoverage","target":"CoverageFacet","description":"Any temporal coverage information characterising the content of the dataset, e.g. the time-span covered by the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"HasSpatialCoverage","target":"CoverageFacet","description":"Any geo-spatial coverage information characterising the content of the dataset, e.g. the area covered by the dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"DescriptiveMetadataFacet","description":"Any descriptive information associated with the dataset, e.g. for discovery purposes.","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"ConsistsOf","target":"SubjectFacet","description":"Any subject/tag associated with the dataset for descriptive and discovery purposes.","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Dataset","relation":"Involves","target":"Actor","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"IsCorrelatedTo","target":"Dataset","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Dataset","relation":"IsCompliantWith","target":"Schema","description":"Any schema characterising the content of the dataset, e.g. the schema describing the 'columns' of a CSV-based dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"ConcreteDataset","relation":"IsPartOf","target":"Dataset","description":"The reference to the 'incarnations'/'manifestations' contributing to a dataset.","min":0,"max":null},{"type":"LinkedEntity","source":"Service","relation":"Manages","target":"Dataset","description":"The link between the service that 'manages' the dataset and the dataset, e.g. the service that hosts the dataset and give access to it.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]},{"type":"ResourceType","id":"136650ac-1374-4764-89f1-cd516e56e3ee","metadata":{"type":"Metadata","supertypes":["Property"],"createdBy":"service-account-junit.tests.luca.frosini","creationTime":"2023-05-12 16:29:13.898 +0000","lastUpdateBy":"service-account-junit.tests.luca.frosini","lastUpdateTime":"2023-05-12 16:29:13.898 +0000"},"name":"Schema","description":"Schema is any reference schema used to specify compliant values. Examples include controlled vocabularies, ontologies, and others. This resource is mainly used by {@link Dataset} to evidence that is compliant with a Schema by using {@link IsCompliantWith} relation.","facets":[{"type":"LinkedEntity","source":"Schema","relation":"IsIdentifiedBy","target":"SchemaFacet","description":"","min":1,"max":1},{"type":"LinkedEntity","source":"Schema","relation":"HasContact","target":"ContactFacet","description":"","min":1,"max":null},{"type":"LinkedEntity","source":"Schema","relation":"ConsistsOf","target":"DescriptiveMetadataFacet","description":"","min":0,"max":null},{"type":"LinkedEntity","source":"Schema","relation":"ConsistsOf","target":"SubjectFacet","description":"","min":0,"max":null}],"resources":[{"type":"LinkedEntity","source":"Dataset","relation":"IsCompliantWith","target":"Schema","description":"Any schema characterising the content of the dataset, e.g. the schema describing the 'columns' of a CSV-based dataset.","min":0,"max":null}],"version":"1.0.0","changelog":{"1.0.0":"First Version"},"abstract":false,"final":false,"extendedTypes":["GCubeResource"]}] \ No newline at end of file