Facet Based Resource Model

From Gcube Wiki
Revision as of 14:21, 20 July 2016 by Pasquale.pagano (Talk | contribs) (State Facet)

Jump to: navigation, search

Basic Concepts

  • Two typologies of entities are envisaged:
    • Resources, i.e. entities representing a description of "thing" to be managed;
    • 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 fields / attributed;
  • Two typologies of relations are envisaged:
  • Entities and relations 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" and a "target". Anyway the relation can be also navigated in the opposite direction;
    • It is not permitted to define a Relation having a Facet as "source".
      • 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;
    • A Facet instance can be linked (by ConsistOf or any specialization of it) from different Resources.

Header

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

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

Facets

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

Facets Specification

Every Facet has:

Any property can be enriched with the following attributes:

  • Name : Property Name
  • Type : The Type of the Property (e.g. String, Integer, ...).
  • 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): default=false
  • Max (Max): default=null
  • Min (Min): default=null
  • Regexpr (Reg)): A Regular Expression to validate the property value.default=null


Access Point Facet

The goal of this facet is expected to capture information on “access points” for a resource, i.e. any endpoint to interact with the resource via a known protocol.

Name Type Description Attributes
entryName String An unique identifier
endpoint URI The URI which identify the endpoint of a resource 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 .....
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 ....
properties String This can be an arbitrarily complex element whose "structure" is defined by the associated schema
propertiesSchema URI ....

Contact Facet

The goal of this facet is expected to capture contact information.

Name Type Description Attributes
title String e.g. Dr., Mrs, Mr, Mandatory=false
name String Mandatory=true NotNull=true
middleName String Mandatory=false
surname String Mandatory=true NotNull=true
eMail String An RFC‑822 compliant email address. Mandatory=true NotNull=true Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
website URL ...
address String ...
phone String ...

Coverage Facet

The goal of this facet is to collect any extent-related information.

Name Type Description Attributes
spatial String ...
spatialSchema URI ...
temporal String ...
temporalSchema URI .....

CPU Facet

The goal of this facet is to describe CPU information.

Name Type Description Attributes
model String ...
vendor String ...
clockSpeed String ...

Descriptive Metadata Facet

The goal of this facet is to collect any descriptive metadata about the resource.

Name Type Description Attributes
value String Inherited. E.g. XML Blob
schema URI ...

Event Facet

The goal of this facet is to collect any descriptive metadata about the resource.

Name Type Description Attributes
type String ...
typeSchema URI ...
date String ...
dateSchema URI ...

Functionality Related Facet

The goal of this facet is to capture what are the facilities supported (Challenging because of the different audiences) Something very "poor" ... we can have a look at WPS spec

Name Type Description Attributes
name String ...
description String ...
input String ...
output String ...

Identifier Facet

The goal of this facet is to collect information on Identifiers that can be attached to a resource.

Name Type Description Attributes
value String The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014
type Enumeration The typology of identifier. i.e. URI, DOI, IRI, URL, URN, UUID;
isPersistent boolean To indicate if the Identifier is persistent or not.

Location Facet

The goal of this facet is to collect information about Location

Name Type Description Attributes
Country String ... ...
Location String ... ...
Latitude String ... ...
Longitude String ... ...

Network Address Facet

The goal of this facet is to capture IP information

Name Type Description Attributes
hostName String ...
domainName String ...
IPAddress String ...
mask String ...
broadcastAddress String ...

Regular expression to validate different IPv4 addresses are available at:

http://www.regextester.com/22

https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html

Both IPv4 and IPv6: http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses

License Facet

The goal of this facet is to .....

Name Type Description Attributes
value String ...
schema URI Licence URI

Memory Facet

The goal of this facet is to .....

Name Type Description Attributes
size Long ...
used Long ...
unit String ...

Peripheral Facet

The goal of this facet is to .....

Name Type Description Attributes
model String ...
vendor String ...

Provenance Facet

The goal of this facet is to collect information related with resource lineage/provenance

Name Type Description Attributes
relationship Enum wasGeneratedBy | ...
reference String resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)
provenanceDocument String ... E.g. the xml format
provenanceDocumentSchema String ... E.g. a reference to the format

Simple Property Facet

The goal of this facet is the base class for all facets described by a value and the schema of the value

Name Type Description Attributes
name String ...
value String ...

Software Facet

The goal of this facet is to capture SW related features"

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.
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.
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.
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 .... Used in maven and in gcube

State Facet

The goal of this facet is to ...

Name Type Description Attributes
value String The value of the state. Must be compliant with schema. Mandatory=true NotNull=true
Service State Facet
Name Type Description Attributes
value String The value of the state Mandatory=true NotNull=true Regex=(STARTED|ready|down|failed)
Container State Facet
Name Type Description Attributes
value String The value of the state Mandatory=true NotNull=true Regex=(started|ready|certified|down|failed)

Subject Facet

The goal of this facet is to ...

Name Type Description Attributes
value String The value of the state. Must be compliant with schema. Mandatory=true NotNull=true
schema URI The URI of the schema. It is only an informative field. It is not used for validation from IS part. Mandatory=true NotNull=true

Type Facet

TBD Remove this facet was thought to identify the type of resource.

The goal of this facet is to ...

Name Type Description Attributes
value String The value of the state. Must be compliant with schema. Mandatory=true NotNull=true
schema URI The URI of the schema. It is only an informative field. It is not used for validation from IS part. Mandatory=true NotNull=true

Relation

Every Facet has:

Relation Property

Name Type Description
referentialIntegrity Enum I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep
accessPolicy AccessPolicy ...

RelatedTo

The following relations (extending the RelatedTo) have been identified and defined:

ConsistOf

The following relations (extending the ConsistOf) have been identified and defined:

Resources

Every Resource has:

A class can be identified as Abstract. This means that cannot be instantiated. Use specialization instead. It is not required that an Abstract class establish an Identify relation with a Facet.

Resource

Abstract Resource Profile
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 Identify 1..n Facet Any Resource has at least one Facet which in some way allow to identify the Resource per se.
Resource ConsistOf 0..n Facet Any Resource consist of zero or more Facets which describes the different aspects of the facet.
Resources
Resource RelatedTo 0..n Resource Any Resource can be related to any other resource.

The following Resources have been identified:

Actor

Actor Profile
Source Relation Multiplicity Target Description
Facets
Actor Identify 1..n Contact An Actor has at least a Contact Facet which permit to identify the Actor per se.
Actor ConsistOf 0..n Contact An Actor can have other Contact Facets which provide secondary contact information.
Resources
Actor RelatedTo 1..n TBD TBD

Configuration

Configuration Profile
Source Relation Multiplicity Target Description
Facets
Configuration Identify 1..n Identification TBD
Configuration ConsistOf 0..n TBD TBD
Resources
Software ConfiguredBy 0..n Configuration TBD
Service CustomizedBy 0..n Configuration TBD

Dataset

Dataset Profile
Source Relation Multiplicity Target Description
Facets
Dataset Identify 1..n Identification TBD
Dataset TBD 1..n Contact Facet Missing is role: Is he the curator, owner, creator, contributor? This is an attribute of the relation
Dataset ConsistOf 1..n Access Point Facet Missing embargoState to the attached access policy
Dataset ConsistOf 1..n License Facet Missing duration of the license applied e.g. 15 years
Dataset ConsistOf 1..n Event Facet TBD
Dataset ConsistOf 1..n Provenance Facet TBD
Resources
Service Manage 0..n Dataset TBD
Dataset TBD 0..n Dataset TBD
Concrete Dataset PartOf 0..n Dataset TBD
Concrete Dataset
Concrete Dataset Profile extends Dataset Profile
Source Relation Multiplicity Target Description
Facets
Dataset ConsistOf 1..n TBD TBD
Resources
Concrete Dataset PartOf 1..n Dataset TBD

Service

Abstract Service Profile
Source Relation Multiplicity Target Description
Facets
Service ConsistOf 0..n Contact Facet TBD
Resources
Software Require 0..n Service TBD
Service CallFor 0..n Service TBD
Service CustomizedBy 0..n Configuration TBD
Service Manage 0..n Dataset TBD
Abstract Service
Abstract Service Profile extends Service Profile
Source Relation Multiplicity Target Description
Facets
Abstract Service Identify 1..n TBD TBD
Abstract Service ConsistOf 0..n TBD TBD
Resources
Abstract Service Demand 0..n Software TBD
E-Service
E-Service Profile extends Service Profile
Source Relation Multiplicity Target Description
Facets
E-Service Identify 1..1 Software TBD
E-Service ConsistOf 1..n Access Point Identify the endpoints of the E-Service
E-Service ConsistOf 1..n Event E.g. ActivationTime,DeploymenTime)
E-Service ConsistOf 1..1 Service State I.e. STARTED, ready, down, failed
Resources
E-Service Run 0..n Software TBD
E-Service Use 0..n E-Service A reference to any other E-Service, the E-Service instance is invoking.
E-Service Discover 0..n E-Service A reference to any other E-Service, the E-Service instance is discovering through query on IS.
Hosting Node Host 0..n E-Service TBD
Hosting Node
Hosting Node Profile extends Service Profile
Source Relation Multiplicity Target Description
Facets
Hosting Node ConsistOf 1..n CPU Facet CPU Information
Hosting Node ConsistOf 1..n Persistent Memory Facet Disk Space TBD Specialize ConsistOf
Hosting Node ConsistOf 1..n Volatile Memory Facet RAM TBD Specialize ConsistOf
Hosting Node ConsistOf 1..n Network Address Network address
Hosting Node ConsistOf 1..n Event TBD
Hosting Node ConsistOf 1..n Container State I.e. started, ready, certified, down, failed
Hosting Node ConsistOf 1..n Simple Property E.g. Environment Variables
Resources
Hosting Node Host 0..n E-Service A reference to any E-Service instance, the Hosting Node instance is hosting.
Hosting Node ManagedBy 0..n Site TBD
Hosting Node PoweredBy 0..n Software TBD

Schema

TBD

Schema Profile
Source Relation Multiplicity Target Description
Facets
Schema Identify 1..n Identification TBD
Schema ConsistOf 1..n TBD TBD
Resources
Schema TBD 0..n TBD TBD

Site

Site Profile
Source Relation Multiplicity Target Description
Facets
Site Identify 1..n Identification TBD
Site ConsistOf 1..n Contact Facet TBD
Site ConsistOf 1..n Location Facet TBD
Hosting Node ConsistOf 1..n Network Address Network address TBD
Resources
Hosting Node ManagedBy 0..n Site TBD

Software

Software Profile
Source Relation Multiplicity Target Description
Facets
Software Identify 1..n Software Software coordinates which identify the Software per se.
Software ConsistOf 1..n Software Apart the one connected with Identify relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)
Software ConsistOf 0..n TBD Access Point Links to maven artifact on nexus, javadoc, wiki, svn ...
Software ConsistOf 0..n TBD License TBD
Software ConsistOf 1..n State TBD
Resources
Software ConfiguredBy 0..n Configuration TBD
Software DependOn 0..n Software TBD
Software Require 0..n Service TBD
Plugin PluginOf 0..n Software TBD
Abstract Service Demand 0..n Software An inverse reference stemming from the Abstract Service that is ...
E-Service Run 0..n Software An inverse reference stemming from the E-Service that is running this Software
Hosting Node PoweredBy 0..n Software An inverse reference stemming from the Hosting Node that is ...

Plugin

Plugin Profile extends Software Profile
Source Relation Multiplicity Target Description
Facets
Plugin TBD TBD TBD TBD
Resources
Plugin PluginOf 1..n Software A reference to the Software this Plugin extends capabilities.

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.

Internal Entity and Relation

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

Context

Model a Context (aka scope)

ParentOf

A relation beetween two Context