Facet Based Resource Model

From Gcube Wiki
Revision as of 14:23, 22 July 2016 by Luca.frosini (Talk | contribs) (Coverage Relation)

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;
  • 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" (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): default=false
  • Max (Max): default=null
  • Min (Min): default=null
  • Regexpr (Reg)): A Regular Expression to validate the property value.default=null

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
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
Datetime 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. 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 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 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 Embedded>
Link TBD Link to another Entity. ...
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[]
Any Not determinated type, used to specify Collections of mixed type, and null java.lang.Object
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. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one). java.net.URL
URI String representation of the URI. The check is obtained using . 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 Datetime 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 Datetime 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

Facets

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

Facets Specification

Every Facet has:

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 First Name Mandatory=true NotNull=true
middleName String Middle Name Mandatory=false
surname String Surname Mandatory=true NotNull=true
eMail Email An RFC‑822 compliant email address. Mandatory=true NotNull=true Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
website URL The main website
address String A physical address
phone String A phone number

Coverage Facet

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

Name Type Description Attributes
value String ... Mandatory=true NotNull=true
schema URI ... Mandatory=true NotNull=true

CPU Facet

The goal of this facet is to describe CPU information.

Name Type Description Attributes
model String ... Mandatory=true NotNull=true
vendor String ... Mandatory=true NotNull=true
clockSpeed String ... Mandatory=true NotNull=true

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 Mandatory=true NotNull=true
schema URI ... Mandatory=true NotNull=true

Event Facet

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

Name Type Description Attributes
value String ... Mandatory=true NotNull=true
schema URI ... Mandatory=true NotNull=true

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 Mandatory=true NotNull=true
type Enumeration The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID; Mandatory=true NotNull=true
ishasPersistent boolean To indicate if the Identifier is persistent or not. Mandatory=true NotNull=true

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 ... Mandatory=true NotNull=true
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

Name Type Description Attributes
name String E.g. EUPL 1.1, GPLv2, BSD, ... Mandatory=true NotNull=true
text URL Licence URL Mandatory=true NotNull=true

Memory Facet

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

Name Type Description Attributes
size Long Total amount of memory. Mandatory=true NotNull=true
used Long usesd amount of memory. Mandatory=true NotNull=true
unit Enum I.e. 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 Regex=(Byte|kB,|MB|GB|TB|PB|EB|ZB|YB)

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 ... <code>Mandatory=true NotNull=true
value String ... Mandatory=true NotNull=true

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

Relations

Every relation has:


Gcube-reources-and-isrelatedto-relations.png

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

The following specializations of isRelatedTo relation have been identified and defined:

callsFor

Source Target Description
Service Service

demands

Source Target Description
Abstract Service Software

dependsOn

Source Target Description
Software Software

discovers

Source Target Description
E-Service E-Service

hosts

Source Target Description
Hosting Node E-Service


isConfiguredBy

Source Target Description
Software Configuration

isCorrelatedTo

Source Target Description
Dataset Dataset
isPartOf
Source Target Description
Concrete Dataset Dataset

isCustomizedBy

Source Target Description
Service Configuration

isManagedBy

Source Target Description
Hosting Node Site

isPluginOf

Source Target Description
Plugin Software

isPoweredBy

Source Target Description
Hosting Node Software

manages

Source Target Description
Service Dataset

requires

Source Target Description
Software Service

runs

Source Target Description
E-Service Software

uses

Source Target Description
E-Service E-Service

consistsOf

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

identifies

identifies
Source Relation Multiplicity Target Description
Definition
Resource identifies 1..n Facet
Known Usage
Actor identifies 1..n Contact
Configuration identifies 1..n Simple Property
Dataset identifies 1..n Identifier
Dataset identifies 1..n Identifier
Abstract Service identifies 1..n TBD TBD
E-Service identifies 1..1 Software TBD
Schema identifies 1..n Identification TBD
Site identifies 1..n Identification TBD
Software identifies 1..n Software Software coordinates which identify the Software per se.

Coverage Relation

Abstract Coverage Relation
Source Relation Multiplicity Target Description
Definition
Resources Coverage_Relation 0..n Coverage TBD
Known Usage
Dataset Coverage_Relation 1..n Coverage TBD
hasTemporal
Abstract Coverage Relation
Source Relation Multiplicity Target Description
Definition
Resources hasTemporal 0..n Coverage TBD
Known Usage
Dataset hasTemporal 0..n Coverage TBD
hasSpatial
Abstract Coverage Relation
Source Relation Multiplicity Target Description
Definition
Resources hasSpatial 0..n Coverage TBD
Known Usage
Dataset hasSpatial 0..n Coverage TBD

Memory Relation

Abstract

Source Target Description
Resource Memory
hasPersistent
Source Target Description
Resource Memory
hasVolatile
Source Target Description
Resource Memory

Contact Relation

Abstract Contact Relation
Source Relation Multiplicity Target Description
Facets
Resource Contact Relation 0..n Contact Facet
Dataset Contact Relation 1..n Contact Facet ...


hasContributor
Source Target Description
Resource Contact
hasCreator
Source Target Description
Resource Contact
hasCurator
Source Target Description
Resource Contact
hasDeveloper
Source Target Description
Resource Contact
hasMaintainer
Source Target Description
Resource Contact
hasManager
Source Target Description
Resource Contact
hasOwner
Source Target Description
Resource Contact

Resources

Every Resource has:

A class can be identified as Abstract. This means that cannot be instantiated. uses specialization instead. It is not required that an Abstract class establish an identifies 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 identifies 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.
Resources
Resource isRelatedTo 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 identifies 1..n Contact An Actor has at least a Contact Facet which permit to identify the Actor per se.
Actor ConsistsOf 0..n Contact An Actor can have other Contact Facets which provide secondary contact information.
Resources
Actor isRelatedTo 0..n TBD TBD

Configuration

Configuration Profile
Source Relation Multiplicity Target Description
Facets
Configuration identifies 1..n Simple Property TBD
Configuration consistsOf 0..n Facet TBD
Resources
Software isConfiguredBy 0..n Configuration TBD
Service isCustomizedBy 0..n Configuration TBD

Dataset

Dataset Profile
Source Relation Multiplicity Target Description
Facets
Dataset identifies 1..n Identifier TBD
Dataset Contact Relation 1..n Contact Facet ...
Dataset hasContributor 0..n Contact Facet Is he the contributor
Dataset hasCreator 0..n Contact Facet Is he the creator
Dataset hasCurator 0..n Contact Facet Is he the curator
Dataset hasMaintainer 0..n Contact Facet Is he the maintainer
Dataset hasOwner 0..n Contact Facet Is he the owner
Dataset consistsOf 0..n Access Point Facet The embargoState can be modeled through the access policy defined in the consistsOf relation
Dataset consistsOf 0..n License Facet The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation
Dataset consistsOf 0..n Event Facet TBD
Dataset consistsOf 0..n Provenance Facet TBD
Dataset hasTemporal 0..n Coverage TBD
Dataset hasSpatial 0..n Coverage TBD
Dataset consistsOf 0..n Descriptive Metadata TBD
Dataset consistsOf 0..n Subject TBD
Resources
Service manages 0..n Dataset TBD
Dataset isCorrelatedTo 0..n Dataset TBD
Concrete Dataset isPartOf 0..n Dataset TBD
Concrete Dataset
Concrete Dataset Profile extends Dataset Profile
Source Relation Multiplicity Target Description
Facets
Concrete Dataset hasMaintainer 1..n Contact Facet Is he the maintainer
Concrete Dataset consistsOf 1..n Access Point Facet The embargoState can be modeled through the access policy defined in the consistsOf relation
Resources
Concrete Dataset isPartOf 0..n Dataset TBD

Service

Abstract Service Profile
Source Relation Multiplicity Target Description
Facets
Service consistsOf 0..n Contact Facet TBD
Resources
Software requires 0..n Service TBD
Service callsFor 0..n Service TBD
Service isCustomizedBy 0..n Configuration TBD
Service manages 0..n Dataset TBD
Abstract Service
Abstract Service Profile extends Service Profile
Source Relation Multiplicity Target Description
Facets
Abstract Service identifies 1..n TBD TBD
Abstract Service consistsOf 0..n TBD TBD
Resources
Abstract Service demands 0..n Software TBD
E-Service
E-Service Profile extends Service Profile
Source Relation Multiplicity Target Description
Facets
E-Service identifies 1..1 Software TBD
E-Service consistsOf 1..n Access Point Identify the endpoints of the E-Service
E-Service consistsOf 1..n Event E.g. ActivationTime,DeploymenTime)
E-Service consistsOf 1..1 Service State I.e. STARTED, ready, down, failed
Resources
E-Service runs 0..n Software TBD
E-Service uses 0..n E-Service A reference to any other E-Service, the E-Service instance is invoking.
E-Service discovers 0..n E-Service A reference to any other E-Service, the E-Service instance is discovering through query on IS.
Hosting Node hosts 0..n E-Service TBD
Hosting Node
Hosting Node Profile extends Service Profile
Source Relation Multiplicity Target Description
Facets
Hosting Node consistsOf 1..n CPU Facet CPU Information
Hosting Node hasPersistent 1..n hasPersistent Memory Facet Disk Space
Hosting Node hasVolatile 1..n Memory Facet RAM
Hosting Node consistsOf 1..n Network Address Network address
Hosting Node consistsOf 1..n Event TBD
Hosting Node consistsOf 1..n Container State I.e. started, ready, certified, down, failed
Hosting Node consistsOf 1..n Simple Property E.g. Environment Variables
Resources
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 TBD
Hosting Node isPoweredBy 0..n Software TBD

Schema

TBD

Schema Profile
Source Relation Multiplicity Target Description
Facets
Schema identifies 1..n Identification TBD
Schema consistsOf 1..n TBD TBD
Resources
Schema TBD 0..n TBD TBD

Site

Site Profile
Source Relation Multiplicity Target Description
Facets
Site identifies 1..n Identification TBD
Site consistsOf 1..n Contact Facet TBD
Site consistsOf 1..n Location Facet TBD
Hosting Node consistsOf 1..n Network Address Network address TBD
Resources
Hosting Node isManagedBy 0..n Site TBD

Software

Software Profile
Source Relation Multiplicity Target Description
Facets
Software identifies 1..n Software Software coordinates which identify the Software per se.
Software consistsOf 1..n Software Apart the one connected with identifies relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)
Software consistsOf 0..n TBD Access Point Links to maven artifact on nexus, javadoc, wiki, svn ...
Software consistsOf 0..n TBD License TBD
Software consistsOf 1..n State TBD
Resources
Software isConfiguredBy 0..n Configuration TBD
Software dependsOn 0..n Software TBD
Software requires 0..n Service TBD
Plugin isPluginOf 0..n Software TBD
Abstract Service demands 0..n Software An inverse reference stemming from the Abstract Service that is ...
E-Service runs 0..n Software An inverse reference stemming from the E-Service that is running this Software
Hosting Node isPoweredBy 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 isPluginOf 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)

isParentOf

Source Target Description
Context Context