|
|
Line 253: |
Line 253: |
| | Enum | | | Enum |
| | <code>Regex=(cascadeWhenOrphan<nowiki>|</nowiki>cascade<nowiki>|</nowiki>keep)</code> | | | <code>Regex=(cascadeWhenOrphan<nowiki>|</nowiki>cascade<nowiki>|</nowiki>keep)</code> |
− | | i.e. Indicate the behaviour to ResourceRegistry to be applyed to the target Entity when the source Entity is remove from context or deleted | + | | Indicates the behaviour to implement for the target Entity when a 'remove' action is performed on the source Resource. |
| |- | | |- |
| | add | | | add |
Line 260: |
Line 260: |
| | i.e. Indicate the behaviour to ResourceRegistry to be applyed to the target Entity when the source Entity is added to Context | | | i.e. Indicate the behaviour to ResourceRegistry to be applyed to the target Entity when the source Entity is added to Context |
| |} | | |} |
| + | |
| + | |
| + | Remove values; |
| + | * cascadeWhenOrphan: When a remove action is performed on the source Entity of the relation, or directly on the relation, then the same remove action apart on the relation is performed to the target entity if it has no other incoming relations. |
| + | * cascade: When a remove action is performed on the source Entity of the relation, or directly on the relation, then the same remove action is performed on the relation and its target entity. |
| + | * keep: When a remove action is performed on the source Entity of the relation, or directly on the relation, then the same remove action is performed on relation but never to the target entity. |
| + | |
| + | |
| + | Add values; |
| + | |
| + | * propagate: When an 'add' action is performed on the source Entity of the relation, or directly on the relation, then the same add action is performed on the relation and its target Entity. |
| + | * unpropagate: When an 'add' action is performed on the source Entity of the relation, is performed on source relation only. Trying to perform an 'add' action on the relation has no effects. |
| + | |
| | | |
| Any [[#Relation|Relation]] contains such a property. If the values are not specified at creation time the system initialize it with the following rules: | | Any [[#Relation|Relation]] contains such a property. If the values are not specified at creation time the system initialize it with the following rules: |
Revision as of 11:57, 18 December 2020
Disclaimer
This Model is part of research conducted in the context of a PhD.
This wiki page represents just a partial view of the full rationale of the research.
To have a complete overview of the rationale of the model, please refer to the PhD thesis which is publicly available at:
https://etd.adm.unipi.it/t/etd-05102019-114151/
https://openportal.isti.cnr.it/doc?id=people______::470484e51fcb9e307a418c800efc44c8
If you need to refer to such work you can cite the PhD Thesis.
BibText:
@phdthesis{frosini2019transactional,
title={Transactional REST Information System for Federated Research Infrastructures enabling Virtual Research Environments},
author={Frosini, Luca},
year={2019},
school={UNIVERSIT{\`A} DI PISA}
}
An previous paper about this work is:
BibText:
@article{frosini2018facet,
title={A Facet-based Open and Extensible Resource Model for Research Data Infrastructures.},
author={Frosini, Luca and Pagano, Pasquale},
journal={Grey Journal (TGJ)},
volume={14},
number={2},
year={2018}
}
IS Model
The Information System Model (henceforth IS Model) is a graph model with Entities as nodes and Relations as edges.
IS Model is used by Information System Resource Registry
- Two typologies of entities are envisaged:
- Resources, i.e. entities representing a description of "thing" to be managed;
- Every Resource is described by a number of Facets.
- Facets, i.e. entities contributing to "build" a description of a Resource. Every facet, once attached to a Resource profile captures a certain aspect / characterization of the resource;
- Every facet is characterised by a number of properties;
- Each entity and relation
- has an header automatically generated for the sake of identification and provenance of the specific information;
- can be specialized
- A number of specializations are identified below. Such specializations are managed by the gCube Core services, i.e. Core services builds upon these specializations to realize its management tasks;
- Other specializations can be defined by clients, the system make it possible to store these additional typologies of relations and facets and to discover them.
- Facet and Relation instances can have additional properties which are not defined in the schema (henceforth schema-mixed mode).
- On relations:
- Any relation has a direction, i.e. a "source" (out bound of the relation) and a "target" (in bound of the relation). Anyway, the relation can be also navigated in the opposite direction;
- It is not permitted to define a Relation having a Facet as "source". In other words:
- It is not permitted to define a Relation connecting a Facet with another one;
- It is not permitted to define a Relation connecting a Facet with a Resource (as target);
- A Facet instance can be linked (by consistsOf or any specialization of it) from different Resources.
We derived the term Facet directly from the dictionary definition. Merriam Webster Dictionary defines facet as “any of the definable aspects that make up a subject (as of contemplation) or an object (as of consideration)”[1].
The Free Dictionary defines a facet as “One of numerous aspects, as of a subject” [2].
Properties
Any Property defined in the schema is characterised by:
- Name : Property Name
- Type : The Type of the Property (e.g. String, Integer, ...). It can be a Basic Type or a Derived Type or a Complex Type
- Description : The description of the Property.
default=null
.
- Mandatory (M): Indicate if the Property is mandatory.
default=false
.
- ReadOnly (RO): The Property cannot change its value.
default=false
.
- NotNull (NN): Whether the property must assume a value diverse from 'null' or not.
default=false
- Max (Max):
default=null
- Min (Min):
default=null
- Regex (Reg)): A Regular Expression to validate the property value,
default=null
. A good online tool for regex is avalable at https://regex101.com/
Basic Types
Type
|
Java type
|
Description
|
Boolean
|
java.lang.Boolean or boolean
|
Handles only the values True or False.
|
Integer
|
java.lang.Integer or int or java.math.BigInteger
|
32-bit signed Integers.
|
Short
|
java.lang.Short or short
|
Small 16-bit signed integers.
|
Long
|
java.lang.Long or long
|
Big 64-bit signed integers.
|
Float
|
java.lang.Float or float
|
Decimal numbers.
|
Double
|
java.lang.Double or double
|
Decimal numbers with high precision.
|
Date
|
java.util.Date
|
Any date with the precision up to milliseconds.
|
String
|
java.lang.String
|
Any string as alphanumeric sequence of chars.
|
Property
|
? extends org.gcube.informationsystem.model.reference.properties.Property
|
This is an Object contained inside the owner Entity and has no Header. It is reachable only by navigating the owner Entity.
|
Property list
|
List<? extends org.gcube.informationsystem.model.reference.properties.Property>
|
List of Objects contained inside the owner Entity and have no Header. They are reachable only by navigating the owner Entity.
|
Property set
|
Set<? org.gcube.informationsystem.model.reference.properties.Property>
|
Set (no duplicates) of Objects contained inside the owner Entity and have no Header. They are reachable only by navigating the owner Entity.
|
Property map
|
Map<String, ? extends org.gcube.informationsystem.model.reference.properties.Propertyd>
|
Map of Objects contained inside the owner Entity and have no Header. They are reachable only by navigating the owner Entity.
|
Byte
|
java.lang.Byte or byte
|
Single byte. useful to store small 8-bit signed integers.
|
Binary
|
java.lang.Byte[] or byte[]
|
Can contain any value as byte array.
|
Derived Types
The following are obtained using a String as real type and adding a validation regex.
Type
|
Java type
|
Description
|
Enum
|
java.lang.Enum or enum
|
by default it is represented using the String representation of the Enum. So that the primitive type used will be String. The enumeration is checked by setting Regexpr property. The Regular Expression is auto-generated and it will be something like ^(FIRST-ENUM-STRING_REPRESENTATION|SECOND-ENUM-STRING_REPRESENTATION|...|LAST_ENUM_STRING_REPRESENTATION)$ .
Otherwise (if indicated using an annotation), it can be represented using the Integer value of the Enum. So that the primitive type used will be Integer. The enumeration is checked using Max and Min properties.
|
UUID
|
java.util.UUID
|
String representation of the UUID. The check is obtained using the regular expression ^([a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}){1}$
|
URL
|
java.net.URL
|
String representation of the URL. No check actually.
|
URI
|
java.net.URI
|
String representation of the URI. No check actually.
|
TypeVersion
|
org.gcube.informationsystem.utils.TypeVersion
|
A type representing and validating a version in the following format X.X.X Major(Integer).Minor(Integer).Revision(Integer) (e.g 1.0.0, 2.3.0, 2.0.1). The check is obtained using the regular expression ^[1-9][0-9]{0,}\.(0|([1-9][0-9]{0,}))\.(0|([1-9][0-9]{0,}))$ .
|
Complex Types
Any property defined by composing basic types derives from Property type.
Property
It does not define any field. It is just used as a base class.
Every Entity and Relation has an Header automatically created/updated by the System.
Header extends
Property
Name
|
Type
|
Attributes
|
Description
|
uuid
|
UUID
|
Mandatory=true
NotNull=true
ReadOnly=true
|
This UUID is be used to identify the Entity or the Relation univocally.
|
creator
|
String
|
Mandatory=true
NotNull=true
ReadOnly=true
|
The user that created the Entity or the Relation. It is initialized at creation time.
|
modifiedBy
|
String
|
Mandatory=true
NotNull=true
|
The user that made the last update to the Entity or the Relation. At creation time, it assumes the same value of creator.
|
creationTime
|
Date
|
Mandatory=true
NotNull=true
ReadOnly=true
|
Creation time. It represents the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970, UTC.
|
lastUpdateTime
|
Date
|
Mandatory=true
NotNull=true
|
Last Update time. At creation time it assumes the same value of creationTime. It represents the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970, UTC.
|
PropagationConstraint
At any time entities and relations can be added or removed to/from a context or deleted.
The PropagationConstraint property is contained in each relation and indicates the behavior to be held on a target entity when an event related to a context occurs in the source resource or directly to the relation.
PropagationConstraint extends
Property
Name
|
Type
|
Attributes
|
Description
|
remove
|
Enum
|
Regex=(cascadeWhenOrphan|cascade|keep)
|
Indicates the behaviour to implement for the target Entity when a 'remove' action is performed on the source Resource.
|
add
|
Enum
|
Regex=(propagate|unpropagate)
|
i.e. Indicate the behaviour to ResourceRegistry to be applyed to the target Entity when the source Entity is added to Context
|
Remove values;
- cascadeWhenOrphan: When a remove action is performed on the source Entity of the relation, or directly on the relation, then the same remove action apart on the relation is performed to the target entity if it has no other incoming relations.
- cascade: When a remove action is performed on the source Entity of the relation, or directly on the relation, then the same remove action is performed on the relation and its target entity.
- keep: When a remove action is performed on the source Entity of the relation, or directly on the relation, then the same remove action is performed on relation but never to the target entity.
Add values;
- propagate: When an 'add' action is performed on the source Entity of the relation, or directly on the relation, then the same add action is performed on the relation and its target Entity.
- unpropagate: When an 'add' action is performed on the source Entity of the relation, is performed on source relation only. Trying to perform an 'add' action on the relation has no effects.
Any Relation contains such a property. If the values are not specified at creation time the system initialize it with the following rules:
Encrypted
Encrypted extends
Property
Name
|
Type
|
Attributes
|
Description
|
value
|
String
|
|
The encrypted value. The resource registry store safely the value. When received the value is decrypted using the key of current context and store the value safely. When the value is read, the resource-registry retrieve the value and encrypt it with the key of current context.
|
Entity
Resource
Abstract
Resource
Scope: This entity is conceived to describe every "main thing" to be registered and discovered by the Information System.
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Facets
|
Resource
|
isIdentifiedBy
|
1..n
|
Facet
|
Any Resource has at least one Facet which in some way allow to identify the Resource per se.
|
Resource
|
consistsOf
|
0..n
|
Facet
|
Any Resource consist of zero or more Facets which describes the different aspects of the facet.
|
Relations
|
Resource
|
isRelatedTo
|
0..n
|
Resource
|
Any Resource can be related to any other resource.
|
Facet
Facets are collections of attributes conceived to capture a certain feature / aspect of the Resource they are associated with.
Every Facet has:
- An Header automatically generated to capture identification- and provenace-related aspects of the facet once it is instantiated;
- Zero or more properties. Besides the per-facet envisaged properties, clients can add new ones.
Relation
Every relation has:
isRelatedTo
consistsOf
Internal Entity and Relation
For internal use only are defined the following entity and relation:
Context
Model a Context (aka scope) in the same Application Domain.
Context
Goal: Models a Context (aka scope).
|
Properties
|
Name
|
Type
|
Attributes
|
Description
|
name
|
String
|
Mandatory=true NotNull=true
|
The name of the context. Two Context with the same name can exist but they cannot have the same parent. In other words, a Context cannot have two children with the same name.
|
Known Usage
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Context
|
isParentOf
|
0..n
|
Context
|
...
|
isParentOf
This relation has no propagation constraint.
Best practices and guidelines
- On Facet instances "reuse" across Resource Profiles:
- This can be guaranteed automatically by the system, if and just in the case the system wants to avoid duplication of information. It is based on a configuration policy;
- This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.
gCube Model
gCube Model is a resource model built on top of IS Model which captures the different aspects of the resources and their relations playing significant roles in a research infrastructure empowered by gCube.
Overview of gCube Model Resources and (isRelatedTo) Relations
gCube Model Properties
GCubeProperty
The base type for any Property defined in the gCube Model .
GCubeProperty extends
Property
Name
|
Type
|
Attributes
|
Description
|
This type does not define any additional attributes.
|
The Java Interface declaration for such a type is available at:
https://code-repo.d4science.org/gCubeSystem/gcube-model/src/branch/master/src/main/java/org/gcube/resourcemanagement/model/reference/properties/GCubeProperty.java
ValueSchema
This type aims at exposing a value which can be automatically managed by any client with no knowledge of its format.
ValueSchema extends
GCubeProperty
Name
|
Type
|
Attributes
|
Description
|
value
|
String
|
Mandatory=true
NotNull=true
|
The value which schema is available at the URI provided in the schema property
|
schema
|
URI
|
Mandatory=true
NotNull=true
|
An URI containing a schema used to validate/interpret the content of the value. It is only an informative field. The validation is charge of the client.
|
The client can retrieve the schema at the provided URI, i.e., schema property, and use its content to understand/validate/manipulate the information contained in the value property.
The client must have the capability to understand the semantics of content retrieved at the URI endpoint. Examples of application of such type are eXtensible Markup Language (XML) values which can be validated by a Document Type Definition (DTD) or XML Schema Definition (XSD).
The Java Interface declaration for such a type is available at:
https://code-repo.d4science.org/gCubeSystem/gcube-model/src/branch/master/src/main/java/org/gcube/resourcemanagement/model/reference/properties/ValueSchema.java
AccessPolicy
AccessPolicy extends
Property
Name
|
Type
|
Attributes
|
Description
|
policy
|
Property (i.e. ValueSchema)
|
|
|
note
|
String
|
|
|
Facets
Early ideas and thinking on facets were documented at 2nd Generation Resource Model : Facets
Access Point Facet
Access Point Facet extends
Facet
Goal: This facet 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.
|
Properties
|
Name
|
Type
|
Attributes
|
Description
|
entryName
|
String
|
|
A distinguishing string to be used by clients to identify the access point of interest.
|
endpoint
|
URI
|
Mandatory=true
ReadOnly=true
NotNull=true
|
The URI which characterizes the specific endpoint instance.
|
protocol
|
String
|
|
The high-level protocol used by the access point. The String could contains the version if needed. E.g. WMS not http which is already contained in URI.
|
description
|
String
|
|
A human oriented text accompanying the access point.
|
authorization
|
Property
|
|
Contains authorization information. E.g: a token, username and password.
|
Known Usage
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Dataset
|
consistsOf
|
0..n
|
Access Point Facet
|
Each access point captures a possible web-based method for accessing the dataset. Any embargo-related information can be captured by the access policy property of the consistsOf.
|
Concrete Dataset
|
consistsOf
|
1..n
|
Access Point Facet
|
Each access point captures a possible web-based method for accessing the dataset. Any embargo-related information can be captured by the access policy property of the consistsOf.
|
EService
|
consistsOf
|
1..n
|
Access Point Facet
|
Each access point captures a possible web-based method for accessing the service.
|
Software
|
consistsOf
|
1..n
|
Access Point Facet
|
Each access point captures a possible web-based method for accessing a software manifestation. Examples are links to maven artifact on nexus, javadoc, wiki, svn, etc.
|
Capability Facet
Capability Facet extends
Facet
Goal: This facet captures a defined facility for performing a specified task supported by a given Service or Software;
|
Properties
|
Name
|
Type
|
Attributes
|
Description
|
name
|
String
|
Mandatory=true
ReadOnly=true
NotNull=true
|
The distinguishing name of the capability.
|
description
|
String
|
|
A human oriented description of the capability.
|
qualifier
|
String
|
|
A string used to specialize the capability.
|
Known Usage
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Service
|
hasCapability
|
0..n
|
Capability Facet
|
To capture one of the facilities supported by the Service.
|
Software
|
hasCapability
|
0..n
|
Capability Facet
|
To capture one of the facilities supported by the Software.
|
Contact Facet
Contact Facet extends
Facet
Goal: This facet 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. As you can see in the known usages part, there are diverse points of contact that can be associated to a given resource and the role of the association is captured by using a specific relation.
|
Properties
|
Name
|
Type
|
Attributes
|
Description
|
title
|
String
|
Mandatory=false
|
A name describing the profession or marital status of the point of contact. E.g. Dr, Mrs, Mr.
|
name
|
String
|
Mandatory=true
NotNull=true
|
First Name
|
middleName
|
String
|
Mandatory=false
|
Middle Name
|
surname
|
String
|
Mandatory=true
NotNull=true
|
Surname
|
eMail
|
String
|
Mandatory=true
NotNull=true
Regex=^[a-z0-9._%+-]{1,128}@[a-z0-9.-]{1,128}
|
A restricted range of RFC‑822 compliant email address. Please note that just domain based email address are accepted (not IP based). Please also note that new TLD are also accepted (e.g luca@google without .com which is a valid email address). You can test here the provided regular expression with your input email address https://regex101.com/ before open a ticket.
|
Known Usage
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Actor
|
isIdentifiedBy
|
1..n
|
Contact Facet
|
An Actor must have at least a primary point of contact which will be used for identification purposes.
|
Actor
|
hasContact
|
0..n
|
Contact Facet
|
An Actor can have an arbitrary number of points of contact which provide secondary contact information.
|
Legal Body
|
isIdentifiedBy
|
1..n
|
Contact Facet
|
A Legal Body must have at least a point of contact which permit to identify the Legal Body per se.
|
Person
|
isIdentifiedBy
|
1..n
|
Contact Facet
|
A Person must have at least a point of contact which permit to identify the Person per se.
|
Dataset
|
hasContact
|
1..n
|
Contact Facet
|
A Dataset must have at least a point of contact to be used to acquire information on it.
|
Dataset
|
hasContributor
|
0..n
|
Contact Facet
|
One of the dataset contributors.
|
Dataset
|
hasCreator
|
0..n
|
Contact Facet
|
One of the dataset creators.
|
Dataset
|
hasCurator
|
0..n
|
Contact Facet
|
One of the dataset curators.
|
Dataset
|
hasMaintainer
|
0..n
|
Contact Facet
|
One of the dataset maintainers.
|
Dataset
|
hasOwner
|
0..n
|
Contact Facet
|
One of the dataset owners.
|
Concrete Dataset
|
hasMaintainer
|
1..n
|
Contact Facet
|
A Concrete Dataset must have at least a Maintainer.
|
Schema
|
hasContact
|
1..n
|
Contact Facet
|
A Site must have at least a point of contact to be used to acquire information on it.
|
Site
|
hasContact
|
1..n
|
Contact Facet
|
A Site must have at least a point of contact to be used to acquire information on it.
|
Site
|
hasMaintainer
|
1..n
|
Contact Facet
|
A Site must have at least a Maintainer.
|
Site
|
hasManager
|
1..n
|
Contact Facet
|
A Site must have at least a Manager.
|
Contact Reference Facet
Contact Reference Facet extends
Facet
Goal: This facet captures information on the primary and authoritative contact for the resource it is associated with.
|
Properties
|
Name
|
Type
|
Attributes
|
Description.
|
website
|
URL
|
|
The main website.
|
address
|
String
|
|
A physical address.
|
phoneNumber
|
String
|
|
A phone number.
|
Known Usage
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Actor
|
consistsOf
|
0..n
|
Contact Reference Facet
|
The primary contact information for the Actor it is attached to.
|
Legal Body
|
consistsOf
|
0..n
|
Contact Reference Facet
|
The primary contact information for the Legal Body it is attached to.
|
Person
|
consistsOf
|
0..n
|
Contact Reference Facet
|
The primary contact information for the Person it is attached to.
|
Coverage Facet
Coverage Facet extends
Facet
Goal: This facet 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".
|
Properties
|
Name
|
Type
|
Attributes
|
Description
|
value
|
String
|
Mandatory=true
NotNull=true
|
The amount indicating the "area" covered by the dataset according to the reference schema.
|
schema
|
URI
|
Mandatory=true NotNull=true
|
The reference schema to be used to interpret the value.
|
Known Usage
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Dataset
|
hasCoverage
|
1..n
|
Coverage Facet
|
...
|
Dataset
|
hasTemporalCoverage
|
0..n
|
Coverage Facet
|
Any temporal coverage characterising the dataset content.
|
Dataset
|
hasSpatialCoverage
|
0..n
|
Coverage Facet
|
Any spatial coverage characterising the dataset content.
|
CPU Facet
CPU Facet extends
Facet
Goal: This facet captures information on the Central Processing Unit of the resource it is associated.
|
Properties
|
Name
|
Type
|
Attributes
|
Description
|
model
|
String
|
Mandatory=true
NotNull=true
|
CPU Model.
|
vendor
|
String
|
Mandatory=true
NotNull=true
|
CPU Vendor.
|
clockSpeed
|
String
|
Mandatory=true
NotNull=true
|
Clock Speed with the unit.
|
Known Usage
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Hosting Node
|
consistsOf
|
1..n
|
CPU Facet
|
...
|
Descriptive Metadata Facet
Descriptive Metadata Facet extends
Facet
Goal: This facet captures information on descriptive metadata to be associated with the resource.
|
Properties
|
Name
|
Type
|
Attributes
|
Description
|
value
|
String
|
Mandatory=true
NotNull=true
|
A metadata record representing the descriptive metadata and encoded according to the reference schema;
|
schema
|
URI
|
Mandatory=true
NotNull=true
|
The reference schema to be used to interpret the value attribute;
|
Known Usage
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Dataset
|
consistsOf
|
0..n
|
Descriptive Metadata Facet
|
...
|
Schema
|
consistsOf
|
0..n
|
Descriptive Metadata Facet
|
...
|
Event Facet
Event Facet extends
Facet
Goal: This facet captures information on a certain event / happening characterising the life cycle of the resource.
|
Properties
|
Name
|
Type
|
Attributes
|
Description
|
date
|
Calendar
|
Mandatory=true
NotNull=true
|
The time the event took place / occurred.
|
value
|
String
|
Mandatory=true
NotNull=true
|
The typology of event according to the reference schema.
|
schema
|
URI
|
|
The reference schema to be used to interpret the value describing the event.
|
Known Usage
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Dataset
|
consistsOf
|
0..n
|
Event Facet
|
...
|
EService
|
consistsOf
|
1..n
|
Event Facet
|
E.g. ActivationTime, DeploymentTime.
|
Hosting Node
|
consistsOf
|
1..n
|
Event Facet
|
...
|
Identifier Facet
License Facet
License Facet extends
Facet
Goal: This facet captures information on any license associated with the resource to capture the policies governing its exploitation and use.
|
Properties
|
Name
|
Type
|
Attributes
|
Description
|
name
|
String
|
Mandatory=true
NotNull=true
|
The common name of the license. E.g. EUPL 1.1, GPLv2, BSD.
|
textURL
|
URL
|
Mandatory=true
NotNull=true
|
The URL to the actual text of the license.
|
Known Usage
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Dataset
|
consistsOf
|
0..n
|
License Facet
|
The duration of license - if any - can be captured by the expiry date defined in the consistsOf relation.
|
EService
|
consistsOf
|
0..n
|
License Facet
|
...
|
Software
|
consistsOf
|
1..n
|
License Facet
|
...
|
Location Facet
The goal of this facet is to collect information about Location
Location Facet extends
Facet
Goal: This facet captures information on a physical area characterising the resource it is associated with. This should not be confused with Coverage Facet.
|
Properties
|
Name
|
Type
|
Attributes
|
Description
|
country
|
String
|
|
The English name of the country. See [1].
|
location
|
String
|
|
The City name.
|
latitude
|
String
|
|
Latitude.
|
longitude
|
String
|
|
Longitude.
|
Known Usage
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Site
|
consistsOf
|
1..n
|
Location Facet
|
The base where the site is operated.
|
Memory Facet
Memory Facet extends
Facet
Goal: This facet captures information on computer memory equipping the resource and its usage.
|
Properties
|
Name
|
Type
|
Attributes
|
Description
|
size
|
Long
|
Mandatory=true NotNull=true
|
Total amount of memory.
|
used
|
Long
|
Mandatory=true NotNull=true
|
Used amount of memory.
|
unit
|
Enum
|
Mandatory=true NotNull=true
|
The unit of measure used to report size and used attributes. Allowed values are Byte, kB (kilobyte 10^3), MB (megabyte 10^6), GB (gigabyte 10^9), TB (terabyte 10^12), PB (petabyte 10^15), EB (exabyte 10^18), ZB (zettabyte 10^21), YB (yottabyte 10^24).
|
Known Usage
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Hosting Node
|
hasPersistentMemory
|
1..n
|
Memory Facet
|
The Disk Space allocated to the hosting node.
|
Hosting Node
|
hasVolatileMemory
|
1..n
|
Memory Facet
|
The RAM allocated to the hosting node.
|
Networking Facet
Networking Facet extends
Facet
Goal: This facet captures information on any (computer) network interface/access point associated with the resource.
|
Properties
|
Name
|
Type
|
Attributes
|
Description
|
hostName
|
String
|
|
Host Name.
|
domainName
|
String
|
|
Domain Name.
|
IPAddress
|
String
|
Mandatory=true
NotNull=true
Regex='/^(?>(?>([a-f0-9]{1,4})(?>:(?1)){7}|(?!(?:.*[a-f0-9](?>:|$)){8,})((?1)(?>:(?1)){0,6})?::(?2)?)|(?>(?>(?1)(?>:(?1)){5}:|(?!(?:.*[a-f0-9]:){6,})(?3)?::(?>((?1)(?>:(?1)){0,4}):)?)?(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(?>\.(?4)){3}))$/iD'
|
IP Address. Validation regular expression ca be foun at http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses#answer-1934546 (Michael Rushton solution).
|
mask
|
String
|
|
Network Mask.
|
broadcastAddress
|
String
|
|
Broadcast Address.
|
Known Usage
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Hosting Node
|
isIdentifiedBy
|
1..n
|
Networking Facet
|
...
|
Site
|
consistsOf
|
1..n
|
Networking Facet
|
...
|
Provenance Facet
Provenance Facet extends
Facet
Goal: This facet captures information on provenance/lineage of the entire resource.
|
Properties
|
Name
|
Type
|
Attributes
|
Description
|
relationship
|
Enum
|
|
I.e. wasDerivedFrom, wasGeneratedBy
|
reference
|
String
|
|
resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)
|
document
|
String
|
|
Provenance Document E.g. the xml format
|
documentSchema
|
URI
|
|
Document Schema E.g. a reference to the format
|
Known Usage
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Dataset
|
consistsOf
|
0..n
|
Provenance Facet
|
Schema Facet
Abstract
Schema Facet extends
Facet
Goal: This facet captures information on any schema associated with a resource.
|
Properties
|
Name
|
Type
|
Attributes
|
Description
|
name
|
String
|
Mandatory=true NotNull=true
|
Schema Name
|
description
|
String
|
Mandatory=true NotNull=true
|
Schema Description
|
schemaURL
|
URL
|
|
Schema definition URL (recommended)
|
Known Usage
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Schema
|
isIdentifiedBy
|
1..n
|
Schema Facet
|
JSON Schema Facet
Even is still under standardization (seems stalled) IETF is promoting a de-facto standard for JSON http://json-schema.org/.
https://tools.ietf.org/html/draft-zyp-json-schema-04
https://tools.ietf.org/html/draft-fge-json-schema-validation-00
https://tools.ietf.org/html/draft-luff-json-hyper-schema-00
JSON Schema Facet extends
Schema Facet
Goal: This facet captures information on a JSON schema associated with a resource.
|
Properties
|
Name
|
Type
|
Attributes
|
Description
|
content
|
Property
|
Mandatory=true NotNull=true
|
JSON schema definition.
|
Known Usage
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Schema
|
isIdentifiedBy
|
0..n
|
JSON Schema Facet
|
...
|
XSD Schema Facet
XSD Schema Facet extends
Schema Facet
Goal: This facet captures information on any XML Schema Definition (XSD) associated with the resource.
|
Properties
|
Name
|
Type
|
Attributes
|
Description
|
content
|
String
|
Mandatory=true NotNull=true
|
XSD Schema Definition
|
Known Usage
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Schema
|
isIdentifiedBy
|
0..n
|
XSD Schema Facet
|
Simple Facet
Please do not use this Facet. Create your own type.
Simple Property Facet
Software Facet
Software Facet extends
Facet
Goal: This facet captures information on any software associated with the resource.
|
Properties
|
Name
|
Type
|
Attributes
|
Description
|
name
|
String
|
Mandatory=true NotNull=true
|
The name of the software artefact being described. E.g. artifactId in maven, Service Name in gCube software, the software name for retail software Microsoft Office 2013-SP2.
|
group
|
String
|
Mandatory=true NotNull=true
|
The name of "group" the software artefact belongs to. E.g. groupId in Maven, ServiceClass in gCube software, company name for retail software Microsoft Office 2013-SP2.
|
version
|
String
|
Mandatory=true
NotNull=true
|
The particular release of the software artefact. E.g. maven version, Service Version in gCube software, artifactId in maven, the software version for retail software Microsoft Office 2013-SP2.
|
description
|
String
|
|
A human oriented description of the software artefact being described.
|
qualifier
|
String
|
|
E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.
|
optional
|
Boolean
|
|
E.g. used to indicate an optional dependency both in maven as far as in gCube.
|
Known Usage
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
EService
|
isIdentifiedBy
|
1..n
|
Software Facet
|
The software enabling the EService capabilities
|
EService
|
consistsOf
|
0..n
|
Software Facet
|
Software available in the EService environment that characterizes the specific EService instance.
|
Running Plugin
|
isIdentifiedBy
|
1..1
|
Software Facet
|
The software enabling the Running Plugin.
|
Hosting Node
|
consistsOf
|
0..n
|
Software Facet
|
E.g. to report the hosted software that are not registered in the Resource Registry as Software Resource, e.g. Operating System.
|
Virtual Service
|
isIdentifiedBy
|
1..n
|
Software Facet
|
Software
|
isIdentifiedBy
|
1..n
|
Software Facet
|
Software coordinates which identify the Software per se.
|
Software
|
consistsOf
|
1..n
|
Software Facet
|
Any other software apart from the one connected with isIdentifiedBy relation (gCube coordinates).
|
Plugin
|
isIdentifiedBy
|
1..n
|
Software Facet
|
Software coordinates which identify the Plugin per se.
|
State Facet
The goal of this facet is to ...
Abstract
State Facet extends
Facet
Goal: This facet captures information on state to be associated with the resource. State is captured by any controlled vocabulary which is an integral part of the facet.
|
Properties
|
Name
|
Type
|
Attributes
|
Description
|
value
|
String
|
Mandatory=true NotNull=true
|
The value of the state expressed according to the schema below;
|
schema
|
URI
|
Mandatory=true NotNull=true
|
The schema that have been used to assign the state value and that must be used to properly interpret it;
|
Known Usage
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Software
|
consistsOf
|
1..n
|
State Facet
|
E.g. Deprecated, Active, Obsolete
|
Container State Facet
Container State Facet extends
Facet
Goal: This facet captures information on the operational status of the container, i.e. the
|
Properties
|
Name
|
Type
|
Attributes
|
Description
|
value
|
String
|
Mandatory=true
NotNull=true
Regex=(started|ready|certified|down|failed)
|
The value of the state
|
Known Usage
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Hosting Node
|
consistsOf
|
1..1
|
Container State Facet
|
An Hosting node can be started, ready, certified, down, failed.
|
Service State Facet
Service State Facet extends
Facet
Goal: This facet captures information on the operational state of the service it is associated with.
|
Properties
|
Name
|
Type
|
Attributes
|
Description
|
value
|
String
|
Mandatory=true
NotNull=true
Regex=(STARTED|ready|down|failed)
|
The value of the state
|
Known Usage
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
EService
|
consistsOf
|
1..1
|
Service State Facet
|
An EService can be STARTED, ready, down, failed.
|
Subject Facet
Subject Facet extends
Facet
Goal: This facet captures information on subjects associated with the resource for description, classification and discovery purposes;
|
Properties
|
Name
|
Type
|
Attributes
|
Description
|
value
|
String
|
Mandatory=true
NotNull=true
|
The value of the subject. Must be compliant with schema.
|
schema
|
URI
|
Mandatory=true
NotNull=true
|
The URI of the schema subject value comes from. It is only an informative field. It is not used for validation from IS part.
|
Known Usage
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Dataset
|
consistsOf
|
0..n
|
Subject Facet
|
|
Schema
|
consistsOf
|
0..n
|
Subject Facet
|
|
Relations
isRelatedTo
activates
belongsTo
callsFor
discovers
uses
demands
dependsOn
isPluginOf
enables
hosts
involves
isCompliantWith
isConfiguredBy
isCorrelatedTo
isPartOf
isCustomizedBy
isDerivationOf
isOwnedBy
manages
requires
consistsOf
isIdentifiedBy
hasCapability
hasContact
hasContributor
hasCreator
hasCurator
hasDeveloper
hasMaintainer
hasManager
hasOwner
hasCoverage
hasSpatialCoverage
hasTemporalCoverage
hasMemory
hasPersistentMemory
hasVolatileMemory
Resources
Every Resource has:
A class can be identified as Abstract
. This means that cannot be instantiated. It is expected that one of its specializations are instantiated.
It is not required that an Abstract class establishes an isIdentifiedBy relation with a Facet.
Actor
Legal Body
Person
Configuration Template
Configuration
Dataset
Concrete Dataset
Schema
Service
EService
Running Plugin
Running Plugin extends
EService
Scope: Any instance of a Plugin deployed and running by an EService.
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Facets
|
Running Plugin
|
isIdentifiedBy
|
1..1
|
Software Facet
|
The software enabling the Running Plugin.
|
Relations
|
Hosting Node
Hosting Node extends
Service
Scope: The HostingNode represent a container capable of managing the lifecycle of an electronic service, i.e., being capable to host and operate an EService.
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Facets
|
Hosting Node
|
isIdentifiedBy
|
1..n
|
Networking Facet
|
The Network ID characterising the Hosting Node.
|
Hosting Node
|
consistsOf
|
1..n
|
CPU Facet
|
The CPU equipping the Hosting Node.
|
Hosting Node
|
hasPersistentMemory
|
1..n
|
Memory Facet
|
The Disk Space Capacity of the Hosting Node.
|
Hosting Node
|
hasVolatileMemory
|
1..n
|
Memory Facet
|
The RAM Capacity of the Hosting Node.
|
Hosting Node
|
consistsOf
|
1..n
|
Event Facet
|
Every event characterizing the life cycle of the Hosting Node, e.g. the activation time.
|
Hosting Node
|
consistsOf
|
1..1
|
Container State Facet
|
The current state of the Hosting Node, e.g. started, ready, certified, down, failed.
|
Hosting Node
|
consistsOf
|
0..n
|
Simple Property Facet
|
Any <key, value> pair property worth associating with the Hosting Node, e.g. Environment Variables.
|
Hosting Node
|
consistsOf
|
0..n
|
Software Facet
|
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.
|
Relations
|
Virtual Machine
Virtual Machine Profile extends
Service Profile
Scope: A Virtual Machine is an emulation of a physical computer which appears to the running operative system as real hardware.
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Facets
|
Virtual Machine
|
isIdentifiedBy
|
1..n
|
Networking Facet
|
The Network ID characterising the Virtual Machine.
|
Relations
|
Virtual Service
Virtual Service Profile extends
Service Profile
Scope: 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 are to be managed like an existing unit.
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Facets
|
Virtual Service
|
isIdentifiedBy
|
1..n
|
Software Facet
|
???
|
Relations
|
Virtual Service
|
demands
|
0..n
|
Software
|
...
|
Site
Software
Plugin
Plugin extends
Software
Scope: A piece of Software extending the capabilities of another Software (main) and requiring the main Software to be executed;
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Facets
|
Plugin
|
isIdentifiedBy
|
1..n
|
Software Facet
|
Software coordinates which identify the Plugin per se.
|
Relations
|
Plugin
|
isPluginOf
|
1..n
|
Software
|
A reference to the Software this Plugin is conceived to extend the capabilities.
|
Extension Example
The gCube Resource Model supports extensions at runtime meaning that new facets, relations, and resources can be defined and registered at any time by authorized clients. Those extensions must necessarily specialize an existing gCube Entity.
An example of those specializations is the following:
Functionality Related Facet
The goal of this facet is to capture what are the facilities supported by the Service Entity and it aims to model the service interface.
Functionality Related Facet extends
Facet
Name
|
Type
|
Attributes
|
Description
|
name
|
String
|
|
...
|
description
|
String
|
|
...
|
input
|
String
|
|
...
|
output
|
String
|
|
...
|
Known Usage
|
Source
|
Relation
|
Multiplicity
|
Target
|
Description
|
Service
|
consistsOf
|
0..n
|
Functionality Related Facet
|
...
|
- ↑ https://www.merriam-webster.com/dictionary/facet
- ↑ https://www.thefreedictionary.com/facet