Facet Based Resource Model

From Gcube Wiki
Revision as of 12:46, 5 October 2016 by Leonardo.candela (Talk | contribs) (Software)

Jump to: navigation, search

Contents

Basic Concepts

  • Two typologies of entities are envisaged:
    • Resources, i.e. entities representing a description of "thing" to be managed;
      • Every Resource is characterised 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 specialization 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.
  • 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.

Is-model.png

Property

Any Property can be enriched with the following attributes:

  • Name : Property Name
  • Type : The Type of the Property (e.g. String, Integer, ...). See Property 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
  • Regexpr (Reg)): A Regular Expression to validate the property value.default=null. A goog online tool for regex is avalable at https://regex101.com/

Property Type

Basic Property Type
Type Description Java type
Boolean Handles only the values True or False java.lang.Boolean or boolean
Integer 32-bit signed Integers java.lang.Integer or int or java.math.BigInteger
Short Small 16-bit signed integers java.lang.Short or short
Long Big 64-bit signed integers java.lang.Long or long
Float Decimal numbers java.lang.Float or float
Double Decimal numbers with high precision java.lang.Double or double
Date Any date with the precision up to milliseconds. java.util.Date
String Any string as alphanumeric sequence of chars java.lang.String
Embedded This is an Object contained inside the owner Entity and has no Header. It is reachable only by navigating the owner Entity. ? extends org.gcube.informationsystem.model.embedded.Embedded
Embedded list List of Objects contained inside the owner Entity and have no Header. They are reachable only by navigating the owner Entity. List<? extends org.gcube.informationsystem.model.embedded.Embedded>
Embedded set Set (no duplicates) of Objects contained inside the owner Entity and have no Header. They are reachable only by navigating the owner Entity. Set<? extends org.gcube.informationsystem.model.embedded.Embedded>
Embedded map Map of Objects contained inside the owner Entity and have no Header. They are reachable only by navigating the owner Entity. Map<String, ? extends org.gcube.informationsystem.model.embedded.Embedded>
Byte Single byte. usesful to store small 8-bit signed integers java.lang.Byte or byte
Binary Can contain any value as byte array java.lang.Byte[] or byte[]
Derived Property Type

The following are obtained using a String as real type and adding a validation regex.

Type Description Java type
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.

java.lang.Enum or enum
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}$ java.util.UUID
URL String representation of the URL. No check actually. java.net.URL
URI String representation of the URI. No check actually. java.net.URI

Header

Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:

Name Type Description Attributes
uuid UUID This uuid can be used to univocally identify the Entity or the Relation Mandatory=true
NotNull=true
ReadOnly=true
creator String Filled at creation time. The creator is retrieved using the authorization token Mandatory=true
NotNull=true
ReadOnly=true
creationTime Date Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC Mandatory=true
NotNull=true
ReadOnly=true
lastUpdateTime Date Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC Mandatory=true
NotNull=true

Resources and (isRelatedTo) Relations

Gcube-reources-and-isrelatedto-relations.png

Facets

Early ideas and thinking on facets were documented at 2nd Generation Resource Model : Facets

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.

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 Description Attributes
entryName String A distinguishing string to be used by clients to identify the access point of interest;
endpoint* URI The URI which characterizes the specific endpoint instance; Mandatory=true
ReadOnly=true
NotNull=true
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 String Contains authorization information. E.g: a token, username:password. By relying on schema it should be sufficient to capture also whether the content is encrypted or not
authorizationSchema URI URI of the Schema to be used for a proper interpretation of the authorization value.
properties String This can be an arbitrarily complex element whose "structure" is defined by the associated schema
propertiesSchema URI URI of the Schema to be used for a proper interpretation of the properties value.
Known Usage
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.
E-Service 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.

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 Description Attributes
title String A name describing the profession or marital status of the point of contact. E.g. Dr, Mrs, Mr. Mandatory=false
name String First Name Mandatory=true
NotNull=true
middleName String Middle Name Mandatory=false
surname String Surname Mandatory=true
NotNull=true
eMail String 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. Mandatory=true
NotNull=true
Regex=^[a-z0-9._%+-]{1,128}@[a-z0-9.-]{1,128}
Known Usage
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:
Schema hasContact 1..n Contact Facet: ...
Site hasContact 1..n Contact Facet: ...
Site hasMaintainer 1..nContact Facet: ...
Site hasManager 1..n Contact Facet: ...

Contact Reference Facet

Contact Reference Facet extends Facet
This facet captures information on the primary and authoritative contact for the resource it is associated with.
Properties
Name Type Description Attributes
website URL The main website
address String A physical address
phone String A phone number
Known Usage
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
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 Description Attributes
value String The amount indicating the "area" covered by the dataset according to the reference schema; Mandatory=true
NotNull=true
schema URI The reference schema to be used to interpret the value; Mandatory=true
NotNull=true
Known Usage
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
This facet captures information on the Central Processing Unit of the resource it is associated.
Properties
Name Type Description Attributes
model String CPU Model Mandatory=true
NotNull=true
vendor String CPU Vendor Mandatory=true
NotNull=true
clockSpeed String Clock Speed with the unit Mandatory=true
NotNull=true
Known Usage
Hosting Node consistsOf 1..n CPU Facet:

Descriptive Metadata Facet

Descriptive Metadata Facet extends Facet
This facet captures information on descriptive metadata to be associated with teh resource
Properties
Name Type Description Attributes
value String A metadata record representing the descriptive metadata and encoded according to the reference schema; Mandatory=true
NotNull=true
schema URI The reference schema to be used to interpret the value attribute; Mandatory=true
NotNull=true
Known Usage
Dataset consistsOf 0..n Descriptive Metadata Facet:
Schema consistsOf 0..n Descriptive Metadata Facet:

Event Facet

Event Facet extends Facet
This facet captures information on a certain event / happening characterising the life cycle of the resource.
Properties
Name Type Description Attributes
date Calendar The time the event took place / occurred; Mandatory=true
NotNull=true
value String The typology of event according to the reference schema; Mandatory=true
NotNull=true
schema URI The reference schema to be used to interpret the value describing the event;
Known Usage
Dataset consistsOf 0..n Event Facet:
E-Service consistsOf 1..n Event Facet: E.g. ActivationTime, DeploymentTime
Hosting Node consistsOf 1..n Event Facet:

Identifier Facet

Identifier Facet extends Facet
Goal: This facet captures information on Identifiers (other than the ones automatically generated by the system) that can be attached to a resource.
Properties
Name Type Description Attributes
value String The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014 Mandatory=true
NotNull=true
type Enumeration The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID; Mandatory=true
NotNull=true
isPersistent boolean To indicate whether the Identifier is persistent or not. Mandatory=true
NotNull=true
Known Usage
Configuration Template isIdentifiedBy 1..n Identifier Facet
Configuration isIdentifiedBy 1..n Identifier Facet
Dataset isIdentifiedBy 1..n Identifier Facet
Concrete Dataset isIdentifiedBy 1..n Identifier Facet
Site isIdentifiedBy 1..n 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 Description Attributes
name String The common name of the license. E.g. EUPL 1.1, GPLv2, BSD; Mandatory=true
NotNull=true
textURL URL The URL to the actual text of the license. Mandatory=true
NotNull=true
Known Usage
Dataset consistsOf 0..n License Facet: The duration of license - if any - can be captured by the expiry date defined in the consistsOf relation.
E-Service 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 Description Attributes
country String The English name of the country. See http://data.okfn.org/data/core/country-list
location String The City name.
latitude String Latitude
longitude String Longitude
Known Usage
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 Description Attributes
size Long Total amount of memory. Mandatory=true NotNull=true
used Long used amount of memory. Mandatory=true NotNull=true
unit Enum 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) Mandatory=true NotNull=true
Known Usage
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
This facet captures information on any (computer) network interface/access point associated with the resource.
Properties
Name Type Description Attributes
hostName String Host Name
domainName String Domain Name
IPAddress String 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) 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'

mask String Network Mask
broadcastAddress String Broadcast Address
Known Usage
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 Description Attributes
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
Dataset consistsOf 0..n Provenance Facet

Schema Facet

Abstract Schema Facet extends Facet
This facet captures information on any schema associated with a reosurce.
Properties
Name Type Description Attributes
name* String Schema Name Mandatory=true
NotNull=true
description String Schema Description Mandatory=true
NotNull=true
schemaURL URL Schema definition URL (recommended)
Known Usage
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
This facet captures information on a JSON schema associated with a resource.
Properties
Name Type Description Attributes
content Embedded JSON schema definition Mandatory=true
NotNull=true
Known Usage
Schema isIdentifiedBy 0..n JSON Schema Facet
XSD Schema Facet
XSD Schema Facet extends Schema Facet
This facet captures information on any XML Schema Definition (XSD) associated with the resource.
Properties
Name Type Description Attributes
content String XSD Schema Definition Mandatory=true
NotNull=true
Known Usage
Schema isIdentifiedBy 0..n XSD Schema Facet

Simple Property Facet

Simple Property Facet extends Facet
Goal: This facet captures information on any property by a simple name-value pair.
Properties
Name Type Description Attributes
name String Name Mandatory=true
NotNull=true
value String Value Mandatory=true
NotNull=true
Known Usage
Configuration Template consistsOf 1..n Simple Property Facet
Hosting Node consistsOf 0..n Simple Property Facet: E.g. to model |Environment Variables

Software Facet

Software Facet extends Facet
Goal: This facet captures information on any software associated with the resource.
Properties
Name Type Description Attributes
name String 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. Mandatory=true
NotNull=true
group String 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. Mandatory=true
NotNull=true
version String 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. Mandatory=true
NotNull=true
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
E-Service isIdentifiedBy 1..n Software Facet: The software enabling the E-Service capabilities
E-Service consistsOf 0..n Software Facet: Software available in the E-Service environment that characterizes the specific E-Service 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
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 Description Attributes
value String The value of the state expressed according to the schema below; Mandatory=true
NotNull=true
schema URI The schema that have been used to assign the state value and that must be used to properly interpret it; Mandatory=true
NotNull=true
Known Usage
Software consistsOf 1..n State Facet: E.g. Deprecated, Active, Obsolete
Container State Facet
Container State Facet extends Facet
This facet captures information on the operational status of the container, i.e. the
Properties
Name Type Description Attributes
value String The value of the state Mandatory=true
NotNull=true
Regex=(started|ready|certified|down|failed)
Known Usage
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
This facet captures information on the operational state of the service it is associated with.
Properties
Name Type Description Attributes
value String The value of the state Mandatory=true
NotNull=true
Regex=(STARTED|ready|down|failed)
Known Usage
E-Service consistsOf (1..1) Service State Facet: An E-Service can be STARTED, ready, down, failed.

Subject Facet

Subject Facet extends Facet
This facet captures information on subjects associated with the resource for description, classification and discovery purposes;
Properties
Name Type Description Attributes
value String The value of the subject. Must be compliant with schema. Mandatory=true
NotNull=true
schema URI The URI of the schema subject value comes from. It is only an informative field. It is not used for validation from IS part. Mandatory=true
NotNull=true
Known Usage
Dataset consistsOf (0..n) Subject Facet
Schema consistsOf (0..n) Subject Facet

Relations

Every relation has:

Relation Property

Name Type Description
referentialIntegrity Enum I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.
accessPolicy Embedded (i.e. AccessPolicy) A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply
expiryTime Long The expiry date can be used to model the time until the relationship is valid, Expiry time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC

isRelatedTo

isRelatedTo
Source Relation Multiplicity Target Description
Resource isRelatedTo 0..n Resource

belongsTo

belongsTo extends isRelatedTo
Source Relation Multiplicity Target Description
Person belongsTo 0..n Legal Body ...

callsFor

callsFor extends isRelatedTo
Source Relation Multiplicity Target Description
Service callsFor 0..n Service

demands

demands extends isRelatedTo
Source Relation Multiplicity Target Description
Virtual Service demands 0..n Software

dependsOn

dependsOn extends isRelatedTo
Source Relation Multiplicity Target Description
Software dependsOn 0..n Software

discovers

discovers extends isRelatedTo
Source Relation Multiplicity Target Description
E-Service discovers 0..n E-Service

hosts

hosts extends isRelatedTo
Source Relation Multiplicity Target Description
Hosting Node hosts 0..n E-Service

involves

involves extends isRelatedTo
Source Relation Multiplicity Target Description
Dataset involves 0..n Actor

isActivatedBy

isActivatedBy extends isRelatedTo
Source Relation Multiplicity Target Description
Running Plugin isActivatedBy 1..1 E-Service

isCompliantWith

isCompliantWith extends isRelatedTo
Source Relation Multiplicity Target Description
Dataset isCompliantWith 0..n Schema

isConfiguredBy

isConfiguredBy extends isRelatedTo
Source Relation Multiplicity Target Description
Software isConfiguredBy 0..n Configuration Template

isCorrelatedTo

isCorrelatedTo extends isRelatedTo
Source Relation Multiplicity Target Description
Dataset isCorrelatedTo 0..n Dataset
isPartOf
isPartOf extends isCorrelatedTo
Source Relation Multiplicity Target Description
Concrete Dataset isPartOf 0..n Dataset

isCustomizedBy

isCustomizedBy extends isRelatedTo
Source Relation Multiplicity Target Description
Service isCustomizedBy 0..n Configuration

isDerivationOf

isDerivationOf extends isRelatedTo
Source Relation Multiplicity Target Description
Configuration isDerivationOf 1..1 Configuration Template

isManagedBy

isManagedBy extends isRelatedTo
Source Relation Multiplicity Target Description
Hosting Node isManagedBy 0..n Site

isOwnedBy

isOwnedBy extends isRelatedTo
Source Relation Multiplicity Target Description
Site isOwnedBy 0..n Actor

isPluginOf

isPluginOf extends isRelatedTo
Source Relation Multiplicity Target Description
Plugin isPluginOf 1..n Software

isPoweredBy

isPoweredBy extends isRelatedTo
Source Relation Multiplicity Target Description
Hosting Node isPoweredBy 0..n Software

manages

manages extends isRelatedTo
Source Relation Multiplicity Target Description
Service manages 0..n Dataset

requires

requires extends isRelatedTo
Source Relation Multiplicity Target Description
Software requires 0..n Service

runs

runs extends isRelatedTo
Source Relation Multiplicity Target Description
E-Service runs 0..n Software

runsPlugin

runsPlugin extends runs
Source Relation Multiplicity Target Description
Running Plugin runsPlugin 1..1 Plugin

uses

uses extends isRelatedTo
Source Relation Multiplicity Target Description
E-Service uses 0..n E-Service

consistsOf

isIdentifiedBy
Source Relation Multiplicity Target Description
Resource consistsOf 1..n Facet

isIdentifiedBy

isIdentifiedBy extends consistsOf
Source Relation Multiplicity Target Description
Definition
Resource isIdentifiedBy 1..n Facet
Known Usage
Actor isIdentifiedBy 1..n Contact Facet
Legal Body isIdentifiedBy 1..n Contact Facet
Person isIdentifiedBy 1..n Contact Facet
Configuration Template isIdentifiedBy 1..n Identifier Facet
Configuration isIdentifiedBy 1..n Identifier Facet
Dataset isIdentifiedBy 1..n Identifier Facet
Concrete Dataset isIdentifiedBy 1..n Identifier Facet
Service isIdentifiedBy 1..n Facet
Virtual Service isIdentifiedBy 1..n Software Facet ...
E-Service isIdentifiedBy 1..1 Software Facet ...
Schema isIdentifiedBy 1..n Identifier Facet ...
Site isIdentifiedBy 1..n Identifier Facet ...
Software isIdentifiedBy 1..n Software Facet Software coordinates which identify the Software per se.
Plugin isIdentifiedBy 1..n Software Facet Software coordinates which identify the Plugin per se.

hasContact

Abstract hasContact extends consistsOf
Source Relation Multiplicity Target Description
Definition
Resource hasContact 0..n Contact Facet
Known Usage
Dataset hasContact 1..n Contact Facet ...


hasContributor
hasContributor extends hasContact
Source Relation Multiplicity Target Description
Definition
Resource hasContributor 0..n Contact Facet
Known Usage
Dataset hasContributor 0..n Contact Facet Is he the contributor
hasCreator
hasCreator extends hasContact
Source Relation Multiplicity Target Description
Definition
Resource hasCreator 0..n Contact Facet
Known Usage
Dataset hasCreator 0..n Contact Facet Is he the creator
hasCurator
hasCurator extends hasContact
Source Relation Multiplicity Target Description
Definition
Resource hasCurator 0..n Contact Facet
Known Usage
Dataset hasCurator 0..n Contact Facet Is he the curator
hasDeveloper
hasDeveloper extends hasContact
Source Relation Multiplicity Target Description
Definition
Resource hasDeveloper 0..n Contact Facet
Known Usage
hasMaintainer
hasMaintainer extends hasContact
Source Relation Multiplicity Target Description
Definition
Resource hasMaintainer 0..n Contact Facet
Known Usage
Dataset hasMaintainer 0..n Contact Facet Is he the maintainer
hasManager
hasManager extends hasContact
Source Relation Multiplicity Target Description
Definition
Resource hasManager 0..n Contact Facet
Known Usage
hasOwner
hasOwner extends hasContact
Source Relation Multiplicity Target Description
Definition
Resource hasOwner 0..n Contact Facet
Known Usage
Dataset hasOwner 0..n Contact Facet Is he the owner

hasCoverage

Abstract hasCoverage extends consistsOf
Source Relation Multiplicity Target Description
Definition
Resources hasCoverage 0..n Coverage Facet ...
Known Usage
Dataset hasCoverage 1..n Coverage Facet ...
hasSpatialCoverage
hasSpatialCoverage extends hasCoverage
Source Relation Multiplicity Target Description
Definition
Resources hasSpatialCoverage 0..n Coverage Facet ...
Known Usage
Dataset hasSpatialCoverage 0..n Coverage Facet ...
hasTemporalCoverage
hasTemporalCoverage extends hasCoverage
Source Relation Multiplicity Target Description
Definition
Resources hasTemporalCoverage 0..n Coverage Facet ...
Known Usage
Dataset hasTemporalCoverage 0..n Coverage Facet ...

hasMemory

Abstract hasMemory extends consistsOf
Source Relation Multiplicity Target Description
Definition
Resources hasMemory 0..n Memory Facet ...
hasPersistentMemory
hasPersistentMemory extends hasMemory
Source Relation Multiplicity Target Description
Definition
Resources hasPersistentMemory 0..n Memory Facet ...
Known Usage
Hosting Node hasPersistentMemory 1..n Memory Facet Disk Space
hasVolatileMemory
hasVolatileMemory extends hasMemory
Source Relation Multiplicity Target Description
Definition
Resources hasVolatileMemory 0..n Memory Facet ...
Known Usage
Hosting Node hasVolatileMemory 1..n Memory Facet RAM

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.

Resource

Abstract Resource Profile
Scope: This entity is conceived to describe every "main thing" to be registered and discovered by the Information System.
Relation Multiplicity Target Description
Facets
isIdentifiedBy 1..n Facet Any Resource has at least one Facet which in some way allow to identify the Resource per se.
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.


Actor

Abstract Actor
Scope: Any entity (human or machine) playing an active role.
Relation Multiplicity Target Description
Facets
isIdentifiedBy 1..n Contact Facet An Actor has at least a Contact Facet which permit to identify the Actor per se.
hasContact 0..n Contact Facet An Actor can have other Contact Facets which provide secondary contact information.
consistsOf 0..n Contact Reference Facet
Relations
Dataset involves (0..n) Actor: ?
Site isOwnedBy (0..n) Actor: The
Legal Body
Legal Body extends Actor
Scope: A legal entity playing the role of an Actor.
Relation Multiplicity Target Description
Facets
isIdentifiedBy 1..n Contact Facet A Legal Body has at least a Contact Facet which permit to identify the Legal Body per se.
consistsOf 0..n Contact Reference Facet
Relations
Person belongsTo (0..n) Legal Body
Person
Person extends Actor
Scope: Any human playing the role of Actor.
Relation Multiplicity Target Description
Facets
isIdentifiedBy 1..n Contact Facet A Person has at least a Contact Facet which permit to identify the Person per se.
consistsOf 0..n Contact Reference Facet
Relations
Person belongsTo (0..n) Legal Body

Configuration Template

Configuration Profile
Scope: It represents a template for a configuration. It describe how a configuration has to be realized. E.g. Used to define the accounting configuration parameters template.
Relation Multiplicity Target Description
Facets
isIdentifiedBy 1..n Identifier Facet ...
consistsOf 1..n Simple Property Facet ...
Relations
Configuration isDerivationOf (1..1) Configuration Template
Software isConfiguredBy (0..n) Configuration Template


Configuration
Configuration Profile extends
Scope: An instance of a configuration template characterising the behaviour and shape of the resource it is attached to;
Relation Multiplicity Target Description
Facets
isIdentifiedBy 1..n Identifier Facet ...
Relations
Configuration isDerivationOf (1..1) Configuration Template
Service isCustomizedBy (0..n) Configuration

Dataset

Dataset Profile
Scope: Any set of digital objects representing data and treated collectively as a unit.
Relation Multiplicity Target Description
Facets
isIdentifiedBy 1..n Identifier Facet The set of Identifiers associated with the Dataset instance.
hasContact 1..n Contact Facet The contact information of the entity responsible for the dataset.
hasContributor 0..n Contact Facet The contact information on contributors supporting the creation and development of the Dataset.
hasCreator 0..n Contact Facet The contact information of the creator of the Dataset.
hasCurator 0..n Contact Facet The contact information of the entity responsible for the curation of the dataset;
hasMaintainer 0..n Contact Facet The contact information of the entity responsible for the maintenance of the dataset;
hasOwner 0..n Contact Facet The contact information of the entity having the ownership of the dataset;
consistsOf 0..n Access Point Facet 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.
consistsOf 0..n License Facet The licence governing dataset exploitation. The duration of license (if any) is captured by the expiry date defined in the consistsOf relation.
consistsOf 0..n Event Facet Any "event" characterising the lifecycle of the dataset, e.g. collection date, last collection date.
consistsOf 0..n Provenance Facet Any provenance record associated with the dataset;
hasCoverage 1..n Coverage Facet Any coverage related information (e.g. topic, species) characterising the content of the dataset.
hasTemporalCoverage 0..n Coverage Facet Any temporal coverage information characterising the content of the dataset, e.g. the time-span covered by the dataset;
hasSpatialCoverage 0..n Coverage Facet Any geo-spatial coverage information characterising the content of the dataset, e.g. the area covered by the dataset;
consistsOf 0..n Descriptive Metadata Facet Any descriptive information associated with the dataset, e.g. for discovery purposes.
consistsOf 0..n Subject Facet Any subject / tag associated with the dataset for descriptive and discovery purposes.
Relations
Dataset involves (0..n) Actor
Dataset isCorrelatedTo (0..n) Dataset
Dataset isCompliantWith (0..n) Schema: Any schema characterising the content of the dataset, e.g. the schema describing the 'columns' of a CSV-based dataset;
Concrete Dataset isPartOf (0..n) Dataset: The reference to the 'incarnations' / 'manifestations' contributing to a dataset;
Service manages (0..n) Dataset: 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;
Concrete Dataset
Concrete Dataset Profile extends Dataset Profile
Scope: Any incarnation / manifestation of a dataset or part of it;
Relation Multiplicity Target Description
Facets
isIdentifiedBy 1..n Identifier Facet The set of Identifiers associated with the Concrete Dataset instance.
hasMaintainer 1..n Contact Facet The contact information of the entity responsible for the maintenance of the concrete dataset;
consistsOf 1..n Access Point Facet 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
Relations
Concrete Dataset isPartOf (0..n) Dataset: The reference to the Dataset the instance manifests / contribute to manifest.

Schema

Schema Profile
Scope: Any reference schema to be used to specify values compliant with it. Examples include controlled vocabularies, ontologies,
Relation Multiplicity Target Description
Facets
isIdentifiedBy 1..n Schema Facet
isIdentifiedBy 0..n JSON Schema Facet
isIdentifiedBy 0..n XSD Schema Facet
hasContact 1..n Contact Facet
consistsOf 0..n Descriptive Metadata Facet
consistsOf 0..n Subject Facet
Relations
Dataset isCompliantWith (0..n) Schema

Service

Abstract Service Profile
Scope: An abstract entity to represent any typology of Service worth registering in the infrastructure.
Relation Multiplicity Target Description
Facets
isIdentifiedBy 1..n Facet
consistsOf 0..n Descriptive Metadata Facet Any descriptive information associated with the service, e.g. for discovery purposes.
consistsOf 0..n Subject Facet Any subject / tag associated with the service for descriptive, cataloguing and discovery purposes.
Relations
Service callsFor 0..n Service:
Service isCustomizedBy 0..n Configuration:
Service manages 0..n Dataset:
Software requires 0..n Service:
E-Service
E-Service Profile extends Service Profile
Scope: Any working service that is registered in the infrastructure and made available by an Access Point.
Relation Multiplicity Target Description
Facets
isIdentifiedBy 1..n Software Facet The main software enabling the E-Service capabilities.
consistsOf 0..n Software Facet Software available in the E-Service environment that characterizes the specific E-Service instance.
consistsOf 1..n Access Point Facet Identify the endpoints of the E-Service
consistsOf 1..n Event Facet Events characterising the current status and lifecycle of the service, e.g. ActivationTime, DeploymentTime
consistsOf 1..1 Service State Facet The current status of the E-Service, e.g. STARTED, ready, down, failed
consistsOf 0..n License Facet The specific terms of use governing the exploitation of the E-Service.
Relations
E-Service discovers (0..n) E-Service: A reference to any other E-Service, the E-Service instance is discovering through query on IS.
E-Service runs (0..n) Software: A reference to the Software the E-Service is running. TBD the relation between this and the facets above;
E-Service uses (0..n) E-Service: A reference to any other E-Service, the E-Service instance is invoking.
Hosting Node hosts (0..n) E-Service: A reference to the E-Services activated by a specific Hosting Node.
Running Plugin isActivatedBy (1..1) E-Service: A reference to the E-Service that is running the specific plugin instance.


Running Plugin
Running Plugin Profile extends E-Service Profile
Scope: Any instance of a Plugin deployed and running by an E-Service.
Relation Multiplicity Target Description
Facets
isIdentifiedBy 1..1 Software Facet The software enabling the Running Plugin
Relations
Running Plugin isActivatedBy (1..1) E-Service: A reference to the E-Service is running the plugin.
Running Plugin runsPlugin (0..n) Plugin
Hosting Node
Hosting Node Profile extends Service Profile
Scope: Any server\machine playing the role of "Hosting Node", i.e., being capable to host and operate an E-Service;
Relation Multiplicity Target Description
Facets
isIdentifiedBy 1..n Networking Facet The Network ID characterising the Hosting Node;
consistsOf 1..n CPU Facet The CPU equipping the Hosting Node;
hasPersistentMemory 1..n Memory Facet The Disk Space Capacity of the Hosting Node;
hasVolatileMemory 1..n Memory Facet The RAM Capacity of the Hosting Node;
consistsOf 1..n Event Facet Every event characterizing the life cycle of the Hosting Node, e.g. the activation time;
consistsOf 1..1 Container State Facet The current state of the Hosting Node, e.g. started, ready, certified, down, failed
consistsOf 0..n Simple Property Facet Any <key, value> pair property worth associating with the Hosting Node, e.g. Environment Variables
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
Hosting Node hosts (0..n) E-Service: A reference to any E-Service instance, the Hosting Node instance is hosting.
Hosting Node isManagedBy (0..n) Site: The Site responsible for and contributing the Hosting Node;
Hosting Node isPoweredBy (0..n) Software
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.
Relation Multiplicity Target Description
Facets
isIdentifiedBy 1..n Software Facet  ???
Relations
Virtual Service demands (0..n) Software Facet: THIS IS NOT OK / NOT SUFFICIENT
Virtual Service demands (1..n) Service

Site

Site Profile
Scope: An entity representing the location (physical or virtual) hosting and providing the resources associated with it.
Relation Multiplicity Target Description
Facets
isIdentifiedBy 1..n Identifier Facet The Site Identifier;
hasContact 1..n Contact Facet The main contact for the Site;
hasMaintainer 1..n Contact Facet Contact information of the maintainer of the Site;
hasManager 1..n Contact Facet Contact information of the Site Manager;
consistsOf 1..n Location Facet ...
consistsOf 1..n Networking Facet
Relations
Site isOwnedBy (0..n) Actor
Hosting Node isManagedBy (0..n) Site

Software

Software Profile
Scope: Any Software entity worth being represented for management purposes;
Relation Multiplicity Target Description
Facets
isIdentifiedBy 1..n Software Facet Software coordinates which identify the Software per se.
consistsOf 1..n Software Facet Apart the one connected by the isIdentifiedBy relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)
consistsOf 1..n Access Point Facet Links to maven artifact on nexus, javadoc, wiki, svn ...
consistsOf 1..n License Facet The Software License characterizing its possible exploitation and use;
consistsOf 1..n State Facet The state characterising the software, e.g. Deprecated, Active, Obsolete
Relations
Software dependsOn (0..n) Software: to capture any dependency between two software artifacts.
Software isConfiguredBy (0..n) Configuration Template: E.g. Accounting Sw uses it to discover the configuration
Software requires (0..n) Service: to capture any dependency between a software artifact and a Service, e.g. A software requiring a specific database.
Virtual Service demands (0..n) Software: CHECK #Service can be used instead of Software;
E-Service runs (0..n) Software
Hosting Node isPoweredBy (0..n) Software
Plugin isPluginOf (0..n) Software: to capture the relation between a Software and its Plugins;

Plugin

Plugin Profile extends Software Profile
Scope: A piece of Software extending the capabilities of another Software (main) and requiring the main Software to be executed;
Relation Multiplicity Target Description
Facets
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.
Running Plugin runsPlugin (0..n) Plugin

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 want 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.

Suggested Extensions

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 Description Attributes
name String ...
description String ...
input String ...
output String ...
Known Usage
Source Relation Multiplicity Target Description
Service consistsOf 0..n Functionality Related Facet ...

Internal Entity and Relation

For internal use only are defined the following entity and relation:

Context

Model a Context (aka scope)

isParentOf

Source Target Description
Context Context