https://wiki.gcube-system.org/api.php?action=feedcontributions&user=Pasquale.pagano&feedformat=atom
Gcube Wiki - User contributions [en]
2024-03-19T02:05:07Z
User contributions
MediaWiki 1.25.1
https://wiki.gcube-system.org/index.php?title=Social_Networking_Service&diff=34662
Social Networking Service
2021-11-26T08:58:30Z
<p>Pasquale.pagano: /* Discover the Web Service */</p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
<br />
The Social Networking Service is a RESTful application which exposes operations coming from both the [https://wiki.gcube-system.org/gcube/Social_Networking_Library gCube Social-Networking-Library] and the [https://wiki.gcube-system.org/gcube/UserManagement_Core User Management] components. The former is the bridge between the Cassandra Cluster (on which social data are stored) and the social applications, whereas the latter is the abstraction layer over the enabling technology of the Infrastructure portals, [https://www.liferay.com/ Liferay], in terms of: roles, users and organizations and how they are mapped to gCube concepts (VREs, Teams, and so on).<br />
<br />
The web services exposes a subset of such functionalities over '''https''' in a standard, reliable and secure way. <br />
<br />
See the vailable REST-API at a [https://dev.d4science.org/swagger/social-networking/ glance here.]<br />
= Discover the Web Service =<br />
For gCube releases older than 4.3, a Service Endpoint that has<br />
<br />
<source lang="java"><br />
Name = SocialNetworking<br />
Category = Portal<br />
</source><br />
<br />
mantains the base path of the service. Starting from gCube 4.3 version, the service runs on SmartGears, thus a gCore Endpoint needs to be searched having<br />
<br />
<source lang="java"><br />
Service Name = SocialNetworking<br />
Service Class = Portal<br />
</source><br />
<br />
The base path is the entry point of the web service. In the '''development''' environment, its current value is<br />
<br />
https://socialnetworking-d-d4s.d4science.org/social-networking-library-ws/rest or https://api.dev.d4science.org/rest<br />
<br />
<br />
In the '''production''' environment, its current value is<br />
<source lang="xml"><br />
https://api.d4science.org/<br />
</source><br />
<br />
This url is referred as ''BASE_URL''.<br />
<br />
= Service versions =<br />
Starting from gCube 4.3, the service exposes its methods using a more standard naming approach. Moreover, they accept (in case of http POST/PUT methods) JSON objects. The result of all methods is always a JSON object of this kind<br />
<br />
<source lang="java"><br />
{"success": false/true,<br />
"message": ...,<br />
"result": ...,<br />
}<br />
</source><br />
<br />
Where<br />
* success reports if the request succeeded or failed;<br />
* message is a status/error message that can be checked in case of errors (success equals false);<br />
* result is the current result object (it can be a list, a single object and so on depending on the invoked method). <br />
<br />
Inputs are automatically validated before the request is served.<br />
<br />
The older version (Version 1) instead has some limitation thus you are kindly suggested to no longer use it. However, in the following, its methods are going to be reported as well. The older version will be removed starting from the next gCube releases.<br />
<br />
= Authorization =<br />
No matter the version number of the service, every call to one of its method require a gcube-token. See [https://wiki.gcube-system.org/gcube/Authorization_Framework here] for more information about this token. This secret token needs to be valid in the current context. It can be put as query parameter of the http request or within the header. Both approaches are valid. If the token is missing, the operation will be rejected and an http forbidden code will be returned.<br />
<br />
= Usage =<br />
The methods of the Web Service can be called by writing your own REST client application or by using (a lot of) already existent rest client plugins. In the following, we will use the RESTClient plugin for Firefox for POST methods. Your browser can be used for GET methods. The return value of each method is an HTTP Response object that has an HTTP CODE (200, 201, 400, 500, ...) and, optionally, a JSON or text object that represents the created/retrieved resource or better specifies the occurred error. In case of errors, please refer to the [[#Troubleshooting|Troubleshooting]] section for more details.<br />
<br />
= Service methods (Version 2) =<br />
The list of sub-services available in the new version is going to be reported next. The name convention is different. For instance, to read user's posts, the method to be called is<br />
<br />
<source lang="java"><br />
BASE_PATH/2/posts/get-posts-user/<br />
</source><br />
<br />
The real result of the method, if the request succeeded, is contained into the 'result' field of the json object<br />
<br />
<source lang="java"><br />
{"success": ..., "message": ..., "result": "[{first post}, {second post}, ...}<br />
</source><br />
<br />
In the following, the list of available sub-services available under the newest version, its methods and the parameters they need in order to be called are reported. Again, you can use your preferred REST client so examples won't be reported.<br />
<br />
== List of Available Sub-Services and methods==<br />
=== Tokens ===<br />
====Generate application token====<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
2/tokens/generate-application-token<br />
</source><br />
<br />
First of all, you need to have a ''user gcube-token'' for authentication purposes. You can get it using the Token Generator portlet available on the VRE you are interesting the app will post in.<br />
Then, to get an ''application gcube-token'' you can invoke the method. It is an HTTP/POST method that accepts as parameter:<br />
<br />
* a json object of this kind {"app_id": "your-app-id-goes-here"}.<br />
<br />
=== User profile and roles ===<br />
<br />
To retrieve user's profile user profile info (and roles) the subservice to call, once the social networking service endpoint has been retrieved, is this one:<br />
<br />
<code><br />
/2/people/profile<br />
</code><br />
<br />
further details: [https://wiki.gcube-system.org/gcube/OAuth2.0#Step_4_-_Get_member_data get member information]<br />
<br />
=== Full text search ===<br />
==== Search by query ====<br />
Social data are indexed into an ElasticSearch engine and are querable using a full-text approach. You can retrieve more information about this index [https://wiki.gcube-system.org/index.php?title=Social_Networking_Data_Discovery|here].<br />
The link to append to '''Base_URL''' is the following<br />
<source lang="java"><br />
2/full-text-search/search-by-query<br />
</source><br />
<br />
The query can be submitted also to the service, by using the following parameters<br />
<br />
* query: the query to perform against the index [mandatory];<br />
* from : the result set should be returned by starting from the n-th result [default is zero, optional];<br />
* quantity: how many enhanced posts need to be returned [default is 10, optional].<br />
<br />
=== Hashtags ===<br />
==== Get hashtags and occurrences in a context====<br />
The link to append to '''Base_URL''' is the following<br />
<source lang="java"><br />
2/hashtags/get-hashtags-and-occurrences<br />
</source><br />
<br />
The result is of the kind<br />
{"success": true,<br />
"message": null,<br />
"result":{{"hashtag1" : x}, {"hashtag2" : y}, ...}<br />
}<br />
=== Posts ===<br />
==== Write application post====<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
2/posts/write-post-app<br />
</source><br />
<br />
By means of the application token requested with the above method, the app can write on the VRE for which the token has been previously requested. Just invoke this method, that accepts these parameters in a JSON object<br />
<br />
* text: text of the post; <br />
* params: additional parameters if your application supports the direct opening of of this update's object e.g. id=12345&type=foo [optional];<br />
* preview_title: a title for the preview of the post [optional];<br />
* preview_host: a host for the preview of the post [optional];<br />
* preview_description: a description for the preview of the post [optional];<br />
* preview_url: the preview url [optional];<br />
* image_url: if you want to put an image, pass its url [optional];<br />
* enable_notification: a boolean value to enable notifications [optional, default is false].<br />
<br />
====Write user post====<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
2/posts/write-post-user<br />
</source><br />
<br />
By means of a valid user token, he/she can write on the VRE for which the token has been previously requested. Just invoke this method, that accepts these parameters in a JSON object:<br />
<br />
* text: text of the post; <br />
* preview_title: a title for the preview of the post [optional];<br />
* preview_description: a description for the preview of the post [optional];<br />
* preview_host: a host for the preview of the post [optional];<br />
* preview_url: the preview url [optional];<br />
* image_url: if you want to put an image, pass its url [optional];<br />
* enable_notification: a boolean value to enable notifications [optional].<br />
<br />
====Retrieve all application posts==== <br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
2/posts/get-posts-app<br />
</source><br />
<br />
In order to retrieve all the posts the application wrote (in every VRE it is allowed to write in) you can invoke this HTTP/GET method.<br />
====Retrieve all user posts====<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
2/posts/get-posts-user<br />
</source><br />
<br />
====Retrieve all user posts since a given date====<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
2/posts/get-posts-user-since<br />
</source><br />
<br />
If you are interested in retrieving user's posts whose timestamps are greater than a given date you can invoke this method.<br />
This HTTP/GET method accepts as parameter:<br />
<br />
* time: the time of the oldest post to retrieve converted in milliseconds.<br />
<br />
====Retrieve all user posts up to a given quantity====<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
2/posts/get-posts-user-quantity<br />
</source><br />
<br />
If you are interested in retrieving user's posts, starting from the newest up to a given quantity you can invoke this method.<br />
This HTTP/GET method accepts as parameter:<br />
<br />
* quantity: a value greater than zero (the default value is 10).<br />
<br />
====Retrieve the identifiers of the posts a user liked====<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
2/posts/get-id-liked-posts<br />
</source><br />
<br />
By means of this method a user can retrieve the identifiers of the posts he/she liked.<br />
====Retrieve the posts a user liked====<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
2/posts/get-liked-posts<br />
</source><br />
<br />
By means of this method a user can retrieve the posts he/she liked.<br />
====Retrieve all vre posts====<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
2/posts/get-posts-vre<br />
</source><br />
<br />
By means of this method a user that has a token valid for a certain VRE, can retrieve all the posts of that VRE.<br />
====Get posts by hashtag====<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
2/posts/get-posts-by-hashtag<br />
</source><br />
The method requires as parameter:<br />
* hashtag: the hashtag to be contained in the returned posts[mandatory].<br />
<br />
=== Comments ===<br />
====Retrieve comments by user====<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
2/comments/get-comments-user<br />
</source><br />
It is an http GET method.<br />
====Retrieve comments by user and time====<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
2/comments/get-comments-user-by-time<br />
</source><br />
It is an http GET method. It requires:<br />
* time: the time (in milliseconds) since when the comments need to be retrieved [default is zero, optional];<br />
=== Notifications ===<br />
====Retrieve user's notifications in a given range====<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
2/notifications/get-range-notifications<br />
</source><br />
<br />
By means of this method a user can retrieve his/her last notifications in the range [a, b]. The method requires:<br />
<br />
* from: an integer greater than zero;<br />
* quantity: an integer equal or greater than zero.<br />
<br />
The final range is evaluated as [from, from + quantity].<br />
====Notify job status====<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
2/notifications/notify-job-status<br />
</source><br />
<br />
By means of this method a user can be notified about the status of a job in the infrastructure. Jobs are, for instance, SmartExecutor's plugins or DataMiner's algorithms. The method requires the following parameters in a JSON object via HTTP POST<br />
<br />
* recipient: the username of the user to be alerted [mandatory];<br />
* job_id: the identifier of the job (e.g, a uuid) [mandatory];<br />
* job_name: the name of the running job (e.g., Social-data-indexer-plugin)[mandatory];<br />
* service_name: the name of the service that launched the job (e.g., SmartExecutor) [mandatory];<br />
* status: the status reached by the job, that is any among CANCELLED, CANCELLING, DELETED, DELETING, EXECUTING, FAILED, SUCCEEDED, SUBMITTED, TIMED_OUT, WAITING [mandatory];<br />
* status_message: a detailed message about the status [optional].<br />
<br />
=== Messages ===<br />
====Send a message====<br />
It is an HTTP POST method.<br />
<br />
The link to append to BASE_URL is<br />
<br />
<source lang="java"><br />
2/messages/write-message<br />
</source><br />
<br />
By default, the sender of the message is the owner of the gcube-token. According to the recipients' notifications preferences, they could receive a portal notification, an email notification and so on.<br />
<br />
Parameters, to be put in a JSON object are:<br />
<br />
* subject: the subject of the message to send;<br />
* body: the body of the message;<br />
* recipients: a list of valid comma separated users' ids (e.g., andrea.rossi, mario.rossi) or users' emails (e.g., andrea.rossi@isti.cnr.it, mario.rossi@isti.cnr.it);<br />
<br />
An example of the body of the request is as follows<br />
<source lang="xml"><br />
{"subject": "....", "body": ".....", "recipients":[{"id":"userid1"},{"id":"userid2"}]}<br />
</source><br />
<br />
or, if you want to use valid mails (i.e. recognized in the infrastructure)<br />
<source lang="xml"><br />
{"subject": "....", "body": ".....", "recipients":[{"id":"mail1"},{"id":"mail2"}]}<br />
</source><br />
<br />
====Get received messages====<br />
The link to append to BASE_URL is<br />
<br />
<source lang="java"><br />
2/messages/get-received-messages<br />
</source><br />
It is an http GET method.<br />
<br />
====Get sent messages====<br />
The link to append to BASE_URL is<br />
<br />
<source lang="java"><br />
2/messages/get-sent-messages<br />
</source><br />
It is an http GET method.<br />
=== Users ===<br />
====User exists====<br />
The link to append to BASE_URL is<br />
<br />
<source lang="java"><br />
2/users/user-exists<br />
</source><br />
<br />
The method requires<br />
<br />
* username: the username of the user which has to be checked.<br />
<br />
'''Note''' The method can be only invoked with a root-context application token.<br />
====Read user's custom fields====<br />
The link to append to BASE_URL is<br />
<br />
<source lang="java"><br />
2/users/get-custom-attribute<br />
</source><br />
<br />
The method requires<br />
<br />
* attribute: that is the name of a valid attribute to be read.<br />
====Get user's email====<br />
The link to append to BASE_URL is<br />
<br />
<source lang="java"><br />
2/users/get-email<br />
</source><br />
<br />
The method returns the email associated to the owner of the security token used.<br />
====Get user's profile====<br />
The link to append to BASE_URL is<br />
<br />
<source lang="java"><br />
2/users/get-profile<br />
</source><br />
<br />
The method returns the profile of the owner of the security token used.<br />
====Get user's fullname====<br />
The link to append to BASE_URL is<br />
<br />
<source lang="java"><br />
2/users/get-fullname<br />
</source><br />
<br />
The method returns the fullname associated to the owner of the security token used.<br />
====Get all users' usernames in VRE====<br />
The link to append to BASE_URL is<br />
<br />
<source lang="java"><br />
2/users/get-usernames<br />
</source><br />
<br />
The method returns the usernames of the context associated to the security token.<br />
<br />
====Get usernames by global role====<br />
The link to append to BASE_URL is<br />
<br />
<source lang="java"><br />
2/users/get-usernames-by-global-role<br />
</source><br />
<br />
The method requires<br />
<br />
* role-name: that is the name of the role to consider.<br />
<br />
'''''This method can be only invoked with an Infrastructure Token.'''''<br />
<br />
<br />
====Get usernames by role====<br />
The link to append to BASE_URL is<br />
<br />
<source lang="java"><br />
2/users/get-usernames-by-role<br />
</source><br />
<br />
The method requires<br />
<br />
* role-name: that is the name of the role to consider.<br />
<br />
=== VREs ===<br />
====Get User VREs====<br />
This method allows a user to retrieve the list of VREs she belongs to<br />
<br />
<source lang="java"><br />
2/vres/get-my-vres<br />
</source><br />
<br />
The method accepts an option parameter:<br />
* getManagers : if set to true, reports also the VRE Managers of the VRE<br />
<br />
== Troubleshooting ==<br />
<br />
There could be many reasons for a failed request. Please always check the HTTP CODE and the message within the response. <br />
<br />
=== HTTP Error Code ===<br />
This table tries to help you:<br />
<br />
{| border="1" cellpadding="20" cellspacing="0"<br />
!HTTP CODE<br />
!Meaning<br />
|-<br />
|400 - BAD_REQUEST<br />
|Please check the parameters you are passing<br />
|-<br />
|403 - FORBIDDEN<br />
|Is the token valid? / Does it belong to an application? [In case of application request]<br />
|-<br />
|404 - NOT_FOUND<br />
|The object(s) you are asking for is(are) not available<br />
|-<br />
|500 - INTERNAL_SERVER_ERROR<br />
|There was an error while serving your request (retry later)<br />
|-<br />
|}<br />
<br />
<br />
=== Always manage HTTP Redirects on POST requests (i.e. 30X codes) ===<br />
The service accepts both incoming http and https client requests, which are automatically redirect to https protocol by the reverse proxy nginx. This redirect mechanism must be taken into account when POST calls are performed, because it is not (always) supported and transparent by clients. In order to be sure, please check if you get a 30X error and extract the redirection urls within the response header. The following is a working java code that extract such information. It uses the apache-client library to perform http calls.<br />
<br />
<source lang="java"><br />
<br />
// build the client and the request<br />
String path = ... ; <br />
HttpClientBuilder clientBuilder = HttpClientBuilder.create();<br />
CloseableHttpClient httpClient = clientBuilder.build();<br />
HttpPost request = new HttpPost(path);<br />
JSONObject obj = new JSONObject();<br />
<br />
... // build the json object<br />
<br />
// set header properties<br />
request.addHeader("gcube-token", ...);<br />
request.addHeader("Content-type", ContentType.APPLICATION_JSON.toString());<br />
StringEntity params = new StringEntity(obj.toJSONString(), ContentType.APPLICATION_JSON);<br />
request.setEntity(params);<br />
HttpResponse response = httpClient.execute(request);<br />
logger.info(" " + response.getStatusLine().getStatusCode() + " and response message is " + response.getStatusLine().getReasonPhrase());<br />
<br />
int status = response.getStatusLine().getStatusCode();<br />
<br />
// check the response status and look if it was a redirect problem<br />
if (status != HttpURLConnection.HTTP_OK && (status == HttpURLConnection.HTTP_MOVED_TEMP ||<br />
status == HttpURLConnection.HTTP_MOVED_PERM ||<br />
status == HttpURLConnection.HTTP_SEE_OTHER)) {<br />
<br />
// redirect -> fetch new location<br />
Header[] locations = response.getHeaders("Location");<br />
Header lastLocation = locations[locations.length - 1];<br />
String realLocation = lastLocation.getValue();<br />
logger.debug("New location is " + realLocation);<br />
<br />
// perform again the same request<br />
request = new HttpPost(realLocation);<br />
request.addHeader("gcube-token", ...);<br />
request.addHeader("Content-type", ContentType.APPLICATION_JSON.toString());<br />
params = new StringEntity(obj.toJSONString(), ContentType.APPLICATION_JSON);<br />
request.setEntity(params);<br />
response = httpClient.execute(request);<br />
logger.info(" " + response.getStatusLine().getStatusCode() + " and response message is " + response.getStatusLine().getReasonPhrase());<br />
} else<br />
logger.debug(" " + response.getStatusLine().getStatusCode() + " and response message is " + response.getStatusLine().getReasonPhrase());<br />
</source><br />
<br />
= Service methods (Version 1) - DEPRECATED =<br />
In the following, the list of available sub-services available under the first version, its methods and the parameters they need in order to be called are reported. The gcube-token is always required so it won't be reported as parameter. <br />
<br />
'''This version has been replaced by version 2, please do not use this version and update your code asap.'''<br />
<br />
== List of available Sub-Services and methods ==<br />
=== Tokens ===<br />
==== Generate application token ====<br />
<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
tokens/generateApplicationToken<br />
</source><br />
<br />
First of all, you need to have a ''user gcube-token'' for authentication purposes. You can get it using the Token Generator portlet available on the VRE you are interesting the app will post in.<br />
Now, to get an ''application gcube-token'' you can invoke the method. It is an HTTP/POST method that accepts as parameters:<br />
<br />
* appid: the identifier of the application as reported in the Application Profile.<br />
<br />
For example, using the RESTClient plugin for Firefox you will have something like this for requiring a new application token:<br />
<br />
[[File:GenerateApplicationToken.png]]<br />
<br />
Push on the SEND button and if all it's ok, your application gcube-token will be generated and returned as ''plain text'' in the response within the HTTP response having code 201.<br />
=== Posts ['''DEPRECATED'''] ===<br />
==== Write application post ====<br />
<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
posts/writePostApplication<br />
</source><br />
<br />
By means of the application token requested with the above method, the app can write on the VRE for which the token has been previously requested. Just invoke this method, that accepts these parameters:<br />
<br />
* text: text of the post; <br />
* params: additional parameters if your application supports the direct opening of of this update's object e.g. id=12345&type=foo [optional];<br />
* previewtitle: a title for the preview of the post [optional];<br />
* previewdescription: a description for the preview of the post [optional];<br />
* httpimageurl: if you want to put an image, pass its url [optional];<br />
* enablenotification: a boolean value to enable notifications [optional].<br />
<br />
For example:<br />
<br />
[[File:WriteApplicationPost.png]]<br />
<br />
Push on SEND and check the code associated to the returned response (201 in case of success).<br />
<br />
==== Retrieve all application posts ====<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
posts/getAllPostsByApp<br />
</source><br />
<br />
In order to retrieve all the posts the application wrote (in every VRE it is allowed to write in) you can invoke this HTTP/GET method.<br />
<br />
For example, using your browser:<br />
<br />
<source lang="java"><br />
BASE_URL/posts/getAllPostsByApp?gcube-token=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyy<br />
</source><br />
<br />
If all goes ok, the response object has status code 200 and the posts are returned in JSON format.<br />
<br />
==== Retrieve all user posts ====<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
posts/getAllPostsByUser<br />
</source><br />
<br />
For example, using your browser:<br />
<br />
<source lang="java"><br />
BASE_URL/posts/getAllPostsByUser?gcube-token=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyy<br />
</source><br />
<br />
If all goes ok, the response object has status code 200 and the posts are returned in JSON format.<br />
<br />
==== Retrieve all user posts since a given date ====<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
posts/getRecentPostsByUserAndDate<br />
</source><br />
<br />
If you are interested in retrieving user's posts whose timestamps are greater than a given date you can invoke this method.<br />
This HTTP/GET method accepts this parameter:<br />
<br />
* time: the time of the oldest post to retrieve converted in milliseconds.<br />
<br />
For example, using your browser:<br />
<br />
<source lang="java"><br />
BASE_URL/posts/getRecentPostsByUserAndDate?gcube-token=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyy&time=xxxxx<br />
</source><br />
<br />
If all goes ok, the response object has status code 200 and the posts are returned in JSON format.<br />
<br />
==== Retrieve all user posts up to a given quantity ====<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
posts/getRecentPostsByUser<br />
</source><br />
<br />
If you are interested in retrieving user's posts, starting from the newest up to a given quantity you can invoke this method.<br />
This HTTP/GET method accepts two parameter:<br />
<br />
* quantity: a value greater than zero (the default value is 10).<br />
<br />
For example, using your browser:<br />
<br />
<source lang="java"><br />
BASE_URL/posts/getRecentPostsByUser?gcube-token=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyy&quantity=20<br />
</source><br />
<br />
<br />
If all goes ok, the response object has status code 200 and the posts are returned in JSON format.<br />
<br />
==== Write user post ['''DEPRECATED'''] ====<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
posts/writePostUser<br />
</source><br />
<br />
By means of a valid user token, he/she can write on the VRE for which the token has been previously requested. Just invoke this method, that accepts these parameters:<br />
<br />
* text: text of the post; <br />
* previewtitle: a title for the preview of the post [optional];<br />
* previewdescription: a description for the preview of the post [optional];<br />
* previewHost: [optional];<br />
* previewUrl: [optional];<br />
* httpimageurl: if you want to put an image, pass its url [optional];<br />
* enablenotification: a boolean value to enable notifications [optional];<br />
<br />
For example:<br />
<br />
[[File:Userpost.png]]<br />
<br />
Push on SEND and check the code associated to the returned response (201 in case of success).<br />
<br />
==== Retrieve the identifiers of the posts a user liked ====<br />
<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
posts/getAllLikedPostIdsByUser<br />
</source><br />
<br />
By means of this method a user can retrieve the identifiers of the posts he/she liked.<br />
<br />
For example, using your browser:<br />
<br />
<source lang="java"><br />
BASE_URL/posts/getAllLikedPostIdsByUser?gcube-token=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyy<br />
</source><br />
<br />
If all goes ok, the response object has status code 200 and the identifiers of the posts are returned in JSON format.<br />
<br />
==== Retrieve the posts a user liked ====<br />
<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
posts/getAllLikedPostsByUser<br />
</source><br />
<br />
By means of this method a user can retrieve the posts he/she liked. <br />
<br />
For example, using your browser:<br />
<br />
<source lang="java"><br />
BASE_URL/posts/getAllLikedPostsByUser?gcube-token=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyy<br />
</source><br />
<br />
If all goes ok, the response object has status code 200 and the posts are returned in JSON format.<br />
<br />
====Retrieve all vre posts====<br />
<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
posts/getAllPostsByVRE<br />
</source><br />
<br />
By means of this method a user that has a token valid for a certain VRE, can retrieve all the posts of that VRE.<br />
For example, using your browser:<br />
<br />
<source lang="java"><br />
BASE_URL/posts/getAllPostsByVRE?gcube-token=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyy<br />
</source><br />
<br />
If all goes ok, the response object has status code 200 and the posts are returned in JSON format.<br />
<br />
=== Notifications ===<br />
====Retrieve user's notifications in a given range====<br />
<br />
The link to append to '''Base_URL''' is the following:<br />
<br />
<source lang="java"><br />
notifications/getRangeNotificationsByUser<br />
</source><br />
<br />
By means of this method a user can retrieve his/her last notifications in the range [a, b]. The method requires:<br />
<br />
* from: an integer greater than zero;<br />
* quantity: an integer equal or greater than zero.<br />
<br />
The final range is evaluated as [from, from + quantity]<br />
<br />
For example, using your browser:<br />
<br />
<source lang="java"><br />
BASE_URL/notifications/getRangeNotificationsByUser?gcube-token=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyy&from=from&quantity=quantity<br />
</source><br />
<br />
If all goes ok, the response object has status code 200 and the posts are returned in JSON format.<br />
=== Messages ['''DEPRECATED'''] ===<br />
<br />
====Send a message====<br />
<br />
['''DEPRECATED'''] See version 2 above<br />
<br />
You can send a message via the web service by using the following POST method:<br />
<br />
* writeMessageToUsers<br />
<br />
The link to append to BASE_URL is<br />
<br />
<source lang="java"><br />
messages/writeMessageToUsers<br />
</source><br />
<br />
By default, the sender of the message is the owner of the gcube-token. If you need to specify a different "sender", you can do that by specifying the parameter sender. Furthermore, according to the recipients' notifications preferences, they could receive a portal notification, a mail notification and so on.<br />
<br />
Parameters are:<br />
<br />
* subject: the subject of the message to send;<br />
* body: the body of the message;<br />
* recipients: a list of valid comma separated users' ids (e.g., andrea.rossi, mario.rossi).<br />
* sender: a valid sender's id [optional]<br />
<br />
An example usage of the method is reported in the picture below (without specifying the sender):<br />
<br />
[[File:Send_message_example.png]]<br />
<br />
=== Users ===<br />
====Read user's custom fields====<br />
You can read user's custom attributes using the following method<br />
<br />
*readCustomAttr<br />
<br />
The link to append to BASE_URL is<br />
<br />
<source lang="java"><br />
users/readCustomAttr<br />
</source><br />
<br />
The ''read'' method requires<br />
<br />
* attribute: that is the name of a valid attribute to be read.<br />
For example, using your browser:<br />
<br />
<source lang="java"><br />
BASE_URL/users/readCustomAttr?gcube-token=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyy&attribute=attributeX<br />
</source><br />
<br />
= See Also =<br />
<br />
== D4Science Developers website ==<br />
[https://dev.d4science.org D4Science Developers website]<br />
<br />
== SWAGGER documentation==<br />
[https://dev.d4science.org/swagger/social-networking/ SWAGGER documentation of the Social-Networking RESTful interface]</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=About_gCube&diff=33691
About gCube
2020-12-02T10:05:24Z
<p>Pasquale.pagano: </p>
<hr />
<div>[http://www.gcube-system.org '''gCube'''] is the '''''Software System''''' designed and implemented to enable the building and operation of a '''''Service Oriented Infrastructure''''' supporting the definition of '''''[[Virtual Research Environment|Virtual Research Environments]]''''' (VREs). It is equipped with a rich array of "mediators" making it possible the exploitation of services, repositories, and facilities offered by others data and computing infrastructures.<br />
<br />
A ''Service Oriented Infrastructures'' is an infrastructure developed according to the Service Orientation principles, this reflects in facilities for the re-usability and dynamic allocation of the resources forming the infrastructure itself. A ''Virtual Research Environment'' is the materialization of a very ''flexible'' and ''agile'' application development model based on the notion of [http://en.wikipedia.org/wiki/Software_as_a_Service Software as a Service (SaaS)] in which components may be bound instantly, just at the time they are needed and then the binding may be discarded. According to it, user communities are enabled to define their own applications by simply selecting the application constituents (the services, the collections, the machines) among the pool of resources made available through the infrastructure. The cost of operating each defined VRE is completely outsourced to the infrastructure that by applying ''economies of scale'' to the operation of the applications (sharing and re-use) can offer better, cheaper and more reliable applications than single communities can themselves.<br />
<br />
This system has been implemented with the support of the European Commission in the context of a series of projects:<br />
<br />
* the Sixth Framework Programme for Research and Technological Development<br />
** [https://cordis.europa.eu/project/id/004260 DILIGENT] (grant no. 004260) - A Digital Library Infrastructure on Grid Enabled Technology<br />
* the Seventh Framework Programme for research, technological development and demonstration <br />
** [https://cordis.europa.eu/project/id/212488 D4Science] (grant no. 212488) - DIstributed colLaboratories Infrastructure on Grid ENabled Technology for Science;<br />
** [https://cordis.europa.eu/project/id/239019 D4Science-II] (grant no.239019) - DIstributed colLaboratories Infrastructure on Grid ENabled Technology for Science – Phase II;<br />
** [https://cordis.europa.eu/project/id/283465 ENVRI] (grant no. 283465) - Common Operations of Environmental Research Infrastructures;<br />
** [https://cordis.europa.eu/project/id/283644 iMarine] (grant no. 283644) - Data e-Infrastructure Initiative for Fisheries Management and Conservation of Marine Living Resources;<br />
** [https://cordis.europa.eu/project/id/288754 EUBrazilOpenBio] (grant no. 288754) - EU-Brazil Open Data and Cloud Computing e-Infrastructure for Biodiversity.<br />
* the H2020 research and innovation programme <br />
** [https://cordis.europa.eu/project/id/654024 SoBigData] (grant no. 654024) - SoBigData Research Infrastructure;<br />
** [https://cordis.europa.eu/project/id/654119 PARTHENOS] (grant no. 654119) - Pooling Activities, Resources and Tools for Heritage E-research Networking, Optimization and Synergies;<br />
** [https://cordis.europa.eu/project/id/654142 EGI-Engage] (grant no. 654142) - Engaging the EGI Community towards an Open Science Commons;<br />
** [https://cordis.europa.eu/project/id/654182 ENVRI PLUS] (grant no. 654182) - Environmental Research Infrastructures Providing Shared Solutions for Science and Society;<br />
** [https://cordis.europa.eu/project/id/675680 BlueBRIDGE] (grant no. 675680) - Building Research environments for fostering Innovation, Decision making, Governance and Education to support Blue growth;<br />
** [https://cordis.europa.eu/project/id/727610 PerformFISH] (grant no. 727610) - Consumer-driven Production: Integrating Innovative Approaches for Competitive and Sustainable Performance across the Mediterranean Aquaculture Value Chain;<br />
** [https://cordis.europa.eu/project/id/731001 AGINFRA PLUS] (grant no. 731001) - Accelerating user-driven e-infrastructure innovation in Food Agriculture;<br />
** [https://cordis.europa.eu/project/id/818194 DESIRA] (grant no. 818194) - Digitisation: Economic and Social Impacts in Rural Areas;<br />
** [https://cordis.europa.eu/project/id/823914 ARIADNEplus] (grant no. 823914) - Advanced Research Infrastructure for Archaeological Data Networking in Europe – plus;<br />
** [https://cordis.europa.eu/project/id/824091 RISIS 2] (grant no. 824091) - European Research Infrastructure for Science, technology and Innovation policy Studies 2;<br />
** [https://cordis.europa.eu/project/id/857650 EOSC-Pillar] (grant no. 857650);<br />
** [https://cordis.europa.eu/project/id/862409 Blue Cloud] (grant no. 862409) - Piloting innovative services for Marine Research & the Blue Economy;<br />
** [https://cordis.europa.eu/project/id/871042 SoBigData-PlusPlus] (grant no. 871042) - SoBigData Research Infrastructure;<br />
** [https://cordis.europa.eu/project/id/862739 MOVING] (grant no. 862739) - Mountain Valorization through Interconnectedness and Green Growth<br />
<br />
Some details on the specific developments are reported [[GCube_Development | here]].<br />
<br />
The rest of this Wiki is dedicated to providing pointers to various information on this system including: <br />
* [[GCube Features | distinguishing features]] devised to provide the reader with a feature-based characterisation of the system offerings; <br />
* [[GCube Documentation|documentation and guides]] specifically developed to serve the needs of three key players, i.e. end-users, system administrators and application developers.</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=About_gCube&diff=33690
About gCube
2020-12-02T10:02:20Z
<p>Pasquale.pagano: </p>
<hr />
<div>[http://www.gcube-system.org '''gCube'''] is the '''''Software System''''' designed and implemented to enable the building and operation of a '''''Service Oriented Infrastructure''''' supporting the definition of '''''[[Virtual Research Environment|Virtual Research Environments]]''''' (VREs). It is equipped with a rich array of "mediators" making it possible the exploitation of services, repositories, and facilities offered by others data and computing infrastructures.<br />
<br />
A ''Service Oriented Infrastructures'' is an infrastructure developed according to the Service Orientation principles, this reflects in facilities for the re-usability and dynamic allocation of the resources forming the infrastructure itself. A ''Virtual Research Environment'' is the materialization of a very ''flexible'' and ''agile'' application development model based on the notion of [http://en.wikipedia.org/wiki/Software_as_a_Service Software as a Service (SaaS)] in which components may be bound instantly, just at the time they are needed and then the binding may be discarded. According to it, user communities are enabled to define their own applications by simply selecting the application constituents (the services, the collections, the machines) among the pool of resources made available through the infrastructure. The cost of operating each defined VRE is completely outsourced to the infrastructure that by applying ''economies of scale'' to the operation of the applications (sharing and re-use) can offer better, cheaper and more reliable applications than single communities can themselves.<br />
<br />
This system has been implemented with the support of the European Commission in the context of a series of projects:<br />
<br />
* the Sixth Framework Programme for Research and Technological Development<br />
** [https://cordis.europa.eu/project/id/004260 DILIGENT] (grant no. 004260) - A Digital Library Infrastructure on Grid Enabled Technology<br />
* the Seventh Framework Programme for research, technological development and demonstration <br />
** [https://cordis.europa.eu/project/id/212488 D4Science] (grant no. 212488) - DIstributed colLaboratories Infrastructure on Grid ENabled Technology for Science;<br />
** [https://cordis.europa.eu/project/id/239019 D4Science-II] (grant no.239019) - DIstributed colLaboratories Infrastructure on Grid ENabled Technology for Science – Phase II;<br />
** [https://cordis.europa.eu/project/id/283465 ENVRI] (grant no. 283465) - Common Operations of Environmental Research Infrastructures;<br />
** [https://cordis.europa.eu/project/id/283644 iMarine] (grant no. 283644) - Data e-Infrastructure Initiative for Fisheries Management and Conservation of Marine Living Resources;<br />
** [https://cordis.europa.eu/project/id/288754 EUBrazilOpenBio] (grant no. 288754) - EU-Brazil Open Data and Cloud Computing e-Infrastructure for Biodiversity.<br />
* the H2020 research and innovation programme <br />
** [https://cordis.europa.eu/project/id/654024 SoBigData] (grant no. 654024 - SoBigData Research Infrastructure);<br />
** [https://cordis.europa.eu/project/id/654119 PARTHENOS] (grant no. 654119) - Pooling Activities, Resources and Tools for Heritage E-research Networking, Optimization and Synergies;<br />
** [https://cordis.europa.eu/project/id/654142 EGI-Engage] (grant no. 654142) - Engaging the EGI Community towards an Open Science Commons;<br />
** [https://cordis.europa.eu/project/id/654182 ENVRI PLUS] (grant no. 654182) - Environmental Research Infrastructures Providing Shared Solutions for Science and Society;<br />
** [https://cordis.europa.eu/project/id/675680 BlueBRIDGE] (grant no. 675680) - Building Research environments for fostering Innovation, Decision making, Governance and Education to support Blue growth;<br />
** [https://cordis.europa.eu/project/id/727610 PerformFISH] (grant no. 727610) - Consumer-driven Production: Integrating Innovative Approaches for Competitive and Sustainable Performance across the Mediterranean Aquaculture Value Chain;<br />
** [https://cordis.europa.eu/project/id/731001 AGINFRA PLUS] (grant no. 731001) - Accelerating user-driven e-infrastructure innovation in Food Agriculture;<br />
** [https://cordis.europa.eu/project/id/818194 DESIRA] (grant no. 818194) - Digitisation: Economic and Social Impacts in Rural Areas;<br />
** [https://cordis.europa.eu/project/id/823914 ARIADNEplus] (grant no. 823914) - Advanced Research Infrastructure for Archaeological Data Networking in Europe – plus;<br />
** [https://cordis.europa.eu/project/id/824091 RISIS 2] (grant no. 824091) - European Research Infrastructure for Science, technology and Innovation policy Studies 2;<br />
** [https://cordis.europa.eu/project/id/857650 EOSC-Pillar] (grant no. 857650);<br />
** [https://cordis.europa.eu/project/id/862409 Blue Cloud] (grant no. 862409) - Piloting innovative services for Marine Research & the Blue Economy;<br />
** [https://cordis.europa.eu/project/id/871042 SoBigData-PlusPlus] (grant no. 871042) - SoBigData Research Infrastructure;<br />
** [https://cordis.europa.eu/project/id/862739 MOVING] (grant no. 862739) - Mountain Valorization through Interconnectedness and Green Growth<br />
<br />
Some details on the specific developments are reported [[GCube_Development | here]].<br />
<br />
The rest of this Wiki is dedicated to providing pointers to various information on this system including: <br />
* [[GCube Features | distinguishing features]] devised to provide the reader with a feature-based characterisation of the system offerings; <br />
* [[GCube Documentation|documentation and guides]] specifically developed to serve the needs of three key players, i.e. end-users, system administrators and application developers.</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=About_gCube&diff=33689
About gCube
2020-12-02T09:55:58Z
<p>Pasquale.pagano: </p>
<hr />
<div>[http://www.gcube-system.org '''gCube'''] is the '''''Software System''''' designed and implemented to enable the building and operation of a '''''Service Oriented Infrastructure''''' supporting the definition of '''''[[Virtual Research Environment|Virtual Research Environments]]''''' (VREs). It is equipped with a rich array of "mediators" making it possible the exploitation of services, repositories, and facilities offered by others data and computing infrastructures.<br />
<br />
A ''Service Oriented Infrastructures'' is an infrastructure developed according to the Service Orientation principles, this reflects in facilities for the re-usability and dynamic allocation of the resources forming the infrastructure itself. A ''Virtual Research Environment'' is the materialization of a very ''flexible'' and ''agile'' application development model based on the notion of [http://en.wikipedia.org/wiki/Software_as_a_Service Software as a Service (SaaS)] in which components may be bound instantly, just at the time they are needed and then the binding may be discarded. According to it, user communities are enabled to define their own applications by simply selecting the application constituents (the services, the collections, the machines) among the pool of resources made available through the infrastructure. The cost of operating each defined VRE is completely outsourced to the infrastructure that by applying ''economies of scale'' to the operation of the applications (sharing and re-use) can offer better, cheaper and more reliable applications than single communities can themselves.<br />
<br />
This system has been implemented with the support of the European Commission in the context of a series of projects:<br />
<br />
* the Sixth Framework Programme for Research and Technological Development<br />
** [https://cordis.europa.eu/project/id/004260 DILIGENT] (grant no. 004260) - A Digital Library Infrastructure on Grid Enabled Technology<br />
* the Seventh Framework Programme for research, technological development and demonstration <br />
** [https://cordis.europa.eu/project/id/212488 D4Science] (grant no. 212488) - DIstributed colLaboratories Infrastructure on Grid ENabled Technology for Science;<br />
** [D4Science-II](https://cordis.europa.eu/project/id/239019) (grant no.239019) - DIstributed colLaboratories Infrastructure on Grid ENabled Technology for Science – Phase II;<br />
** [ENVRI](https://cordis.europa.eu/project/id/283465) (grant no. 283465) - Common Operations of Environmental Research Infrastructures;<br />
** [iMarine](https://cordis.europa.eu/project/id/283644) (grant no. 283644) - Data e-Infrastructure Initiative for Fisheries Management and Conservation of Marine Living Resources;<br />
** [EUBrazilOpenBio](https://cordis.europa.eu/project/id/288754) (grant no. 288754) - EU-Brazil Open Data and Cloud Computing e-Infrastructure for Biodiversity.<br />
* the H2020 research and innovation programme <br />
** [SoBigData](https://cordis.europa.eu/project/id/654024) (grant no. 654024 - SoBigData Research Infrastructure);<br />
** [PARTHENOS](https://cordis.europa.eu/project/id/654119) (grant no. 654119) - Pooling Activities, Resources and Tools for Heritage E-research Networking, Optimization and Synergies;<br />
** [EGI-Engage](https://cordis.europa.eu/project/id/654142) (grant no. 654142) - Engaging the EGI Community towards an Open Science Commons;<br />
** [ENVRI PLUS](https://cordis.europa.eu/project/id/654182) (grant no. 654182) - Environmental Research Infrastructures Providing Shared Solutions for Science and Society;<br />
** [BlueBRIDGE](https://cordis.europa.eu/project/id/675680) (grant no. 675680) - Building Research environments for fostering Innovation, Decision making, Governance and Education to support Blue growth;<br />
** [PerformFISH](https://cordis.europa.eu/project/id/727610) (grant no. 727610) - Consumer-driven Production: Integrating Innovative Approaches for Competitive and Sustainable Performance across the Mediterranean Aquaculture Value Chain;<br />
** [AGINFRA PLUS](https://cordis.europa.eu/project/id/731001) (grant no. 731001) - Accelerating user-driven e-infrastructure innovation in Food Agriculture;<br />
** [DESIRA](https://cordis.europa.eu/project/id/818194) (grant no. 818194) - Digitisation: Economic and Social Impacts in Rural Areas;<br />
** [ARIADNEplus](https://cordis.europa.eu/project/id/823914) (grant no. 823914) - Advanced Research Infrastructure for Archaeological Data Networking in Europe – plus;<br />
** [RISIS 2](https://cordis.europa.eu/project/id/824091) (grant no. 824091) - European Research Infrastructure for Science, technology and Innovation policy Studies 2;<br />
** [EOSC-Pillar](https://cordis.europa.eu/project/id/857650) (grant no. 857650);<br />
** [Blue Cloud](https://cordis.europa.eu/project/id/862409) (grant no. 862409) - Piloting innovative services for Marine Research & the Blue Economy;<br />
** [SoBigData-PlusPlus](https://cordis.europa.eu/project/id/871042) (grant no. 871042) - SoBigData Research Infrastructure;<br />
** [MOVING]( https://cordis.europa.eu/project/id/862739) (grant no. 862739) - Mountain Valorization through Interconnectedness and Green Growth<br />
<br />
Some details on the specific developments are reported [[GCube_Development | here]].<br />
<br />
The rest of this Wiki is dedicated to providing pointers to various information on this system including: <br />
* [[GCube Features | distinguishing features]] devised to provide the reader with a feature-based characterisation of the system offerings; <br />
* [[GCube Documentation|documentation and guides]] specifically developed to serve the needs of three key players, i.e. end-users, system administrators and application developers.</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=SmartExecutor&diff=33572
SmartExecutor
2020-10-16T09:17:32Z
<p>Pasquale.pagano: </p>
<hr />
<div>[[Category: Developer's Guide]]<br />
<br />
'''A new RESTful version of the Smart Executor (version 2.0) is available. The wiki will be updated ASAP.'''<br />
<br />
The SmartExecutor service allows to execute "gCube Tasks" and monitor their execution status. Each instance of the SmartExecutor service can run the "gCube Tasks" related to the plugins available on such an instance.<br />
<br />
Each instance of the SmartExecutor service publishes descriptive information about the co-deployed plugins.<br />
<br />
Clients may interact with the SmartExecutor service through a library (SmartExecutor Client) of high-level facilities to simplify the discovery of available plugins in those instances.<br />
Each client can request to execute a "gCube Tasks" or getting informations about the state of their execution.<br />
<br />
== The Service ==<br />
<br />
SmartExecutor service allows tasks execution through the use of co-deployed plugins. The service allows to pass inputs parameter to the plugin requested to run.<br />
<br />
The execution is invoked every time it matches the scheduling parameters. The way to schedule the plugin execution is indicated by scheduling parameter (see [[SmartExecutor#Launch_Inputs | Launch Inputs]]).<br />
Passing a null scheduling means a one shot execution, that is start immediately and just one time. Moreover, a new SmartExecutor instance could take care of a plugin when the node on which it was previously allocated crashes or is overloaded.<br />
<br />
In the following we will use these notations<br />
<br />
* <b>run and die </b> plugin: the plugin is launched just for one time and after this execution it won't be repeated;<br />
* <b>scheduled</b> plugin: the plugin repeat its execution over time according a delay interval or a more complex cron expression.<br />
<br />
Details will be analyzed in the following.<br />
<br />
== Plugins ==<br />
<br />
At startup time the SmartExecutor discover the available plugins (using java.util.ServiceLoader). For each discovered plugin the SmartExecutor gather some mandatory information (e.g. version, name) and asks to the plugin to discover the capabilities of the machine. The discovered capabilities can be used by clients to select one instance instead of another (e.g. available python version, available R version, a certain hardware capability). The machine capabilities are plugin dependend so that is responsibility of the plugin to discover them.<br />
<br />
The SmartExecutor publish the mandatory information and the discovered capabilities on IS using a ServiceEndpoint with '''Category''': ''VREManagement'' and '''Name''': ''SmartExecutor''.<br />
<br />
The [[SmartExecutor#Client|SmartExecutor Client]] search for this service endpoints to retrieve available SmartExecutor instances running a certain plugin.<br />
<br />
== Client ==<br />
<br />
The SmartExecutor service provides a client library to simplify the following procedures:<br />
<br />
* discover service instances that can execute the target task. This requires interaction with the Information System.<br />
* launch the execution of the task with one the discovered instances.<br />
* monitor the execution of the running task.<br />
<br />
In order to use the SmartExecutor client library, you have to declare this dependency in your pom.xml file<br />
<br />
<source lang="xml"><br />
<dependency><br />
<groupId>org.gcube.vremanagement</groupId><br />
<artifactId>smart-executor-client</artifactId><br />
</dependency><br />
</source><br />
<br />
You can now instanciate the SmartExecutorProxy object that will allow you to perform the operations cited above:<br />
<br />
<source lang="java"><br />
// instanciate the proxy (you need the plugin name)<br />
SmartExecutorProxy proxy = ExecutorPlugin.getExecutorProxy(YourSmartExecutorPlugin.NAME).build();<br />
<br />
// launch the plugin passing the inputs it needs<br />
Map<String, Object> inputs = new HashMap<String, Object>();<br />
<br />
...<br />
<br />
// set the parameters (give the inputs, the scheduling options and so on)<br />
LaunchParameter parameter = new LaunchParameter(YourSmartExecutorPlugin.NAME, inputs);<br />
parameter.setScheduling(...);<br />
<br />
// launch (for example one shot)<br />
String uuidPluginLaunched = proxy.launch(parameter);<br />
<br />
// after a while you can check the status of the launch, for example<br />
PluginState state = proxy.getState(uuidPluginLaunched);<br />
<br />
switch(state){<br />
case CREATED : ....;<br />
case DONE : ....;<br />
case FAILED : ....;<br />
case ... : ....;<br />
default : ....;<br />
}<br />
<br />
</source><br />
<br />
=== Instance Discovery ===<br />
SmartExecutor Client provide some facilities to get the SmartExecutor service instances. <br />
<br />
It allows to retrieve one of the the running SmartExecutor services filtering them in the following way:<br />
* By plugin name only (that's the case in the example shown above);<br />
* By plugin name AND one or more of the following filters:<br />
** KEY-VALUE list. Each KEY-VALUE must be found on the Service Endpoints.<br />
** XQuery conditions to filter the Service Endpoints. The conditions are added to the standard query performed.<br />
** List of endpoints to be selected within the available one.<br />
<br />
In the latter cases you can use the following available functions:<br />
<br />
<source lang="java"><br />
<br />
public static ProxyBuilder<SmartExecutorProxy> getExecutorProxy(String pluginName, Tuple<String, String> ... tuples);<br />
<br />
public static ProxyBuilder<SmartExecutorProxy> getExecutorProxy(String pluginName, <br />
Tuple<String, String>[] tuples, <br />
ServiceEndpointQueryFilter serviceEndpointQueryFilter,<br />
EndpointDiscoveryFilter endpointDiscoveryFilter);<br />
</source><br />
<br />
Using SmartExecutor Client a proxy for remote invocation can be obtained. Using this proxy is very easy to call a remote method as the method was local.<br />
<br />
== Managing Tasks ==<br />
<br />
One of the API exposed by the SmartExecutor service is used to launch a plugin execution instance.<br />
Each time a task launch is executed the service (after some checks) create a separated thread, instantiate the related plugin and invoke the execution passing inputs parameters.<br />
The service return immediately after the task is launched (task is executed asynchronously) The string representation of the ID (an UUID) is retuned to the clients. That ID can be used to monitor the task execution.<br />
<br />
=== Launch Inputs ===<br />
<br />
The invocation parameters are:<br />
* '''name''' of the plugin to be instantiated and run ('''MANDATORY''')<br />
* '''inputs''' to pass to plugin instance execution ('''MANDATORY''')<br />
* '''capabilities''' the plugin has to satisfy to correctly run an execution (e.g. the machine has a certain version of python interpreter) ('''OPTIONAL''')<br />
* '''scheduling''' strategy to launch the execution (e.g. every day at 22:00) ('''OPTIONAL''')<br />
* '''persist''' if the scheduling has to be persisted. If the SmartExecutor instance terminate another SmartExecutor must take in charge that scheduling. Due to a scheduling can survive over the time is strongly recommend to declare the needed capabilities.<br />
<br />
Please note that the '''capabilities''' matches are checked before launching the plugin execution. This is a service check and is conceptually different from filtering an instance at discovery time using the client.<br />
<br />
As earlier stated, plugins can be launched and executed just one time (<b>run and die</b>), or <b>scheduled</b>. The schedule parameter can be set in different ways, some examples are reported below<br />
<br />
<source lang="java"><br />
<br />
// Specifying a simple delay parameter (minimum time between two executions) and the number of times the plugin should execute<br />
Scheduling scheduling = new Scheduling(1000 * 60, 50); // perform 50 iterations with 1 minute delay between two of them<br />
// If you do not specify the number of iterations, the plugin <br />
// will be executed once<br />
<br />
// Using a CronExpression<br />
CronExpression cronExpression = new CronExpression("0 */10 * * * ?"); // every 10 minutes starting from now<br />
Scheduling scheduling = new Scheduling(cronExpression, true); // the true parameter specifies that before starting a new execution, <br />
// the previous one must be terminated <br />
// (otherways the new one will be deferred)<br />
<br />
<br />
</source><br />
<br />
Finally, set the schedule parameter you defined above by using a LaunchParameter object passed to the launch() method.<br />
<br />
<source lang="java"><br />
<br />
LaunchParameter parameter = new LaunchParameter(SimpleExamplePlugin.NAME, inputs);<br />
parameter.setScheduling(scheduling);<br />
<br />
// launch with the above parameters<br />
String uuidLaunchedPlugin = proxy.launch(parameter);<br />
<br />
</source><br />
<br />
=== Monitor Task Execution ===<br />
The ID returned invoking the launch can be used to monitor an execution.<br />
<br />
The possible state for a task are:<br />
<br />
* '''''CREATED''''' : The Task is created but not still running.<br />
* '''''RUNNING''''' : The Task is running.<br />
* '''''STOPPED''''' : The Task has been stopped.<br />
* '''''DONE''''' : The Task terminated successfully.<br />
* '''''FAILED''''' : The Task failed the execution.<br />
* '''''DISCARDED''''' : The Task has been discarded by the scheduler. This happen only for repetitive or recurrent tasks and only when the launch parameter require that the previous task must be completed.<br />
<br />
The are two API to monitor a task execution.<br />
* The first one to retrieve the current state of the last execution.<br />
* The second one to retrieve the current state of the nth execution (execution number). <br />
<br />
The latter is used to monitor '''''scheduled''''' tasks. The execution number is used to identify the nth run launched respecting the scheduling strategy.<br />
<br />
To monitor the '''''run and die''''' tasks the first API should be used. You could use the second API providing the value 1 for (execution number).<br />
<br />
Requesting the state for en execution that has not been performed raise an exception. The methods invocation are the following for the two cases:<br />
<br />
<source lang="java"><br />
<br />
// retrieve the state about the last execution<br />
PluginState state = proxy.getState(uuidPluginLaunched);<br />
<br />
// retrieve the state about the n-th execution<br />
PluginState stateN = proxy.getState(uuidPluginLaunched, executionNumber);<br />
<br />
</source><br />
<br />
=== Unschedule a Task Execution ===<br />
<br />
There is an API to stop a running execution. When stopped the final state will be set to '''''STOPPED''''.<br />
If the task was already finished this method has no effect. The task to be stopped is identified by the ID returned from launch method.<br />
<br />
This method stop the current execution, if any. If the plugin is scheduled to be repeated the method stops only the current execution.<br />
If this method is used on a Run and Die task the effect is stopping the current execution if any.<br />
<br />
<source lang="java"><br />
<br />
// stop (or at least try to stop) the execution of the plugin given its uuid<br />
boolean stopped = proxy.stop(uuidPluginLaunched);<br />
<br />
</source><br />
<br />
There is also an advanced mechanism that takes into account the fact that the plugin schedule can be of type repeat and/or that another <br />
SmartExecutor node must take care of a plugin that was running on a node that went down or is overloaded.<br />
<br />
<source lang="java"><br />
<br />
// Unschedule the current execution and if the task was of type repeat, no other iteration will occur.<br />
// If the task was set to be Global, no other iteration will be launched on the current node, but another<br />
// SmartExecutor node will take care of it.<br />
boolean unscheduled = proxy.unSchedule(uuidPluginLaunched);<br />
<br />
// unschedule globally (stop current iteration and the following ones on any node)<br />
boolean unscheduled = proxy.unSchedule(uuidPluginLaunched, true);<br />
<br />
</source><br />
<br />
== Plugin Development ==<br />
Each plugin must declare:<br />
* Name<br />
* Version<br />
* Description<br />
<br />
Moreover the plugin is able to discover the machine capabilities it wants to publish, to allows clients to filters instances, by providing them as a key-value map<br />
<br />
The mandatory information and the discovered capabilities are published in the ServiceEndpoint by the SmartExecutor service.<br />
<br />
SmartExecutor plugins may have arbitrary size and dependencies.<br />
<br />
Each plugin must implements at least two classes:<br />
* The first one has to extend the '''''org.gcube.vremanagement.executor.plugin.PluginDeclaration''''' interface. This class is responsible of providing the mandatory information and discover the capabilities. this class is used by the SmartExecutor service just one time at application startup, to populate the ServiceEndpoint.<br />
* The second class had to implement '''''org.gcube.vremanagement.executor.plugin.Plugin<? extends PluginDeclaration>''''' class. This class must implements two method. The first one responsible to launch the plugin execution with the provided input parameters. The second method is used to perform termination actions when an execution is stopped due to a client request.<br />
<br />
=== Maven Dependencies ===<br />
The Maven dependencies you need to develop a SmartExecutorPlugin are the following:<br />
<br />
<source lang="xml"><br />
<dependency><br />
<groupId>org.gcube.vremanagement</groupId><br />
<artifactId>smart-executor-api</artifactId><br />
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version><br />
</dependency><br />
<dependency><br />
<groupId>org.slf4j</groupId><br />
<artifactId>slf4j-api</artifactId><br />
<scope>provided</scope><br />
</dependency><br />
</source><br />
You are suggested to use a logging mechanism rather than write your debug messages on the console, so please add the slf4j library to your pom too.<br />
Of course, you can put inside the pom.xml whatever dependency you need but you need to set its scope at compile. In fact, the final .jar package will contain all the needed classes.<br />
<br />
=== Simple Plugin Example ===<br />
As earlier stated, your project needs at least two classes. The first class must extend the PluginDeclaration interface. Its structure can be as simple as this<br />
<br />
<source lang="java"><br />
package org.gcube.seplugin;<br />
<br />
/**<br />
* Your first amazing SE plugin.<br />
* @author ...<br />
*/<br />
public class SimpleExamplePluginDeclaration implements PluginDeclaration {<br />
<br />
/**<br />
* Logger<br />
*/<br />
private static Logger logger = LoggerFactory.getLogger(SimpleExamplePluginDeclaration.class);<br />
<br />
/**<br />
* Plugin name used by the Executor to retrieve this class<br />
*/<br />
public static final String NAME = "simple-plugin-example-name";<br />
public static final String DESCRIPTION = "Simple plugin example description";<br />
public static final String VERSION = "1.0.0";<br />
<br />
/**{@inheritDoc}*/<br />
@Override<br />
public void init() {<br />
logger.debug(String.format("%s initialized", SimpleExamplePluginDeclaration.class.getSimpleName()));<br />
}<br />
<br />
/**{@inheritDoc}*/<br />
@Override<br />
public String getName() {<br />
return NAME;<br />
}<br />
<br />
/**{@inheritDoc}*/<br />
@Override<br />
public String getDescription() {<br />
return DESCRIPTION;<br />
}<br />
<br />
/**{@inheritDoc}*/<br />
@Override<br />
public String getVersion() {<br />
return VERSION;<br />
}<br />
<br />
/**{@inheritDoc}*/<br />
@Override<br />
public Map<String, String> getSupportedCapabilities() {<br />
Map<String, String> discoveredCapabilities = new HashMap<String, String>();<br />
// No capabilities to discover<br />
return discoveredCapabilities;<br />
}<br />
<br />
/**{@inheritDoc}*/<br />
@Override<br />
public Class<? extends Plugin<? extends PluginDeclaration>> getPluginImplementation() {<br />
return SimpleExamplePluginDeclaration.class;<br />
}<br />
<br />
@Override<br />
public String toString(){<br />
return String.format("%s : %s - %s - %s - %s - %s", <br />
this.getClass().getSimpleName(), <br />
getName(), getVersion(), getDescription(), <br />
getSupportedCapabilities(), <br />
getPluginImplementation().getClass().getSimpleName());<br />
}<br />
}<br />
</source><br />
<br />
<br><br />
<br />
Now, the real body of the plugin must be written inside the SimpleExamplePlugin.class that extends the Plugin<SimpleExamplePluginDeclaration> class.<br />
<source lang="java"><br />
package org.gcube.seplugin;<br />
<br />
public class SimpleExamplePlugin extends Plugin<SimpleExamplePluginDeclaration>{<br />
<br />
/**<br />
* Logger<br />
*/<br />
private static Logger logger = LoggerFactory.getLogger(SimpleExamplePlugin.class);<br />
<br />
public SimpleExamplePlugin(SimpleExamplePluginDeclaration pluginDeclaration){<br />
<br />
super(pluginDeclaration);<br />
logger.debug("Constructor");<br />
<br />
}<br />
<br />
/**{@inheritDoc}*/<br />
@Override<br />
public void launch(Map<String, Object> inputs){<br />
<br />
// Here you put the code you want to execute<br />
}<br />
<br />
<br />
/**{@inheritDoc}*/<br />
@Override<br />
protected void onStop() throws Exception {<br />
<br />
// code call on stop() or unschedule()<br />
logger.debug("onStop()");<br />
Thread.currentThread().interrupt();<br />
<br />
}<br />
}<br />
</source><br />
<br />
<br><br />
In order to be discoverable by the ServiceLoader, your plugin project must have under the src/main/resources directory <br />
* the subdirectory <b>META_INF/services</b>;<br />
* inside the subdirectory a file named <b> org.gcube.vremanagement.executor.plugin.PluginDeclaration </b>;<br />
* inside this file the fully qualified name of the plugin declaration class (in the previous example it would be <i> org.gcube.seplugin.SimpleExamplePluginDeclaration </i>)<br />
<br />
Now you can create the .jar package of your SimpleExamplePlugin and deploy it on a SmartExecutorNode, under the path <b>tomcat/webapps/smart-executor/WEB-INF/lib/</b> and launch it as shown in [https://wiki.gcube-system.org/gcube/SmartExecutor#Client SmartExecutor#Client].<br />
<br />
A simple plugin project is available at the following url<br />
https://code-repo.d4science.org/gCubeSystem/hello-world-se-plugin<br />
<br />
Check it out to better understand a plugin skeleton.</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Statistical_Algorithms_Importer:_Docker_Support&diff=33562
Statistical Algorithms Importer: Docker Support
2020-09-24T12:56:28Z
<p>Pasquale.pagano: /* The Algorithm Docker Image Executor (DIE) */</p>
<hr />
<div>{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
A Docker image represents an easy-way to deliver software in packages called containers. Containers are isolated from one another and bundle their own software, libraries and configuration files and thus they may contribute to simplifying the configuration of the D4Science infrastructure. <br />
D4Science delivers a solution allowing to exploit Docker while preserving the main features of the D4Science infrastructure: replicability, reusability, sharing, accounting of the execution will all be preserved by following and exploiting the Docker Image Executor. <br />
<br />
This page explains how to create and run Docker Images in the D4Science infrastructure through the [[DataMiner_Manager|DataMiner Manager]] service and the algorithms developed with the [[Statistical_Algorithms_Importer|Statistical Algorithms Importer (SAI)]]. Currently, for this purpose there is the [https://services.d4science.org/group/rprototypinglab/data-miner?OperatorId=org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.DOCKER_IMAGE_EXECUTOR Docker Image Executor (DIE)] algorithm. More information on Docker can be found [https://www.docker.com/ here].<br />
<br />
== The Algorithm Docker Image Executor (DIE) ==<br />
The [https://services.d4science.org/group/rprototypinglab/data-miner?OperatorId=org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.DOCKER_IMAGE_EXECUTOR Docker Image Executor (DIE)] algorithm allows you to retrieve and run a image in D4Science Swarm cluster, from a [http://hub.docker.com Docker Hub] repository (Attention only public repositories are supported).<br />
The DIE is already present and accessible on the D4Science infrastructure:<br />
<br />
[[Image:DockerImageExecutor1.png|thumb|center|800px|Docker Image Executor (DIE), Docker Support]]<br />
<br />
To run the DIE algorithm the user must enter:<br />
<br />
* '''Image''', the name of the repository (e.g. d4science/sortapp)<br />
* '''CommandName''', the name of the command to invoke when the service is started (e.g. sortapp)<br />
* '''FileParam''', a file present in the user's workspace to be passed as an input parameter along with the run command (e.g. [https://data.d4science.net/XH5K sortableelements.txt])<br />
<br />
This algorithm will take care of retrieving the user token and passing the parameters to the Docker Service in this format:<br />
<br />
<pre><br />
<command-name> <token> <file-item-id> <temp-dir-item-id><br />
</pre><br />
<br />
The algorithm not only delivers the token and the input file. to the service created starting from the chosen image. Rather, it also delivers the id of the temporary folder that was created on the [[StorageHub_REST_API|StorageHub]] service. This folder will be used to contain the computation results. The service created from the chosen image will be responsible for saving the data of its own computation in the folder indicated by the algorithm interacting with the [[StorageHub_REST_API|StorageHub]] service. When the execution of the Docker Service is completed and the results saved on the temporary folder, the [https://services.d4science.org/group/rprototypinglab/data-miner?OperatorId=org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.DOCKER_IMAGE_EXECUTOR Docker Image Executor (DIE)] algorithm will take care of returning the result as a zip file of the temporary folder. So, it is important that the Docker Image is written with these constraints in mind.<br />
<br />
=== How Create A Docker Image ===<br />
<br />
An example of how to create a Docker Image suitable for running via the DIE algorithm is shown [https://code-repo.d4science.org/gCubeSystem/sortapp here]. This image is built starting from the base python:3.6-alpine image and installing the sortapp application written in python3.6 (see [https://code-repo.d4science.org/gCubeSystem/sortapp/src/branch/master/Dockerfile Dockerfile]).<br />
<br />
: The image is available on Docker Hub here: [https://hub.docker.com/repository/docker/d4science/sortapp d4science/sortapp]<br />
<br />
The sortapp application built in this example simply does the sorting of strings. The strings are contained in the file indicated by the FileParam parameter.<br />
<br />
This is just an example since the image could also be constructed using other languages and different base images.<br />
It is instead mandatory that the software packed in the image accepts the parameters as passed by the DIE and respects the constraint to save the results in the temporary folder on [[StorageHub_REST_API|StorageHub]] as indicated.<br />
<br />
<!--<br />
==References==<br />
{{Reflist}} --><br />
<br />
<br />
<!--<br />
[[Template:Statistical Algorithms Importer]] <br />
--><br />
<br />
[[Category:Statistical Algorithms Importer]]<br />
[[Category:DataMiner]]</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Statistical_Algorithms_Importer:_Docker_Support&diff=33561
Statistical Algorithms Importer: Docker Support
2020-09-24T12:49:11Z
<p>Pasquale.pagano: </p>
<hr />
<div>{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
A Docker image represents an easy-way to deliver software in packages called containers. Containers are isolated from one another and bundle their own software, libraries and configuration files and thus they may contribute to simplifying the configuration of the D4Science infrastructure. <br />
D4Science delivers a solution allowing to exploit Docker while preserving the main features of the D4Science infrastructure: replicability, reusability, sharing, accounting of the execution will all be preserved by following and exploiting the Docker Image Executor. <br />
<br />
This page explains how to create and run Docker Images in the D4Science infrastructure through the [[DataMiner_Manager|DataMiner Manager]] service and the algorithms developed with the [[Statistical_Algorithms_Importer|Statistical Algorithms Importer (SAI)]]. Currently, for this purpose there is the [https://services.d4science.org/group/rprototypinglab/data-miner?OperatorId=org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.DOCKER_IMAGE_EXECUTOR Docker Image Executor (DIE)] algorithm. More information on Docker can be found [https://www.docker.com/ here].<br />
<br />
== The Algorithm Docker Image Executor (DIE) ==<br />
The [https://services.d4science.org/group/rprototypinglab/data-miner?OperatorId=org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.DOCKER_IMAGE_EXECUTOR Docker Image Executor (DIE)] algorithm allows you to retrieve and run a image in D4Science Swarm cluster, from a [http://hub.docker.com Docker Hub] repository (Attention only public repositories are supported).<br />
The DIE is already present and accessible on the D4Science infrastructure:<br />
<br />
[[Image:DockerImageExecutor1.png|thumb|center|800px|Docker Image Executor (DIE), Docker Support]]<br />
<br />
To run the DIE algorithm the user must enter:<br />
<br />
* '''Image''', the name of the repository (e.g. d4science/sortapp)<br />
* '''CommandName''', the name of the command to invoke when the service is started (e.g. sortapp)<br />
* '''FileParam''', a file present in the user's workspace to be passed as an input parameter along with the run command (e.g. [https://data.d4science.net/XH5K sortableelements.txt])<br />
<br />
This algorithm will take care of retrieving the user token and passing the parameters to the Docker Service in this format:<br />
<br />
<pre><br />
<command-name> <token> <file-item-id> <temp-dir-item-id><br />
</pre><br />
<br />
In addition to passing the token and the input file, the algorithm also passes the id of the temporary folder that was created on the [[StorageHub_REST_API|StorageHub]] service to contain the computation results. The service created from the chosen image will be responsible for saving the data of its own computation in the folder indicated by the algorithm interacting with the [[StorageHub_REST_API|StorageHub]] service. When the execution of the Docker Service is finished, that is, it will have created the results and saved on the temporary folder, then the [https://services.d4science.org/group/rprototypinglab/data-miner?OperatorId=org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.DOCKER_IMAGE_EXECUTOR Docker Image Executor (DIE)] algorithm will take care of returning the result as a zip file of the temporary folder. So, it is important that the Docker Image is written with these constraints in mind.<br />
<br />
=== How Create A Docker Image ===<br />
<br />
An example of how to create a Docker Image suitable for running via the DIE algorithm is shown [https://code-repo.d4science.org/gCubeSystem/sortapp here]. This image is built starting from the base python:3.6-alpine image and installing the sortapp application written in python3.6 (see [https://code-repo.d4science.org/gCubeSystem/sortapp/src/branch/master/Dockerfile Dockerfile]).<br />
<br />
: The image is available on Docker Hub here: [https://hub.docker.com/repository/docker/d4science/sortapp d4science/sortapp]<br />
<br />
The sortapp application built in this example simply does the sorting of strings. The strings are contained in the file indicated by the FileParam parameter.<br />
<br />
So in general, the image could also be constructed using other languages and different base images.<br />
What remains binding is that the image that is created accepts the parameters as passed by the DIE and respects the constraint to save the results in the temporary folder on [[StorageHub_REST_API|StorageHub]] as indicated.<br />
<br />
<!--<br />
==References==<br />
{{Reflist}} --><br />
<br />
<br />
<!--<br />
[[Template:Statistical Algorithms Importer]] <br />
--><br />
<br />
[[Category:Statistical Algorithms Importer]]<br />
[[Category:DataMiner]]</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Release_Integration&diff=33380
Release Integration
2020-06-19T13:49:34Z
<p>Pasquale.pagano: /* Release Preparation */</p>
<hr />
<div>= Preliminary steps =<br />
<br />
In order to develop a new component for gCube, the developer must perform the following steps:<br />
<br />
* Make sure the maven-parent '''1.1.0''' is used as parent pom <br />
* Upgrade and test the component in the development environment<br />
* Deploy the SNAPSHOT version on gcube-snapshots repository<br />
* Make sure the Git repository of the component is set up with a working [https://wiki.gcube-system.org/gcube/Gitea/Jenkins:_Setting_up_Webhooks CI webhook]<br />
<br />
= Release Preparation =<br />
In order to prepare a new component for the integration within a gCube release, the developer must perform the following steps:<br />
<br />
* Align the component's repo content to the templates defined here: https://code-repo.d4science.org/gCubeCI/Templates/src/branch/master/gCubeComponents<br />
** '''IMPORTANT''': the CHANGELOG.md file must have a section that 'tags' the work done in the current release. This tag is expected in the format '[v<version>] [r<release>] - <date>'. See the [https://code-repo.d4science.org/gCubeCI/Templates/src/branch/master/gCubeComponents/CHANGELOG.md CHANGELOG.md ] template.<br />
* Remove the -SNAPSHOT postfix from the version in the pom on the master branch<br />
* Create a new subticket of "gCube Release Next" defined here: https://support.d4science.org/issues/17579<br />
** The subject ticket must uniquely identify the component<br />
** When the all these steps have been completed the ticket can be set to ''Available'' state. <br />
<br />
Then, the '''Release Manager''' is in charge to add all the ''Available'' tickets to the new Release and the '''integration phase''' of the release can start.<br />
<br />
*During the integration phase, the master branch of each component under release must be frozen until the release is declared closed by Release Manager. As per feature branching policy, any work must be performed in a separate feature or fix branch.</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=GCat_Background&diff=33330
GCat Background
2020-04-21T15:55:19Z
<p>Pasquale.pagano: /* Temporal Datasets */</p>
<hr />
<div><br />
{|align=right<br />
||__TOC__<br />
|}<br />
<br />
A catalogue is a service supporting its users to publish and search collections of descriptive information (metadata) for items including data, services, and related information objects. <br />
<br />
D4Science offers services for seamless access and analysis to a wide spectrum of data including biological and ecological data, geospatial data, statistical data and semi-structured data from multiple authoritative data providers and information systems. These services can be exploited both via web based graphical user interfaces and web based protocols for programmatic access, e.g. OAI-PMH, CSW, WFS, SDMX. This offering nicely complements specific and community-specific applications.<br />
The gCube Data Catalogue catalogue contains a wealth of resources resulting from several activities, projects and communities including BlueBRIDGE (www.bluebridge-vres.eu/), i-Marine (www.i-marine.eu), SoBigData.eu (www.sobigdata.eu), and FAO (www.fao.org). All the products are accompanied with rich descriptions capturing general attributes, e.g. title and creator(s), as well as usage policies and licences. <br />
<br />
The gCube Data Catalogue is built using and extending CKAN platform. CKAN is a powerful DMS (data management system) that makes data accessible – by providing tools to streamline publishing, sharing, finding and using data. <br />
CKAN is an open-source DMS for powering data hubs and data portals. CKAN makes it easy to publish, share and use data see: http://ckan.org/<br />
<br />
CKAN model is made by the following entities (and their relations):<br />
<br />
[[File:ckan_entities.png|1000px|thumb|center|CKAN: 'Entities and Relations']]<br />
<br />
== Available Catalogues and their public locations ==<br />
<br />
''BLUEBRIDGE Catalogue''<br />
<br />
* https://bluebridge.d4science.org/catalogue-bluebridge<br />
* https://i-marine.d4science.org/catalogue-bluebridge<br />
<br />
''D4Science Catalogue'' <br />
* https://services.d4science.org/catalogue-d4s1<br />
<br />
== Metadata ==<br />
<br />
A Metadata in the gCube Data Catalogue is made by two parts: [[#CKAN's default metadata fields | CKAN's default metadata fields]] and [[#gCube Metadata Profile | gCube Metadata Profile]].<br />
<br />
=== CKAN's default metadata fields ===<br />
<br />
Those are metadata fields common for all metadata types in the gCube Data Catalogue (and used by default in the CKAN platform).<br />
<br />
{| class="wikitable"<br />
! style="font-weight: bold;" | Label<br />
! style="font-weight: bold;" | Field Name (API)<br />
! style="font-weight: bold;" | Definition<br />
! style="font-weight: bold;" | Guidelines<br />
! style="font-weight: bold;" | Example<br />
|-<br />
| Title*<br />
| title<br />
| Name given to the dataset.<br />
| Short phrase, written in plain language. Should be sufficiently descriptive to allow for search and discovery.<br />
| Aquaculture Production and Consumption in Africa (2011)<br />
|-<br />
| Description<br />
| description<br />
| Short description explaining the content and its origins.<br />
| Description of a few sentences, written in plain language. Should,provide a sufficiently comprehensive overview of the resource for anyone,to understand its content, origins, and any continuing work on it. The,description can be written at the end, since it summarizes key,information from the other metadata fields.<br />
| This dataset contains attributes of aquaculture production and,consumption for each of Africa’s provinces in 2011. The data was,provided by………<br />
|-<br />
| Tags<br />
| tags<br />
| An array of Taxonomic terms stored as tags<br />
| Taxonomic terms<br />
| Access to education, Bamboo<br />
|-<br />
| License*<br />
| lincese_title<br />
| the license that applies to published dataset.<br />
| <br />
| <br />
|-<br />
| Organization*<br />
| organization<br />
| Organization the datasets belongs to<br />
| See list of organizations on <br />
https://ckan-d-d4s.d4science.org/organization<br />
| D4Science<br />
|-<br />
| Version<br />
| version<br />
| Version of dataset<br />
| Increase manually after editing<br />
| 1.0<br />
|-<br />
| Author*<br />
| <br />
| Owner of dataset<br />
| The person who created the dataset in the format: Surname, Name<br />
| Bloggs, Joe<br />
|-<br />
| Author Contact<br />
| <br />
| Contact details of owner<br />
| The email or other contact details of the person who created the dataset. <br />
| joe@example.com<br />
|-<br />
| Mantainer<br />
| <br />
| Mantainer of the dataset<br />
| The person or the authority that maintains the dataset<br />
| A person: Bloggs, Joe. An authority: D4Science<br />
|-<br />
| Mantainer<br />
Contact<br />
| <br />
| Contact details of mantainer<br />
| The email or other contact details of the person who maintains the dataset.<br />
| joe@example.com<br />
|}<br />
<br />
''mandatory fields are marked with an asterisk (*)''<br />
<br />
=== gCube Metadata Profile ===<br />
<br />
gCube Metadata Profile defines a Metadata schema XML-based for adding custom metadata fields.<br />
<br />
A gCube Metadata Profile is composed by one Metadata Format (<metadataformat>) containing an ordered list of (at least one) '''Metadata Field''' (<metadatafield>). <br />
From version 3 a Metadata Field can contain also a reference (categoryref="category_id_#") to an entity "Category" using the Namespace of the Category (<namespace id="category_id_#">). <br />
Add a Category Reference to a Metadata Field means that the "field" belongs to the Category referred by Category Identifier (id="category_id_#). <br />
See Metadata Profile v.3. for more details.<br />
<br />
===== Metadata Profile v.3 =====<br />
<br />
Metadata Profile v.3 is a XML file having the format:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<metadataformat type="YOUR TYPE HERE"><br />
<metadatafield categoryref="category_id_#"><br />
<fieldName>Name of Metadata Field</fieldName><br />
<mandatory>true|false</mandatory><br />
<dataType>String|Time|Time_Interval|Times_ListOf|Text|Boolean|Number|GeoJSON</dataType><br />
<maxOccurs>N|*</maxOccurs><br />
<defaultValue>default value</defaultValue><br />
<note>[the note is shown as a suggestion in the insert/update metadata form of Catalogue Publisher Widget]<br />
</note><br />
<vocabulary isMultiSelection="true|false"><br />
<vocabularyField>field1</vocabularyField><br />
<vocabularyField>field2</vocabularyField><br />
<vocabularyField>field3</vocabularyField><br />
</vocabulary><br />
<validator><br />
<regularExpression>a regular expression for validating values</regularExpression><br />
</validator><br />
<tagging create="true|false" separator="char_to_separate">onFieldName|onValue|onFieldName_onValue|onValue_onFieldName</tagging> <br />
<grouping create="true|false">onFieldName|onValue|onFieldName_onValue|onValue_onFieldName</grouping><br />
</metadatafield><br />
</metadataformat><br />
</pre><br />
<br />
The <fieldName> field contains the name of the metadata field.<br />
<br />
The <mandatory> field declares if the <metadatafield> is a field mandatory (by using 'true') or not (by using 'false').<br />
<br />
'''DataType values''':<br />
<br />
The <dataType> field specifies the kind of data. A valid dataType must be equal to one of the values {String, Time, Time_Interval, Times_ListOf, Text, Boolean, Number, GeoJSON}. When the data type is not specified the metadata field has the default value "String". '''Temporal type''': can be specified by using the value Time or Time_Interval or Times_ListOf (based on [https://en.wikipedia.org/wiki/ISO_8601 ISO 8601]). '''Spatial type''': can be specified by using the value GeoJSON.<br />
<br />
In detail:<br />
* String: is a string;<br />
* Time: an instant time that follows the general format: YYYY-MM-DD [HH:MM] where: YYYY: 4-digit year, MM: 2-digit month, DD: 2-digit day, [optional HH: 2-digit hour], [optional MM: 2-digit minute] (e.g. "2005-03-01");<br />
* Time_Interval: a continuous interval instead of a single instant by specifying a start and end time, separated by one '/' ('slash') character (e.g. "2005-03-01/2006-05-11");<br />
* Times_ListOf: a list of discrete time values, separated by a ',' ('comma') character (e.g. "2005-03-01, 2006-05-11, 2006-05-11-2007-04-12");<br />
* Text: is a text;<br />
* Boolean: is True/False;<br />
* Number: is a valid Java number, see: Apache Commons NumberUtils.isNumber;<br />
* GeoJSON: is a string in the JSON format of kind GeoJSON (in particular it should contain a '''GeoJSON geometry'''). The [http://geojson.org/geojson-spec.html GeoJSON] is a format for encoding a variety of geographic data structures.<br />
<br />
: '''GeoSpatial Data (the ''spatial'' field)''':<br />
<br />
: In order to make a metadata a GeoSpatial Data and searchable by location via GeoSpatial Search Widget (see at [[#GeoSpatial_search_for_datasets:_via_API_or_Search_Widget]]), it must have a 'fieldName' named `spatial` with 'dataType' GeoJSON and a valid GeoJSON geometry as value.<br />
<br />
: E.g. A MedataField with GeoSpatial data:<br />
<pre><br />
<metadatafield idref="category_id_#"><br />
<fieldName>spatial</fieldName> <!--'spatial' is the reserved field name to assign a GeoSpatial dimension to metadata --><br />
<dataType>GeoJSON</dataType><br />
<defaultValue>{"type": "Point","coordinates": [-20.145,74.078]}</defaultValue><br />
<note>Please, insert a valid GeoJSON</note><br />
</metadatafield><br />
</pre><br />
<br />
: see more details about [[#Geo_Datasets]]<br />
<br />
: '''Temporal Data (the ''time_date'' field)''':<br />
<br />
: In order to make a metadata a Temporal Data and searchable by time via Time Search Widget, it must have a 'fieldName' named `time_date` with 'dataType' Time and a valid ISO 8601 date as value.<br />
<br />
: E.g. A MedataField with Temporal data:<br />
<pre><br />
<metadatafield idref="category_id_#"><br />
<fieldName>time_date</fieldName> <!--'time_date' is the reserved field name to assign a Temporal dimension to metadata --><br />
<dataType>Time</dataType><br />
<defaultValue>2019-7-29</defaultValue><br />
<note>Please, insert a valid ISO 8601 date</note><br />
</metadatafield><br />
</pre><br />
<br />
: see more details about [[#Temporal_Datasets]]<br />
<br />
'''maxOccurs Indicator''':<br />
<br />
The <maxOccurs> indicator specifies the maximum number of times that <metadatafield> can occur:<br />
* N (as number): if the field must appear N times;<br />
* * (as char asterisk): if the field can appear an unlimited number of times.<br />
<br />
'''Categories as "Namespaces"''':<br />
<br />
* the Namespace of a Category declares a "class" for metadata fields having particular characteristics. It has been introduced in order to group metadata fields for categories and displaying them in a dedicated area through advanced GUI provided by CKAN D4Science plugin.<br />
<br />
Namespaces (for Categories) are defined in an XML file made by one Namespaces element (<namespaces>) containing a list of (at least) one or many Namespace (<namespace>). The file has the format:<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<namespaces xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><br />
<namespace id="category_id_#"><br />
<name>Category Name</name><br />
<title>Category Title</title><br />
<description>This section is about Category description</description><br />
</namespace><br />
</namespaces><br />
</pre><br />
<br />
A Namespace element (<namespace>) has an attribute (id) and three entities. The attribute "id" must be unique in the file [[#Namespaces_Categories_schema:_NamespacesCatalogueCategories.xsd]], it represents the category identifier for the Category. The elements are: name (is mandatory), title (is mandatory), description (is optional).<br />
<br />
Metadata Field and Category Reference (categoryref="category_id_#"):<br />
* categoryref is an optional attribute. It is a unique id (id="category_id_#"). A metadata field can belong to only one Namespace of a Category referring it via idref (categoryref="id category to which metadata field belongs one").<br />
<br />
Type of (meta)data (is Mandatory):<br />
* type: a Metadata Format (metadataformat) must have a unique 'type' (as a xml attribute) that declares a "type" for it. This mandatory information is saved as custom key (system:type="value of type") of the item stored in the Data Catalogue.<br />
<br />
'''Tagging''':<br />
* It is used by gCube Data Catalogue front-end for adding a metadata field as a Tag of the metadata. A Tag is a string between 2 and 100 characters long containing only alphanumeric characters and '-' (hyphen), '_' (underscore), . (dot). Tagging element in the Metadata Profile schema v3 must have a value equal to one of the values: {onFieldName, onValue, onFieldName_onValue, onValue_onFieldName}. Tagging values meanings:<br />
** onFieldName: (only) the fieldName specified to metadata field must be added as a Tag;<br />
** onValue: (only) the value specified to metadata field must be added as a Tag;<br />
** onFieldName_onValue: both the fieldName and the value (in this order) specified to metadata field must be added as a Tag. They are separated by string used as separator (<tagging create="true|false" separator="char_to_separate">{onFieldName_onValue}</tagging>);<br />
** onValue_onFieldName: both the value and the fieldName (in this order) specified to metadata field must be added as a Tag. They are separated by string used as separator (<tagging create="true|false" separator="char_to_separate">{onValue_onFieldName}</tagging>). <br />
* Moreover, Tagging has two (optional) attribute: 'create' and 'separator'. The first one (create="true"|"false") is used to mean: create the Tag if does not exist, no otherwise. The second one (separator="char_to_separate") is the string that will be used to separate the FieldName from its value. Default value for separator is the character '-' if it is not specified.<br />
<br />
Tagging example: using following instance of metadata field<br />
<pre><br />
<metadatafield categoryref="contact"><br />
<fieldName>Name</fieldName><br />
<dataType>String</dataType><br />
<defaultValue>My Name</defaultValue><br />
<note>Insert your Name</note><br />
<tagging create="true" separator="-">onFieldName_onValue</tagging><br />
</metadatafield><br />
</pre><br />
<br />
where My Name is "Francesco", gCube Data Catalogue adds the tag Name-Francesco to metadata field if it does not exist<br />
<br />
'''Grouping''':<br />
* It is used by Data Catalogue fron-end for adding a metadata field to a Group of Data Catalogue. Data Catalogue [https://ckan-d4s.d4science.org/group groups] are used for browsing. Grouping element in the Metadata Profile schema v3 must have a value equal to one of the values: {onFieldName, onValue, onFieldName_onValue, onValue_onFieldName}. The (optional) attribute create="true" is used to mean: create the Group if does not exist, no otherwise. Grouping values meanings:<br />
** onFieldName: (only) the fieldName specified to metadata field must be added to a Group;<br />
** onValue: (only) the value specified to metadata field must be added to a Group;<br />
** onFieldName_onValue: both the fieldName and the value (in this order) specified to metadata field must be added to a Group (<grouping create="true|false">{onFieldName_onValue}</grouping>);<br />
** onValue_onFieldName: both the value and the fieldName (in this order) specified to metadata field must be added to a Group (<grouping create="true|false">{onValue_onFieldName}</grouping>).<br />
* Moreover, Grouping has one (optional) attribute: 'propagateUp' This property will let a user specify if an item, that is going to be added to that group, must be also added to the hierarchical chain of groups involving it. For instance, if we have group B as child of group A, and item I is going to be added to B, then it will also be added to A. <br />
<br />
====== Metadata Profile schema: gcdcmetadataprofilev3.xsd ======<br />
<br />
The gCube Data Catalogue Metadata Profile (v.3) schema:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<xs:schema attributeFormDefault="unqualified"<br />
elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"><br />
<xs:include schemaLocation="NamespacesCatalogueCategories.xsd"/><br />
<xs:element name="metadataformat"><br />
<xs:complexType><br />
<xs:sequence><br />
<xs:element name="metadatafield" minOccurs="0" maxOccurs="unbounded"><br />
<xs:complexType><br />
<xs:sequence><br />
<xs:element type="xs:string" name="fieldName" /><br />
<xs:element type="xs:boolean" name="mandatory"<br />
minOccurs="0" maxOccurs="1" /><br />
<xs:element name="dataType"><br />
<xs:simpleType><br />
<xs:restriction base="xs:string"><br />
<xs:enumeration value="String" /><br />
<xs:enumeration value="Time" /><br />
<xs:enumeration value="Time_Interval" /><br />
<xs:enumeration value="Times_ListOf" /><br />
<xs:enumeration value="Text" /><br />
<xs:enumeration value="Boolean" /><br />
<xs:enumeration value="Number" /><br />
<xs:enumeration value="GeoJSON" /><br />
</xs:restriction><br />
</xs:simpleType><br />
</xs:element><br />
<xs:element type="xs:string" name="maxOccurs"<br />
minOccurs="0" maxOccurs="1" /><br />
<xs:element type="xs:string" name="defaultValue"<br />
minOccurs="0" maxOccurs="1" /><br />
<xs:element type="xs:string" name="note" minOccurs="0"<br />
maxOccurs="1" /><br />
<xs:element name="vocabulary" minOccurs="0" maxOccurs="1"><br />
<xs:complexType><br />
<xs:sequence><br />
<xs:element type="xs:string" name="vocabularyField"<br />
minOccurs="1" maxOccurs="unbounded" /><br />
</xs:sequence><br />
<xs:attribute type="xs:boolean" name="isMultiSelection" /><br />
</xs:complexType><br />
</xs:element><br />
<xs:element name="validator" minOccurs="0" maxOccurs="1"><br />
<xs:complexType><br />
<xs:sequence><br />
<xs:element type="xs:string" name="regularExpression" /><br />
</xs:sequence><br />
</xs:complexType><br />
</xs:element><br />
<xs:element name="tagging" type="TaggingType"<br />
minOccurs="0" maxOccurs="1"><br />
</xs:element><br />
<xs:element name="grouping" type="GroupingType"<br />
minOccurs="0" maxOccurs="1"><br />
</xs:element><br />
</xs:sequence><br />
<xs:attribute name="categoryref" use="optional" type="xs:string" /><br />
</xs:complexType><br />
</xs:element><br />
</xs:sequence><br />
<xs:attribute type="NotEmpty" use="required" name="type" /><br />
</xs:complexType><br />
</xs:element><br />
<xs:simpleType name="TaggingGroupingValue"><br />
<xs:restriction base="xs:string"><br />
<xs:enumeration value="onFieldName" /><br />
<xs:enumeration value="onValue" /><br />
<xs:enumeration value="onFieldName_onValue" /><br />
<xs:enumeration value="onValue_onFieldName" /><br />
</xs:restriction><br />
</xs:simpleType><br />
<xs:complexType name="TaggingType"><br />
<xs:simpleContent><br />
<xs:extension base="TaggingGroupingValue"><br />
<xs:attribute type="xs:boolean" name="create" /><br />
<xs:attribute type="NotEmpty" name="separator" /><br />
</xs:extension><br />
</xs:simpleContent><br />
</xs:complexType><br />
<xs:complexType name="GroupingType"><br />
<xs:simpleContent id="TaggingGroupingValue"><br />
<xs:extension base="TaggingGroupingValue"><br />
<xs:attribute type="xs:boolean" name="create" /><br />
<xs:attribute type="xs:boolean" name="propagateUp" /><br />
</xs:extension><br />
</xs:simpleContent><br />
</xs:complexType><br />
<xs:simpleType name="NotEmpty"><br />
<xs:restriction base="xs:string"><br />
<xs:minLength value="1" /><br />
</xs:restriction><br />
</xs:simpleType><br />
</xs:schema><br />
</pre><br />
<br />
You can download it by clicking on [https://wiki.gcube-system.org/images_gcube/e/e8/Gcdcmetadataprofilev3.xsd Gcdcmetadataprofilev3.xsd]<br />
<br />
A "generic" example of MetadataProfile.xml: <br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<metadataformat type="the_metadata_type" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="gcdcmetadataprofilev3.xsd"><br />
<metadatafield categoryref="idvalue0"><br />
<fieldName>fieldName</fieldName><br />
<dataType>String</dataType><br />
<defaultValue>defaultValue</defaultValue><br />
<note>note</note><br />
<vocabulary isMultiSelection="true"><br />
<vocabularyField>vocabularyField</vocabularyField><br />
</vocabulary><br />
<validator><br />
<regularExpression>regularExpression</regularExpression><br />
</validator><br />
<tagging create="true" separator="-">onFieldName_onValue</tagging><br />
<grouping create="true">onFieldName</grouping><br />
</metadatafield><br />
</metadataformat><br />
</pre><br />
<br />
Another example (of MetadataProfile.xml ) is the following one:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<metadataformat type="the_metadata_type"<br />
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />
xsi:noNamespaceSchemaLocation="gcdcmetadataprofilev3.xsd"><br />
<metadatafield categoryref="contact"><br />
<fieldName>Name</fieldName><br />
<dataType>String</dataType><br />
<defaultValue>My Name</defaultValue><br />
<note>Insert your Name</note><br />
<tagging create="true" separator="-">onFieldName_onValue</tagging><br />
</metadatafield><br />
<metadatafield categoryref="contact"><br />
<fieldName>Surname</fieldName><br />
<dataType>String</dataType><br />
<defaultValue>My Surname</defaultValue><br />
<note>Insert your Surname</note><br />
</metadatafield><br />
</metadataformat><br />
</pre><br />
<br />
====== Namespaces Categories schema: NamespacesCatalogueCategories.xsd ======<br />
<br />
The Namespaces Catalogue Categories schema: <br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<xs:schema attributeFormDefault="unqualified"<br />
elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"<br />
xmlns:category="http://www.w3.org/TR/html4/"><br />
<xs:element name="namespaces"><br />
<xs:complexType><br />
<xs:sequence><br />
<xs:element name="namespace" minOccurs="1" maxOccurs="unbounded"><br />
<xs:complexType><br />
<xs:sequence><br />
<xs:element type="xs:string" name="name" minOccurs="1"<br />
maxOccurs="1" /><br />
<xs:element type="xs:string" name="title" minOccurs="1"<br />
maxOccurs="1" /><br />
<xs:element type="xs:string" name="description"<br />
minOccurs="0" maxOccurs="1" /><br />
</xs:sequence><br />
<xs:attribute type="xs:string" name="id" use="required" /><br />
</xs:complexType><br />
</xs:element><br />
</xs:sequence><br />
</xs:complexType><br />
<xs:unique name="unique-namespace-id"><br />
<xs:selector xpath="namespace" /><br />
<xs:field xpath="@id" /><br />
</xs:unique><br />
</xs:element><br />
</xs:schema><br />
</pre><br />
<br />
You can download it by clicking on [https://wiki.gcube-system.org/images_gcube/d/d5/NamespacesCatalogueCategories.xsd NamespacesCatalogueCategories]<br />
<br />
An example of valid Namespaces.xml:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<namespaces xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />
xsi:noNamespaceSchemaLocation="NamespacesCatalogueCategories.xsd"><br />
<namespace id="contact"><br />
<name>Contact</name><br />
<title>Contact Title</title><br />
<description>This section is about Contact(s)</description><br />
</namespace><br />
<namespace id="developer_information"><br />
<name>Developer</name><br />
<title>Developer Title</title><br />
<description>This section is about Developer(s)</description><br />
</namespace><br />
<namespace id="extra_information"><br />
<name>Extra</name><br />
<title>Extra Title</title><br />
<description>This section is about Extra(s)</description><br />
</namespace><br />
</namespaces><br />
</pre><br />
<br />
=== Instances of Metadata Profile ===<br />
<br />
The following list shows the instances of metadata profile created in the D4Sciece infrastructure and currently used in gCube Data Catalogue:<br />
<br />
===== SoBigData.eu =====<br />
<br />
[[SoBigData.eu: Metadata Profile for gCube Data Catalogue]]<br />
<br />
== Ckan Connector ==<br />
<br />
The Ckan Connector Service is a gCube RESTFul service that allows infrastructure users to interact with CKAN.<br />
<br />
It implements two methods:<br />
* /connect: creates a new CKAN session. The user can interact with CKAN while the session is alive (not expired or destroyed by the user).<br />
* /disconnect : destroys the current CKAN session.<br />
<br />
== Geo Harvesting ==<br />
<br />
This extension contains plugins like [https://github.com/geosolutions-it/ckanext-geonetwork/wiki ckanext-geonetwork] (and others) which add geospatial capabilities to CKAN.<br />
<br />
Several harvesters to import geospatial metadata (like ISO 19139 format) into CKAN from other sources have been created in gCube Data Catalogue.<br />
In particular all metadata created into gCube Geonetwork (GeoNetwork is the catalog application to manage spatially referenced resources generated into D4Science Infrastructure) are harvested through the '''Geonetwork Resolver'''.<br />
<br />
Mapping (among fields) from an ISO19139 Metadata to Ckan Dataset via ckanext-geonetwork is shown in the following table:<br />
<br />
{| class="wikitable"<br />
! style="font-weight: bold;" | ISO19139<br />
! style="font-weight: bold;" | Ckan Dataset<br />
|-<br />
| '''Title'''<br />
| Title<br />
|-<br />
| '''Description'''<br />
| Description<br />
|-<br />
| '''bbox'''<br />
| spatial<br />
|-<br />
| style="font-style: italic;" | Descriptive Keywords<br />
| <br />
|-<br />
| '''gmd:keyword'''<br />
| Tag<br />
|-<br />
|-<br />
| <br />
| style="font-style: italic;" | Additional Info<br />
|-<br />
| metadata language, age,<br />
reference system, etc.<br />
| key/value<br />
|-<br />
|-<br />
| style="font-style: italic;" | Digital Transfer Option<br />
| style="font-style: italic;" | Data and Resource<br />
|-<br />
| CI_OnlineResource<br />
| <br />
|-<br />
| '''gmd:url'''<br />
| URL<br />
|-<br />
| '''gmd:name'''<br />
| Name<br />
|-<br />
| '''gmd:description'''<br />
| Description<br />
|}<br />
<br />
=== Geonetwork Resolver ===<br />
<br />
The 'Geonetwork Resolver' is a "middle tier" that authorizing the CKAN's harvesters to CSW harvesting of ISO19139 items provided through the gCube Geonetworks. <br />
<br />
See more at https://wiki.gcube-system.org/gcube/URI_Resolver#Geonetwork_Resolver<br />
<br />
== Geo Datasets ==<br />
<br />
In order to make a dataset queryable by Location (geospatial dataset), a reserved extra with the field name (the key) named ‘spatial’ must be defined. The value must be a '''valid GeoJSON geometry''', for example:<br />
<br />
<pre><br />
{<br />
"type":"Polygon",<br />
"coordinates":[[[2.05827, 49.8625],[2.05827, 55.7447], [-6.41736, 55.7447], [-6.41736, 49.8625], [2.05827, 49.8625]]]<br />
}<br />
</pre><br />
<br />
[Note: the polygon must be closed]<br />
<br />
or<br />
<br />
<pre><br />
{<br />
"type": "Point",<br />
"coordinates": [-3.145,53.078]<br />
}<br />
</pre><br />
<br />
GeoJSON Format Specification are available here: http://geojson.org/geojson-spec.html<br />
Datasets with spatial values are automatically geo-indexed, for example so that they can be searched using spatial filters.<br />
<br />
=== GeoSpatial search for datasets: via API or Search Widget === <br />
<br />
Once your datasets are geo-indexed, you can perform spatial queries by bounding box (coordinates format is [LONG, LAT]), via the following API call:<br />
<br />
<pre><br />
/api/2/search/dataset/geo?bbox={minx,miny,maxx,maxy}[&crs={srid}]<br />
</pre><br />
<br />
If the bounding box coordinates are not in the same projection as the one defined in the database, a CRS must be provided, in one of the following forms:<br />
<br />
<pre><br />
urn:ogc:def:crs:EPSG::4326<br />
EPSG:4326<br />
4326<br />
</pre><br />
<br />
Otherwise, the default bounding box is 4326. CKAN Wiki page for [http://docs.ckan.org/projects/ckanext-spatial/en/latest/spatial-search.html#legacy-api Legacy API]<br />
<br />
Moreover, you can perform spatial queries using an integrated map widget available on CKAN, which allows filtering results by an area of interest. You can try it on [https://ckan-d4s.d4science.org/dataset D4Science Data Catalogue]<br />
<br />
CKAN Wiki page for [http://docs.ckan.org/projects/ckanext-spatial/en/latest/spatial-search.html#spatial-search-widget Spatial Search Widget ]<br />
<br />
== Temporal Datasets ==<br />
<br />
In order to make a dataset queryable by Time (temporal dataset), a reserved extra with the field name (the key) named ‘time_date’ must be defined. The value must be a valid '''ISO 18161 date'''.<br />
<br />
== Users, Roles and Groups ==<br />
<br />
Three roles are envisaged to capture the actions users are allowed to execute by the catalogue in the context of each VRE:<br />
<br />
* '''''Catalogue_Member''''' - users with this role are allowed to:<br />
** View the organization’s private datasets.<br />
<br />
* '''''Catalogue_Editor''''' - users with this role are allowed to:<br />
** View the organization’s private datasets;<br />
** Publish new datasets (into the organization);<br />
** Edit or delete the organization’s datasets the user is owner of.<br />
<br />
* '''''Catalogue_Admin''''' - users with this role are allowed to:<br />
** View the organization’s private datasets;<br />
** Publish new datasets (into the organization);<br />
** Edit or delete any of the organization’s datasets;<br />
** Make datasets public or private.<br />
<br />
The default role assigned to every VRE user is ''Catalogue_Member'', i.e. every user of a VRE is entitled to view the private datasets published in the VRE scope in addition to any public dataset. VRE Managers can assign other roles to selected users to enlarge their capabilities.<br />
<br />
'''CKAN Groups''' can used to create and manage collections of datasets. This could be to catalogue datasets for a particular project or team, or on a particular theme, or as a very simple way to help people find and search your own published datasets.<br />
<br />
== Dataset Update ==<br />
<br />
As above presented only '''Catalogue_Editor''' (Editor) and '''Catalogue_Admin''' (Admin) can update existing dataset. The update can be performed by them via REST API (see: https://wiki.gcube-system.org/gcube/Catalogue_restful_service)<br />
<br />
However, it is possible to edit a dataset also through the CKAN GUI (via Manage), but in this case If Editor or Admin need to edit records by adding/updating resources to them, they need to:<br />
<br />
*1. store the file on the workspace;<br />
*2. get a public link to the that file;<br />
*3. edit the record by adding that link.<br />
<br />
== Access the Catalogue via RESTful service ==<br />
<br />
You can find more details at [[gCat Service | gCat Service]] page.<br />
<br />
== Complex Query to Catalogue via gCube Catalogue Porltet ==<br />
<br />
You can use two parameters `path` and `query` to perform complex query via HTTP provided by CKAN-engine also via ''gCube Catalogue Portlet''.<br />
<br />
You need to use:<br />
<br />
- the ''path'' parameter to specify the location which is a route/page rendered by CKAN-engine (e.g. dataset, organization, group);<br />
<br />
- the ''query'' parameter to specify the query string (e.g. q=sarda). Its value must be encoded in BASE64.<br />
<br />
For example:<br />
<br />
The CKAN instance is https://ckan-grsf.d4science.org. Its public 'gCube Catalogue Porltet' is in action at https://i-marine.d4science.org/web/grsf/data-catalogue<br />
<br />
We want to perform the query https://ckan-grsf.d4science.org/dataset?q=sarda also via ''gCube Catalogue Portlet''.<br />
<br />
The ''path'' parameter must be: path=dataset<br />
<br />
The ''query'' parameter must be: query=BASE64(q=sarda), that is query=cT1zYXJkYQ==<br />
<br />
Finally, the URL to perform the query via 'gCube Catalogue Portlet' will be: https://i-marine.d4science.org/web/grsf/data-catalogue?path=dataset&query=cT1zYXJkYQ==<br />
<br />
== Widget to show Catalogue Statistics: Catalogue Badge ==<br />
<br />
You can find how to configure the ''Catalogue Badge'' Widget for a D4Scince infra-gateway at [https://wiki.gcube-system.org/gcube/ServiceManager_Guide#Catalogue_Badge Catalogue_Badge Service Manager] page.<br />
<br />
== Related Issues ==<br />
<br />
[1] gCube Data Catalogue for Global Record of Stocks and Fisheries - https://wiki.gcube-system.org/gcube/GCube_Data_Catalogue_for_GRSF<br />
<br />
[2] Data Catalogue Resolver - https://wiki.gcube-system.org/gcube/URI_Resolver#CATALOGUE_Resolver<br />
<br />
[4] How-to Purge a Catalogue Instance - https://wiki.gcube-system.org/gcube/How-to_purge_a_ckan_catalogue_instance</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=GCat_Background&diff=33329
GCat Background
2020-04-21T15:54:41Z
<p>Pasquale.pagano: /* D4Science CKAN plugin */</p>
<hr />
<div><br />
{|align=right<br />
||__TOC__<br />
|}<br />
<br />
A catalogue is a service supporting its users to publish and search collections of descriptive information (metadata) for items including data, services, and related information objects. <br />
<br />
D4Science offers services for seamless access and analysis to a wide spectrum of data including biological and ecological data, geospatial data, statistical data and semi-structured data from multiple authoritative data providers and information systems. These services can be exploited both via web based graphical user interfaces and web based protocols for programmatic access, e.g. OAI-PMH, CSW, WFS, SDMX. This offering nicely complements specific and community-specific applications.<br />
The gCube Data Catalogue catalogue contains a wealth of resources resulting from several activities, projects and communities including BlueBRIDGE (www.bluebridge-vres.eu/), i-Marine (www.i-marine.eu), SoBigData.eu (www.sobigdata.eu), and FAO (www.fao.org). All the products are accompanied with rich descriptions capturing general attributes, e.g. title and creator(s), as well as usage policies and licences. <br />
<br />
The gCube Data Catalogue is built using and extending CKAN platform. CKAN is a powerful DMS (data management system) that makes data accessible – by providing tools to streamline publishing, sharing, finding and using data. <br />
CKAN is an open-source DMS for powering data hubs and data portals. CKAN makes it easy to publish, share and use data see: http://ckan.org/<br />
<br />
CKAN model is made by the following entities (and their relations):<br />
<br />
[[File:ckan_entities.png|1000px|thumb|center|CKAN: 'Entities and Relations']]<br />
<br />
== Available Catalogues and their public locations ==<br />
<br />
''BLUEBRIDGE Catalogue''<br />
<br />
* https://bluebridge.d4science.org/catalogue-bluebridge<br />
* https://i-marine.d4science.org/catalogue-bluebridge<br />
<br />
''D4Science Catalogue'' <br />
* https://services.d4science.org/catalogue-d4s1<br />
<br />
== Metadata ==<br />
<br />
A Metadata in the gCube Data Catalogue is made by two parts: [[#CKAN's default metadata fields | CKAN's default metadata fields]] and [[#gCube Metadata Profile | gCube Metadata Profile]].<br />
<br />
=== CKAN's default metadata fields ===<br />
<br />
Those are metadata fields common for all metadata types in the gCube Data Catalogue (and used by default in the CKAN platform).<br />
<br />
{| class="wikitable"<br />
! style="font-weight: bold;" | Label<br />
! style="font-weight: bold;" | Field Name (API)<br />
! style="font-weight: bold;" | Definition<br />
! style="font-weight: bold;" | Guidelines<br />
! style="font-weight: bold;" | Example<br />
|-<br />
| Title*<br />
| title<br />
| Name given to the dataset.<br />
| Short phrase, written in plain language. Should be sufficiently descriptive to allow for search and discovery.<br />
| Aquaculture Production and Consumption in Africa (2011)<br />
|-<br />
| Description<br />
| description<br />
| Short description explaining the content and its origins.<br />
| Description of a few sentences, written in plain language. Should,provide a sufficiently comprehensive overview of the resource for anyone,to understand its content, origins, and any continuing work on it. The,description can be written at the end, since it summarizes key,information from the other metadata fields.<br />
| This dataset contains attributes of aquaculture production and,consumption for each of Africa’s provinces in 2011. The data was,provided by………<br />
|-<br />
| Tags<br />
| tags<br />
| An array of Taxonomic terms stored as tags<br />
| Taxonomic terms<br />
| Access to education, Bamboo<br />
|-<br />
| License*<br />
| lincese_title<br />
| the license that applies to published dataset.<br />
| <br />
| <br />
|-<br />
| Organization*<br />
| organization<br />
| Organization the datasets belongs to<br />
| See list of organizations on <br />
https://ckan-d-d4s.d4science.org/organization<br />
| D4Science<br />
|-<br />
| Version<br />
| version<br />
| Version of dataset<br />
| Increase manually after editing<br />
| 1.0<br />
|-<br />
| Author*<br />
| <br />
| Owner of dataset<br />
| The person who created the dataset in the format: Surname, Name<br />
| Bloggs, Joe<br />
|-<br />
| Author Contact<br />
| <br />
| Contact details of owner<br />
| The email or other contact details of the person who created the dataset. <br />
| joe@example.com<br />
|-<br />
| Mantainer<br />
| <br />
| Mantainer of the dataset<br />
| The person or the authority that maintains the dataset<br />
| A person: Bloggs, Joe. An authority: D4Science<br />
|-<br />
| Mantainer<br />
Contact<br />
| <br />
| Contact details of mantainer<br />
| The email or other contact details of the person who maintains the dataset.<br />
| joe@example.com<br />
|}<br />
<br />
''mandatory fields are marked with an asterisk (*)''<br />
<br />
=== gCube Metadata Profile ===<br />
<br />
gCube Metadata Profile defines a Metadata schema XML-based for adding custom metadata fields.<br />
<br />
A gCube Metadata Profile is composed by one Metadata Format (<metadataformat>) containing an ordered list of (at least one) '''Metadata Field''' (<metadatafield>). <br />
From version 3 a Metadata Field can contain also a reference (categoryref="category_id_#") to an entity "Category" using the Namespace of the Category (<namespace id="category_id_#">). <br />
Add a Category Reference to a Metadata Field means that the "field" belongs to the Category referred by Category Identifier (id="category_id_#). <br />
See Metadata Profile v.3. for more details.<br />
<br />
===== Metadata Profile v.3 =====<br />
<br />
Metadata Profile v.3 is a XML file having the format:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<metadataformat type="YOUR TYPE HERE"><br />
<metadatafield categoryref="category_id_#"><br />
<fieldName>Name of Metadata Field</fieldName><br />
<mandatory>true|false</mandatory><br />
<dataType>String|Time|Time_Interval|Times_ListOf|Text|Boolean|Number|GeoJSON</dataType><br />
<maxOccurs>N|*</maxOccurs><br />
<defaultValue>default value</defaultValue><br />
<note>[the note is shown as a suggestion in the insert/update metadata form of Catalogue Publisher Widget]<br />
</note><br />
<vocabulary isMultiSelection="true|false"><br />
<vocabularyField>field1</vocabularyField><br />
<vocabularyField>field2</vocabularyField><br />
<vocabularyField>field3</vocabularyField><br />
</vocabulary><br />
<validator><br />
<regularExpression>a regular expression for validating values</regularExpression><br />
</validator><br />
<tagging create="true|false" separator="char_to_separate">onFieldName|onValue|onFieldName_onValue|onValue_onFieldName</tagging> <br />
<grouping create="true|false">onFieldName|onValue|onFieldName_onValue|onValue_onFieldName</grouping><br />
</metadatafield><br />
</metadataformat><br />
</pre><br />
<br />
The <fieldName> field contains the name of the metadata field.<br />
<br />
The <mandatory> field declares if the <metadatafield> is a field mandatory (by using 'true') or not (by using 'false').<br />
<br />
'''DataType values''':<br />
<br />
The <dataType> field specifies the kind of data. A valid dataType must be equal to one of the values {String, Time, Time_Interval, Times_ListOf, Text, Boolean, Number, GeoJSON}. When the data type is not specified the metadata field has the default value "String". '''Temporal type''': can be specified by using the value Time or Time_Interval or Times_ListOf (based on [https://en.wikipedia.org/wiki/ISO_8601 ISO 8601]). '''Spatial type''': can be specified by using the value GeoJSON.<br />
<br />
In detail:<br />
* String: is a string;<br />
* Time: an instant time that follows the general format: YYYY-MM-DD [HH:MM] where: YYYY: 4-digit year, MM: 2-digit month, DD: 2-digit day, [optional HH: 2-digit hour], [optional MM: 2-digit minute] (e.g. "2005-03-01");<br />
* Time_Interval: a continuous interval instead of a single instant by specifying a start and end time, separated by one '/' ('slash') character (e.g. "2005-03-01/2006-05-11");<br />
* Times_ListOf: a list of discrete time values, separated by a ',' ('comma') character (e.g. "2005-03-01, 2006-05-11, 2006-05-11-2007-04-12");<br />
* Text: is a text;<br />
* Boolean: is True/False;<br />
* Number: is a valid Java number, see: Apache Commons NumberUtils.isNumber;<br />
* GeoJSON: is a string in the JSON format of kind GeoJSON (in particular it should contain a '''GeoJSON geometry'''). The [http://geojson.org/geojson-spec.html GeoJSON] is a format for encoding a variety of geographic data structures.<br />
<br />
: '''GeoSpatial Data (the ''spatial'' field)''':<br />
<br />
: In order to make a metadata a GeoSpatial Data and searchable by location via GeoSpatial Search Widget (see at [[#GeoSpatial_search_for_datasets:_via_API_or_Search_Widget]]), it must have a 'fieldName' named `spatial` with 'dataType' GeoJSON and a valid GeoJSON geometry as value.<br />
<br />
: E.g. A MedataField with GeoSpatial data:<br />
<pre><br />
<metadatafield idref="category_id_#"><br />
<fieldName>spatial</fieldName> <!--'spatial' is the reserved field name to assign a GeoSpatial dimension to metadata --><br />
<dataType>GeoJSON</dataType><br />
<defaultValue>{"type": "Point","coordinates": [-20.145,74.078]}</defaultValue><br />
<note>Please, insert a valid GeoJSON</note><br />
</metadatafield><br />
</pre><br />
<br />
: see more details about [[#Geo_Datasets]]<br />
<br />
: '''Temporal Data (the ''time_date'' field)''':<br />
<br />
: In order to make a metadata a Temporal Data and searchable by time via Time Search Widget, it must have a 'fieldName' named `time_date` with 'dataType' Time and a valid ISO 8601 date as value.<br />
<br />
: E.g. A MedataField with Temporal data:<br />
<pre><br />
<metadatafield idref="category_id_#"><br />
<fieldName>time_date</fieldName> <!--'time_date' is the reserved field name to assign a Temporal dimension to metadata --><br />
<dataType>Time</dataType><br />
<defaultValue>2019-7-29</defaultValue><br />
<note>Please, insert a valid ISO 8601 date</note><br />
</metadatafield><br />
</pre><br />
<br />
: see more details about [[#Temporal_Datasets]]<br />
<br />
'''maxOccurs Indicator''':<br />
<br />
The <maxOccurs> indicator specifies the maximum number of times that <metadatafield> can occur:<br />
* N (as number): if the field must appear N times;<br />
* * (as char asterisk): if the field can appear an unlimited number of times.<br />
<br />
'''Categories as "Namespaces"''':<br />
<br />
* the Namespace of a Category declares a "class" for metadata fields having particular characteristics. It has been introduced in order to group metadata fields for categories and displaying them in a dedicated area through advanced GUI provided by CKAN D4Science plugin.<br />
<br />
Namespaces (for Categories) are defined in an XML file made by one Namespaces element (<namespaces>) containing a list of (at least) one or many Namespace (<namespace>). The file has the format:<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<namespaces xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><br />
<namespace id="category_id_#"><br />
<name>Category Name</name><br />
<title>Category Title</title><br />
<description>This section is about Category description</description><br />
</namespace><br />
</namespaces><br />
</pre><br />
<br />
A Namespace element (<namespace>) has an attribute (id) and three entities. The attribute "id" must be unique in the file [[#Namespaces_Categories_schema:_NamespacesCatalogueCategories.xsd]], it represents the category identifier for the Category. The elements are: name (is mandatory), title (is mandatory), description (is optional).<br />
<br />
Metadata Field and Category Reference (categoryref="category_id_#"):<br />
* categoryref is an optional attribute. It is a unique id (id="category_id_#"). A metadata field can belong to only one Namespace of a Category referring it via idref (categoryref="id category to which metadata field belongs one").<br />
<br />
Type of (meta)data (is Mandatory):<br />
* type: a Metadata Format (metadataformat) must have a unique 'type' (as a xml attribute) that declares a "type" for it. This mandatory information is saved as custom key (system:type="value of type") of the item stored in the Data Catalogue.<br />
<br />
'''Tagging''':<br />
* It is used by gCube Data Catalogue front-end for adding a metadata field as a Tag of the metadata. A Tag is a string between 2 and 100 characters long containing only alphanumeric characters and '-' (hyphen), '_' (underscore), . (dot). Tagging element in the Metadata Profile schema v3 must have a value equal to one of the values: {onFieldName, onValue, onFieldName_onValue, onValue_onFieldName}. Tagging values meanings:<br />
** onFieldName: (only) the fieldName specified to metadata field must be added as a Tag;<br />
** onValue: (only) the value specified to metadata field must be added as a Tag;<br />
** onFieldName_onValue: both the fieldName and the value (in this order) specified to metadata field must be added as a Tag. They are separated by string used as separator (<tagging create="true|false" separator="char_to_separate">{onFieldName_onValue}</tagging>);<br />
** onValue_onFieldName: both the value and the fieldName (in this order) specified to metadata field must be added as a Tag. They are separated by string used as separator (<tagging create="true|false" separator="char_to_separate">{onValue_onFieldName}</tagging>). <br />
* Moreover, Tagging has two (optional) attribute: 'create' and 'separator'. The first one (create="true"|"false") is used to mean: create the Tag if does not exist, no otherwise. The second one (separator="char_to_separate") is the string that will be used to separate the FieldName from its value. Default value for separator is the character '-' if it is not specified.<br />
<br />
Tagging example: using following instance of metadata field<br />
<pre><br />
<metadatafield categoryref="contact"><br />
<fieldName>Name</fieldName><br />
<dataType>String</dataType><br />
<defaultValue>My Name</defaultValue><br />
<note>Insert your Name</note><br />
<tagging create="true" separator="-">onFieldName_onValue</tagging><br />
</metadatafield><br />
</pre><br />
<br />
where My Name is "Francesco", gCube Data Catalogue adds the tag Name-Francesco to metadata field if it does not exist<br />
<br />
'''Grouping''':<br />
* It is used by Data Catalogue fron-end for adding a metadata field to a Group of Data Catalogue. Data Catalogue [https://ckan-d4s.d4science.org/group groups] are used for browsing. Grouping element in the Metadata Profile schema v3 must have a value equal to one of the values: {onFieldName, onValue, onFieldName_onValue, onValue_onFieldName}. The (optional) attribute create="true" is used to mean: create the Group if does not exist, no otherwise. Grouping values meanings:<br />
** onFieldName: (only) the fieldName specified to metadata field must be added to a Group;<br />
** onValue: (only) the value specified to metadata field must be added to a Group;<br />
** onFieldName_onValue: both the fieldName and the value (in this order) specified to metadata field must be added to a Group (<grouping create="true|false">{onFieldName_onValue}</grouping>);<br />
** onValue_onFieldName: both the value and the fieldName (in this order) specified to metadata field must be added to a Group (<grouping create="true|false">{onValue_onFieldName}</grouping>).<br />
* Moreover, Grouping has one (optional) attribute: 'propagateUp' This property will let a user specify if an item, that is going to be added to that group, must be also added to the hierarchical chain of groups involving it. For instance, if we have group B as child of group A, and item I is going to be added to B, then it will also be added to A. <br />
<br />
====== Metadata Profile schema: gcdcmetadataprofilev3.xsd ======<br />
<br />
The gCube Data Catalogue Metadata Profile (v.3) schema:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<xs:schema attributeFormDefault="unqualified"<br />
elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"><br />
<xs:include schemaLocation="NamespacesCatalogueCategories.xsd"/><br />
<xs:element name="metadataformat"><br />
<xs:complexType><br />
<xs:sequence><br />
<xs:element name="metadatafield" minOccurs="0" maxOccurs="unbounded"><br />
<xs:complexType><br />
<xs:sequence><br />
<xs:element type="xs:string" name="fieldName" /><br />
<xs:element type="xs:boolean" name="mandatory"<br />
minOccurs="0" maxOccurs="1" /><br />
<xs:element name="dataType"><br />
<xs:simpleType><br />
<xs:restriction base="xs:string"><br />
<xs:enumeration value="String" /><br />
<xs:enumeration value="Time" /><br />
<xs:enumeration value="Time_Interval" /><br />
<xs:enumeration value="Times_ListOf" /><br />
<xs:enumeration value="Text" /><br />
<xs:enumeration value="Boolean" /><br />
<xs:enumeration value="Number" /><br />
<xs:enumeration value="GeoJSON" /><br />
</xs:restriction><br />
</xs:simpleType><br />
</xs:element><br />
<xs:element type="xs:string" name="maxOccurs"<br />
minOccurs="0" maxOccurs="1" /><br />
<xs:element type="xs:string" name="defaultValue"<br />
minOccurs="0" maxOccurs="1" /><br />
<xs:element type="xs:string" name="note" minOccurs="0"<br />
maxOccurs="1" /><br />
<xs:element name="vocabulary" minOccurs="0" maxOccurs="1"><br />
<xs:complexType><br />
<xs:sequence><br />
<xs:element type="xs:string" name="vocabularyField"<br />
minOccurs="1" maxOccurs="unbounded" /><br />
</xs:sequence><br />
<xs:attribute type="xs:boolean" name="isMultiSelection" /><br />
</xs:complexType><br />
</xs:element><br />
<xs:element name="validator" minOccurs="0" maxOccurs="1"><br />
<xs:complexType><br />
<xs:sequence><br />
<xs:element type="xs:string" name="regularExpression" /><br />
</xs:sequence><br />
</xs:complexType><br />
</xs:element><br />
<xs:element name="tagging" type="TaggingType"<br />
minOccurs="0" maxOccurs="1"><br />
</xs:element><br />
<xs:element name="grouping" type="GroupingType"<br />
minOccurs="0" maxOccurs="1"><br />
</xs:element><br />
</xs:sequence><br />
<xs:attribute name="categoryref" use="optional" type="xs:string" /><br />
</xs:complexType><br />
</xs:element><br />
</xs:sequence><br />
<xs:attribute type="NotEmpty" use="required" name="type" /><br />
</xs:complexType><br />
</xs:element><br />
<xs:simpleType name="TaggingGroupingValue"><br />
<xs:restriction base="xs:string"><br />
<xs:enumeration value="onFieldName" /><br />
<xs:enumeration value="onValue" /><br />
<xs:enumeration value="onFieldName_onValue" /><br />
<xs:enumeration value="onValue_onFieldName" /><br />
</xs:restriction><br />
</xs:simpleType><br />
<xs:complexType name="TaggingType"><br />
<xs:simpleContent><br />
<xs:extension base="TaggingGroupingValue"><br />
<xs:attribute type="xs:boolean" name="create" /><br />
<xs:attribute type="NotEmpty" name="separator" /><br />
</xs:extension><br />
</xs:simpleContent><br />
</xs:complexType><br />
<xs:complexType name="GroupingType"><br />
<xs:simpleContent id="TaggingGroupingValue"><br />
<xs:extension base="TaggingGroupingValue"><br />
<xs:attribute type="xs:boolean" name="create" /><br />
<xs:attribute type="xs:boolean" name="propagateUp" /><br />
</xs:extension><br />
</xs:simpleContent><br />
</xs:complexType><br />
<xs:simpleType name="NotEmpty"><br />
<xs:restriction base="xs:string"><br />
<xs:minLength value="1" /><br />
</xs:restriction><br />
</xs:simpleType><br />
</xs:schema><br />
</pre><br />
<br />
You can download it by clicking on [https://wiki.gcube-system.org/images_gcube/e/e8/Gcdcmetadataprofilev3.xsd Gcdcmetadataprofilev3.xsd]<br />
<br />
A "generic" example of MetadataProfile.xml: <br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<metadataformat type="the_metadata_type" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="gcdcmetadataprofilev3.xsd"><br />
<metadatafield categoryref="idvalue0"><br />
<fieldName>fieldName</fieldName><br />
<dataType>String</dataType><br />
<defaultValue>defaultValue</defaultValue><br />
<note>note</note><br />
<vocabulary isMultiSelection="true"><br />
<vocabularyField>vocabularyField</vocabularyField><br />
</vocabulary><br />
<validator><br />
<regularExpression>regularExpression</regularExpression><br />
</validator><br />
<tagging create="true" separator="-">onFieldName_onValue</tagging><br />
<grouping create="true">onFieldName</grouping><br />
</metadatafield><br />
</metadataformat><br />
</pre><br />
<br />
Another example (of MetadataProfile.xml ) is the following one:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<metadataformat type="the_metadata_type"<br />
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />
xsi:noNamespaceSchemaLocation="gcdcmetadataprofilev3.xsd"><br />
<metadatafield categoryref="contact"><br />
<fieldName>Name</fieldName><br />
<dataType>String</dataType><br />
<defaultValue>My Name</defaultValue><br />
<note>Insert your Name</note><br />
<tagging create="true" separator="-">onFieldName_onValue</tagging><br />
</metadatafield><br />
<metadatafield categoryref="contact"><br />
<fieldName>Surname</fieldName><br />
<dataType>String</dataType><br />
<defaultValue>My Surname</defaultValue><br />
<note>Insert your Surname</note><br />
</metadatafield><br />
</metadataformat><br />
</pre><br />
<br />
====== Namespaces Categories schema: NamespacesCatalogueCategories.xsd ======<br />
<br />
The Namespaces Catalogue Categories schema: <br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<xs:schema attributeFormDefault="unqualified"<br />
elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"<br />
xmlns:category="http://www.w3.org/TR/html4/"><br />
<xs:element name="namespaces"><br />
<xs:complexType><br />
<xs:sequence><br />
<xs:element name="namespace" minOccurs="1" maxOccurs="unbounded"><br />
<xs:complexType><br />
<xs:sequence><br />
<xs:element type="xs:string" name="name" minOccurs="1"<br />
maxOccurs="1" /><br />
<xs:element type="xs:string" name="title" minOccurs="1"<br />
maxOccurs="1" /><br />
<xs:element type="xs:string" name="description"<br />
minOccurs="0" maxOccurs="1" /><br />
</xs:sequence><br />
<xs:attribute type="xs:string" name="id" use="required" /><br />
</xs:complexType><br />
</xs:element><br />
</xs:sequence><br />
</xs:complexType><br />
<xs:unique name="unique-namespace-id"><br />
<xs:selector xpath="namespace" /><br />
<xs:field xpath="@id" /><br />
</xs:unique><br />
</xs:element><br />
</xs:schema><br />
</pre><br />
<br />
You can download it by clicking on [https://wiki.gcube-system.org/images_gcube/d/d5/NamespacesCatalogueCategories.xsd NamespacesCatalogueCategories]<br />
<br />
An example of valid Namespaces.xml:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<namespaces xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />
xsi:noNamespaceSchemaLocation="NamespacesCatalogueCategories.xsd"><br />
<namespace id="contact"><br />
<name>Contact</name><br />
<title>Contact Title</title><br />
<description>This section is about Contact(s)</description><br />
</namespace><br />
<namespace id="developer_information"><br />
<name>Developer</name><br />
<title>Developer Title</title><br />
<description>This section is about Developer(s)</description><br />
</namespace><br />
<namespace id="extra_information"><br />
<name>Extra</name><br />
<title>Extra Title</title><br />
<description>This section is about Extra(s)</description><br />
</namespace><br />
</namespaces><br />
</pre><br />
<br />
=== Instances of Metadata Profile ===<br />
<br />
The following list shows the instances of metadata profile created in the D4Sciece infrastructure and currently used in gCube Data Catalogue:<br />
<br />
===== SoBigData.eu =====<br />
<br />
[[SoBigData.eu: Metadata Profile for gCube Data Catalogue]]<br />
<br />
== Ckan Connector ==<br />
<br />
The Ckan Connector Service is a gCube RESTFul service that allows infrastructure users to interact with CKAN.<br />
<br />
It implements two methods:<br />
* /connect: creates a new CKAN session. The user can interact with CKAN while the session is alive (not expired or destroyed by the user).<br />
* /disconnect : destroys the current CKAN session.<br />
<br />
== Geo Harvesting ==<br />
<br />
This extension contains plugins like [https://github.com/geosolutions-it/ckanext-geonetwork/wiki ckanext-geonetwork] (and others) which add geospatial capabilities to CKAN.<br />
<br />
Several harvesters to import geospatial metadata (like ISO 19139 format) into CKAN from other sources have been created in gCube Data Catalogue.<br />
In particular all metadata created into gCube Geonetwork (GeoNetwork is the catalog application to manage spatially referenced resources generated into D4Science Infrastructure) are harvested through the '''Geonetwork Resolver'''.<br />
<br />
Mapping (among fields) from an ISO19139 Metadata to Ckan Dataset via ckanext-geonetwork is shown in the following table:<br />
<br />
{| class="wikitable"<br />
! style="font-weight: bold;" | ISO19139<br />
! style="font-weight: bold;" | Ckan Dataset<br />
|-<br />
| '''Title'''<br />
| Title<br />
|-<br />
| '''Description'''<br />
| Description<br />
|-<br />
| '''bbox'''<br />
| spatial<br />
|-<br />
| style="font-style: italic;" | Descriptive Keywords<br />
| <br />
|-<br />
| '''gmd:keyword'''<br />
| Tag<br />
|-<br />
|-<br />
| <br />
| style="font-style: italic;" | Additional Info<br />
|-<br />
| metadata language, age,<br />
reference system, etc.<br />
| key/value<br />
|-<br />
|-<br />
| style="font-style: italic;" | Digital Transfer Option<br />
| style="font-style: italic;" | Data and Resource<br />
|-<br />
| CI_OnlineResource<br />
| <br />
|-<br />
| '''gmd:url'''<br />
| URL<br />
|-<br />
| '''gmd:name'''<br />
| Name<br />
|-<br />
| '''gmd:description'''<br />
| Description<br />
|}<br />
<br />
=== Geonetwork Resolver ===<br />
<br />
The 'Geonetwork Resolver' is a "middle tier" that authorizing the CKAN's harvesters to CSW harvesting of ISO19139 items provided through the gCube Geonetworks. <br />
<br />
See more at https://wiki.gcube-system.org/gcube/URI_Resolver#Geonetwork_Resolver<br />
<br />
== Geo Datasets ==<br />
<br />
In order to make a dataset queryable by Location (geospatial dataset), a reserved extra with the field name (the key) named ‘spatial’ must be defined. The value must be a '''valid GeoJSON geometry''', for example:<br />
<br />
<pre><br />
{<br />
"type":"Polygon",<br />
"coordinates":[[[2.05827, 49.8625],[2.05827, 55.7447], [-6.41736, 55.7447], [-6.41736, 49.8625], [2.05827, 49.8625]]]<br />
}<br />
</pre><br />
<br />
[Note: the polygon must be closed]<br />
<br />
or<br />
<br />
<pre><br />
{<br />
"type": "Point",<br />
"coordinates": [-3.145,53.078]<br />
}<br />
</pre><br />
<br />
GeoJSON Format Specification are available here: http://geojson.org/geojson-spec.html<br />
Datasets with spatial values are automatically geo-indexed, for example so that they can be searched using spatial filters.<br />
<br />
=== GeoSpatial search for datasets: via API or Search Widget === <br />
<br />
Once your datasets are geo-indexed, you can perform spatial queries by bounding box (coordinates format is [LONG, LAT]), via the following API call:<br />
<br />
<pre><br />
/api/2/search/dataset/geo?bbox={minx,miny,maxx,maxy}[&crs={srid}]<br />
</pre><br />
<br />
If the bounding box coordinates are not in the same projection as the one defined in the database, a CRS must be provided, in one of the following forms:<br />
<br />
<pre><br />
urn:ogc:def:crs:EPSG::4326<br />
EPSG:4326<br />
4326<br />
</pre><br />
<br />
Otherwise, the default bounding box is 4326. CKAN Wiki page for [http://docs.ckan.org/projects/ckanext-spatial/en/latest/spatial-search.html#legacy-api Legacy API]<br />
<br />
Moreover, you can perform spatial queries using an integrated map widget available on CKAN, which allows filtering results by an area of interest. You can try it on [https://ckan-d4s.d4science.org/dataset D4Science Data Catalogue]<br />
<br />
CKAN Wiki page for [http://docs.ckan.org/projects/ckanext-spatial/en/latest/spatial-search.html#spatial-search-widget Spatial Search Widget ]<br />
<br />
== Temporal Datasets ==<br />
<br />
In order to make a dataset queryable by Time (temporal dataset), a reserved extra with the field name (the key) named ‘time_date’ must be defined. The value must be a valid '''ISO 18161 date'''.<br />
<br />
@TODO Francesco<br />
<br />
== Users, Roles and Groups ==<br />
<br />
Three roles are envisaged to capture the actions users are allowed to execute by the catalogue in the context of each VRE:<br />
<br />
* '''''Catalogue_Member''''' - users with this role are allowed to:<br />
** View the organization’s private datasets.<br />
<br />
* '''''Catalogue_Editor''''' - users with this role are allowed to:<br />
** View the organization’s private datasets;<br />
** Publish new datasets (into the organization);<br />
** Edit or delete the organization’s datasets the user is owner of.<br />
<br />
* '''''Catalogue_Admin''''' - users with this role are allowed to:<br />
** View the organization’s private datasets;<br />
** Publish new datasets (into the organization);<br />
** Edit or delete any of the organization’s datasets;<br />
** Make datasets public or private.<br />
<br />
The default role assigned to every VRE user is ''Catalogue_Member'', i.e. every user of a VRE is entitled to view the private datasets published in the VRE scope in addition to any public dataset. VRE Managers can assign other roles to selected users to enlarge their capabilities.<br />
<br />
'''CKAN Groups''' can used to create and manage collections of datasets. This could be to catalogue datasets for a particular project or team, or on a particular theme, or as a very simple way to help people find and search your own published datasets.<br />
<br />
== Dataset Update ==<br />
<br />
As above presented only '''Catalogue_Editor''' (Editor) and '''Catalogue_Admin''' (Admin) can update existing dataset. The update can be performed by them via REST API (see: https://wiki.gcube-system.org/gcube/Catalogue_restful_service)<br />
<br />
However, it is possible to edit a dataset also through the CKAN GUI (via Manage), but in this case If Editor or Admin need to edit records by adding/updating resources to them, they need to:<br />
<br />
*1. store the file on the workspace;<br />
*2. get a public link to the that file;<br />
*3. edit the record by adding that link.<br />
<br />
== Access the Catalogue via RESTful service ==<br />
<br />
You can find more details at [[gCat Service | gCat Service]] page.<br />
<br />
== Complex Query to Catalogue via gCube Catalogue Porltet ==<br />
<br />
You can use two parameters `path` and `query` to perform complex query via HTTP provided by CKAN-engine also via ''gCube Catalogue Portlet''.<br />
<br />
You need to use:<br />
<br />
- the ''path'' parameter to specify the location which is a route/page rendered by CKAN-engine (e.g. dataset, organization, group);<br />
<br />
- the ''query'' parameter to specify the query string (e.g. q=sarda). Its value must be encoded in BASE64.<br />
<br />
For example:<br />
<br />
The CKAN instance is https://ckan-grsf.d4science.org. Its public 'gCube Catalogue Porltet' is in action at https://i-marine.d4science.org/web/grsf/data-catalogue<br />
<br />
We want to perform the query https://ckan-grsf.d4science.org/dataset?q=sarda also via ''gCube Catalogue Portlet''.<br />
<br />
The ''path'' parameter must be: path=dataset<br />
<br />
The ''query'' parameter must be: query=BASE64(q=sarda), that is query=cT1zYXJkYQ==<br />
<br />
Finally, the URL to perform the query via 'gCube Catalogue Portlet' will be: https://i-marine.d4science.org/web/grsf/data-catalogue?path=dataset&query=cT1zYXJkYQ==<br />
<br />
== Widget to show Catalogue Statistics: Catalogue Badge ==<br />
<br />
You can find how to configure the ''Catalogue Badge'' Widget for a D4Scince infra-gateway at [https://wiki.gcube-system.org/gcube/ServiceManager_Guide#Catalogue_Badge Catalogue_Badge Service Manager] page.<br />
<br />
== Related Issues ==<br />
<br />
[1] gCube Data Catalogue for Global Record of Stocks and Fisheries - https://wiki.gcube-system.org/gcube/GCube_Data_Catalogue_for_GRSF<br />
<br />
[2] Data Catalogue Resolver - https://wiki.gcube-system.org/gcube/URI_Resolver#CATALOGUE_Resolver<br />
<br />
[4] How-to Purge a Catalogue Instance - https://wiki.gcube-system.org/gcube/How-to_purge_a_ckan_catalogue_instance</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Code_of_Conduct&diff=33124
Code of Conduct
2019-12-20T09:13:40Z
<p>Pasquale.pagano: </p>
<hr />
<div><br />
== Code of Conduct ==<br />
[This guidelines are largely inspired by the Mozilla participation guidelines]<br />
<br />
'''''Respect each other’s ideas, styles and viewpoints.''''' <br />
We may not always agree, but disagreement is no excuse for poor manners when communicating with other contributors either via tickets or posts. Be open to different possibilities and to being wrong. Be kind in all interactions and communications, especially when debating the merits of different options. Be aware of your impact and how intense interactions may be affecting people. Be direct, constructive and positive. Take responsibility for your impact and your mistakes – if someone says they have been harmed through your words or actions, listen carefully, apologize sincerely, and correct the behavior going forward.<br />
<br />
'''''We must be able to speak directly when we disagree and when we think we need to improve.''''' . Doing so respectfully is hard, doing so when others don’t seem to be listening is harder, and hearing such comments when one is the recipient can be even harder still. We need to be honest and direct, as well as respectful.<br />
<br />
'''''Diversity of views and of people on teams powers innovation'''''. Provide alternative ways to contribute or participate when possible.<br />
<br />
'''''Understand Different Perspectives'''''. Your main goal has to be open to ideas that make your own ideas better. <br />
<br />
'''''Be respectful of people with different cultural practices, attitudes and beliefs.''''' Work to eliminate your own biases, prejudices and discriminatory practices. <br />
<br />
'''''Your actions influence others to behave and respond in ways that are proportional and appropriate.''''' Spoke with the others as you wish they should spoke to you.<br />
<br />
<br />
== ''Behavior That Will Not Be Tolerated'' ==<br />
<br />
<br />
The following behaviours are considered to be unacceptable under these guidelines.<br />
<br />
''Violence and threats of violence are not acceptable - online or offline.'' <br />
<br />
''Attacking someone for their opinions, beliefs and ideas is not acceptable.'' It is not okay to insult, demean or belittle others. It is important to speak directly when we disagree and when we think we need to improve, but such discussions must be conducted respectfully and professionally, remaining focused on the issue at hand.<br />
<br />
''Influencing crowd actions that cause hostility in the session.'' Sustained disruption of events, forums, or meetings, including talks and presentations, will not be tolerated. <br />
<br />
Anyone asked to stop unacceptable behavior is expected to comply immediately. Violation of these guidelines can result in you being ask to leave an event or online space, either temporarily or for the duration of the event, or being banned from participation in spaces, or future events and activities in perpetuity.</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Code_of_Conduct&diff=33123
Code of Conduct
2019-12-20T09:07:56Z
<p>Pasquale.pagano: Created page with " == Code of Conduct == [This guidelines are largely inspired by the Mozilla participation guidelines] '''''Respect each other’s ideas, styles and viewpoints.''''' We may n..."</p>
<hr />
<div><br />
== Code of Conduct ==<br />
[This guidelines are largely inspired by the Mozilla participation guidelines]<br />
<br />
'''''Respect each other’s ideas, styles and viewpoints.''''' <br />
We may not always agree, but disagreement is no excuse for poor manners when communicating with other contributors either via tickets or posts. Be open to different possibilities and to being wrong. Be kind in all interactions and communications, especially when debating the merits of different options. Be aware of your impact and how intense interactions may be affecting people. Be direct, constructive and positive. Take responsibility for your impact and your mistakes – if someone says they have been harmed through your words or actions, listen carefully, apologize sincerely, and correct the behavior going forward.<br />
<br />
'''''We must be able to speak directly when we disagree and when we think we need to improve.''''' . Doing so respectfully is hard, doing so when others don’t seem to be listening is harder, and hearing such comments when one is the recipient can be even harder still. We need to be honest and direct, as well as respectful.<br />
<br />
'''''Diversity of views and of people on teams powers innovation'''''. Provide alternative ways to contribute or participate when possible.<br />
<br />
'''''Understand Different Perspectives'''''. Your main goal has to be open to ideas that make your own ideas better. <br />
<br />
'''''Be respectful of people with different cultural practices, attitudes and beliefs.''''' Work to eliminate your own biases, prejudices and discriminatory practices. <br />
<br />
'''''Your actions influence others to behave and respond in ways that are proportional and appropriate.''''' Spoke with the others as you wish they should spoke to you.</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Developer%27s_Guide&diff=33122
Developer's Guide
2019-12-20T08:54:28Z
<p>Pasquale.pagano: </p>
<hr />
<div>[[Category: Developer's Guide]]<br />
{|align=right<br />
||__TOC__<br />
|}<br />
Documents technical-oriented information that will help developers further extend and exploit gCube’s source code. The document will target two classes of programmers:<br />
<br />
* Those who want to interface with gCube or to reuse gCube code – Programmers who will use gCube’s libraries to build their own tools, without need to access the source code.<br />
* Those who want to modify/extend the source code – Programmers who will use the platforms source code to enhance it, correct it, adapt it to different environments and applications domains.<br />
<br />
The Guide is organised as follows. <br />
[[#Overview | Overview]] provides the developer with a general summary of the gCube technology. <br />
[[#How-tos | How-to]] provides the developer with pragmatic, detailed and practical advice on gCube technology. <br />
Components Programming Reference Sections provide the developer with a detailed description of the gCube constituents organising them according to a [[#Components Programming Reference: Functionality-oriented View | Functionality-oriented View]] and a <br />
[[#Components Programming Reference: Data-typology-oriented View | Data-typology-oriented View]].<br />
<br />
The gCube team welcomes contributions from everyone who shares our vision and wishes to contribute in a constructive manner to improve and enhance the available software assets. <br />
As such, gCube have adopted this [[Code of Conduct | Code of Conduct ]] and require all those who wish to participate to agree to these guidelines.<br />
<br />
=== [[Developer's Guide: Introduction | Overview]] ===<br />
: [[Reference_Model | gCube Reference Model]] <br />
: [[GCube_Architecture | gCube Reference Architecture]]<br />
: [[Glossary]]<br />
<br />
=== How-tos ===]]<br />
: [[How to develop a gCube Component]]<br />
: [[How to develop a gCube Portlet]]<br />
: [[Featherweight Stack | How to interface with a gCube-based Infrastructure (a.k.a. Featherweight Stack Client)]]<br />
: [[Integration_and_Interoperability_Facilities_Framework:_Client_Libraries_Framework | How to interface with a gCube-based Infrastructure (a.k.a. the gCube Client Libraries Framework)]]<br />
: [[SmartGears | How to turn software applications and containers into gCube resources (a.k.a. the gCube SmartGears Framework)]]<br />
: [[FHNManager | How to integrate gCube system with external Cloud Providers]]<br />
: Accounting<br />
:: [[Accounting Lib | How to produce accounting records]]<br />
:: [[Accounting Analytics | How to consume accounting records]]<br />
:: [[Accounting Portlet: How to install and configure |How to install and configure Accounting Portlet(AM)]]<br />
: Data Analytics <br />
:: [[Statistical Algorithms Importer: How to install and configure| How to install and configure Statistical Algorithms Importer(SAI)]]<br />
:: [[Statistical_Algorithms_Importer | How to Implement Algorithms by Statistical Algorithms Importer(SAI)]]<br />
:: [[How-to Implement Algorithms for DataMiner | How to Implement Algorithms for DataMiner by Java libraries]]<br />
:: [[How_to_Interact_with_the_DataMiner_by_client | How to Interact with the DataMiner by client]]<br />
:: [[How to use the DataMiner Pool Manager | How to use the DataMiner Pool Manager]]<br />
<!-- :: <strike>[[Legacy_applications_integration | How to integrate legacy applications and offer them via WPS]]</strike> --><br />
: Data Publishing<br />
:: [[How to programmatically publishing a spatial dataset and the associated metadata by the gCube SDI]]<br />
:: [[How to use Data Transfer 2]]<br />
: Data Discovery and Access<br />
:: [http://www.d4science.org/images/help How to retrieve one specific species distribution map as GIS layer or image]<br />
<br />
=== Components Programming Reference: Functionality-oriented View ===<br />
; [[Core-facilities]]<br />
: [[Core-facilities#Data_Infrastructure_Management_Facilities | Data Infrastructure Management Facilities]]<br />
: [[Core-facilities#Data_Infrastructure_Policy-oriented_Security_Facilities | Data Infrastructure Policy-oriented Security Facilities]] <br />
: [[Core-facilities#Workflow_Management_Facilities | Workflow Management Facilities]]<br />
<br />
; [[Data Management Facilities]]<br />
: [[Data_Management_Facilities#Data_Access_and_Storage_Facilities | Data Access and Storage Facilities]] <br />
: [[Data_Management_Facilities#Data_Transfer_Facilities | Data Transfer Facilities]] <br />
: [[Data_Management_Facilities#Data_Assessment,_Harmonisation,_and_Certification_Facilities | Data Assessment, Harmonisation, and Certification Facilities]] <br />
<br />
; [[Data Consumption Facilities]] <br />
: [[Data_Consumption_Facilities#Data_Retrieval_Facilities | Data Retrieval Facilities]]<br />
: [[Data_Consumption_Facilities#Data_Manipulation_Facilities | Data Manipulation Facilities]]<br />
: [[Data Mining Facilities | Data Mining Facilities]] <br />
: [[Data_Consumption_Facilities#Data_Visualisation_Facilities | Data Visualisation Facilities]] <br />
: [[Data_Consumption_Facilities#Semantic_Data_Analysis_Facilities | Semantic Data Analysis Facilities]]<br />
<br />
; [[gCube APIs]]<br />
: [http://wiki.gcube-system.org/gcube/Social_Networking_Library Social Networking Library] and [[Social Networking Service]]<br />
: [[Social Networking Data Discovery]]<br />
: [https://wiki.gcube-system.org/gcube/Storage_Manager Storage Manager Service]<br />
: [https://wiki.gcube-system.org/gcube/Home_Library_2.0_API_Framework_Specification Home Library Service (DEPRECATED, see StorageHub)]<br />
: [https://gcube.wiki.gcube-system.org/gcube/StorageHub_REST_API Storage Hub Service]<br />
:[https://wiki.gcube-system.org/gcube/Portal_Context Portal Context] and [https://wiki.gcube-system.org/gcube/UserManagement_Core Portal User, Group and Roles Management]<br />
: [[Portal Mailing API]]<br />
; [[gCube Presentation Services]]<br />
<br />
:[https://wiki.gcube-system.org/gcube/GCube_Widgets_Store GCube Widgets Store]<br />
<br />
=== Components Programming Reference: Data-typology-oriented View ===<br />
; [[Biodiversity Data Facilities]]<br />
; [[Geospatial Data Facilities]]<br />
; [[Semantic Data Facilities]]<br />
; [[Statistical Data Facilities]]</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Continuous_Integration:_Releases_Maven&diff=32642
Continuous Integration: Releases Maven
2019-06-05T16:21:49Z
<p>Pasquale.pagano: /* Build Configurations */</p>
<hr />
<div>= Maven Build Profiles =<br />
A gCube artifact can be built in 3 different situations:<br />
# on a personal (development) machine, likely after new code has been developed, by a gCube developer<br />
# on a Jenkins slave, likely triggered by a new commit in the Git repository<br />
# on a Jenkins slave, as part of the release pipeline<br />
<br />
To support these scenarios, the following [https://maven.apache.org/guides/introduction/introduction-to-profiles.html|build profiles] are defined in the gCube [[Maven_Configuration#Maven_Parent|maven-parent]].<br />
<br />
== gcube-developer ==<br />
* Dependencies resolved against gcube-snapshots and gcube-releases<br />
* Snapshot artifacts deployed to gcube-snapshots<br />
* Deployments of releases artifacts are not permitted<br />
<br />
== jenkins-snapshots ==<br />
* Dependencies resolved against local-snapshots and gcube-releases<br />
* Snapshot artifacts installed to local-snapshots<br />
* Snapshot artifacts deployed to gcube-snapshots<br />
* Deployments of release artifacts are not permitted<br />
<br />
== jenkins-releases==<br />
* Dependencies resolved against gcube-releases<br />
* Deployments of snapshot artifacts are not permitted<br />
* Release artifacts deployed to gcube-releases<br />
<br />
== dry-run ==<br />
This profile disables all the deployments (regardless the maven commands) by skipping the ''deploy'' phase. It can be combined with the previous profiles<br />
<br />
== disable-java8-doclint ==<br />
This profile sets an additional parameter for javadoc generation to disables the doclint. It avoids the build fails if formal/syntax errors are found in javadoc comments.<br />
<br />
= Maven Settings Files =<br />
The activation and switch among the [[Continuous_Integration:_Releases#Maven_Build_Profiles|build profiles]] is done through different settings.xml files available in the [https://code-repo.d4science.org/gCubeSystem/Configs/src/branch/master/Maven/1.1.0/ Configs] project.<br />
<br />
''gcube-developer-settings.xml''<br />
<br />
Used by: gCube Developer<br />
Installed on: development machine<br />
<br />
''jenkins-snapshots-settings.xml''<br />
<br />
Used by: Jenkins jobs<br />
Installed on: slave node<br />
<br />
''jenkins-snapshots-dry-run-settings.xml''<br />
<br />
Used by: Jenkins pipeline jobs<br />
When: To test a complete snapshot without deploying on a remote repo<br />
Installed on: slave node<br />
<br />
''jenkins-release-settings.xml''<br />
<br />
Used by: Jenkins pipeline jobs<br />
Installed on: slave node<br />
<br />
''jenkins-release-dry-run-settings.xml''<br />
<br />
Used by: Jenkins pipeline jobs<br />
When: To test a complete release without deploying on a remote repo<br />
Installed on: slave node<br />
<br />
= Build Configurations =<br />
The build configurations must guarantee the integrity of the Continuous Integration pipeline. Jenkins builds must use only the outcomes of other Jenkins builds.<br />
A snapshot artifact built on a development machine and deployed to Maven snapshot repository is a potential threat for the integration process. There are several cases in which such an artifact could be not in sync with the content of the SCM repository. For instance:<br />
* it is built from a branch not built on Jenkins,<br />
* the source code that generates it is committed but not pushed<br />
* it has dependencies on the local environment not reproducible on the Jenkins slaves<br />
* ..and so on<br />
<br />
'''What we need'''<br />
* Jenkins must use only artifacts generated by Jenkins builds to resolve dependencies.<br />
* Snapshot artifacts deployed to Maven snapshot repository by developers must not be seen by Jenkins<br />
* Jenkins must deploy to Maven snapshot repository after successful builds<br />
* Release artifacts are built and deployed to the Maven release repository (gcube-releases) only by Jenkins<br />
<br />
'''What we are trying to avoid'''<br />
* Reconfigure all the Jenkins projects at each release time<br />
* Change all the poms before starting the release integration<br />
* Create ad-hoc artifacts or repositories<br />
<br />
By combining the build profiles in the appropriate settings file, we support the following build configurations with the Maven Repositories:<br />
<br />
[[File:CI_Maven_Repos.png|800px]]<br />
<br />
= Why not the Maven Release Plugin =<br />
gCube does not use the [https://maven.apache.org/maven-release/maven-release-plugin| Maven Release plugin] to release its artifacts. The simple explanation is that the plugin does not make any use to gCube. The plugin is designed for *SINGLE* artifact releases, not for multi-project releases like gCube. It also assumes that a human intervention during the release process (for instance, it prompts for the tagname) for each component, obviously not feasible in a gCube release. <br />
<br />
At the time we are setting up this release process, it would be an over-complication to configure each Jenkins project with an invocation to the plugin and parametrize each build process to activate the plugin during the release build. This can be eventually be investigated in the future.<br />
<br />
''Back to the [[Continuous_Integration_procedure_(2019) | CI guide]].''</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Continuous_Integration_of_gCube_System:_Overview&diff=32384
Continuous Integration of gCube System: Overview
2019-05-13T08:01:39Z
<p>Pasquale.pagano: /* How many Builds */</p>
<hr />
<div><br />
= Workflow = <br />
<br />
[[File:CI pipeline V6.png|1200px]]<br />
<br />
= How many Builds =<br />
<br />
One of biggest risks of a non-properly configured Continuous Integration pipeline is to trigger too many builds and transform the pipeline into something we can call ''Continuous Building''. Multiple builds of the same project simultaneously on the same slave can interfere with each other and inconsistent situations are very common. For instance, this is the case when each commit is immediately to the master branch or when the Git repository is wrongly used as backup system.<br />
<br />
In this guide, we set up a few procedures to prevent this misbehavior. Some of them assume a proper usage of Git from the user.<br />
<br />
Here's a summary of these practices:<br />
<br />
* the [[Jenkins_Projects_(aka_Jobs)|Jenkins project]] builds always the master branch<br />
* if a Jenkins project is configured to build a second branch, this branch must generate a software artifact with a different version than master branch<br />
* the development of new features and bug fixing are done in dedicated branches ([[Branching_Strategy|task branching]])<br />
* merges into master branch are performed when the feature/fix is stable<br />
* commits are not always pushed to the remote repository, but only when they add a significant, self-contained and consistent piece of working code <br />
* the master branch MUST be always in a releasable state<br />
<br />
By following them, builds are triggered only when a stable feature is merged into master, while commits in the other branches do not involve Jenkins. If two branches are built at the same time in a Jenkins project (which should be temporary), their different versions guarantee that there are no conflict in the published artifacts.<br />
<br />
More suggestions for a proper exploitation of the pipeline are in the [[Continuous_Integration:_Best_Practices|Best Practices]] section.<br />
<br />
= Maven Isolation =<br />
Another mistake to avoid with the pipeline is to use the public SNAPSHOT Maven Repository. We must guarantee that the SNAPSHOT dependencies resolved during the builds on the servers are ALWAYS coming from other Jenkins builds. If we let the builds use the SNAPSHOT versions manually deployed by the developers, the entire pipeline is INVALID. <br />
<br />
One long-standing solution to this is to use the “Use private Maven repository” option in the “Advanced” section of the Maven build. This creates an isolated local Maven repository for the job (in $WORKSPACE/.repository) which prevents these problems. Jenkins releases since 1.448 let you specify a Maven repository per executor, which is a more efficient way to solve the same problem. Read more in the [[Build_and_Integration_System:_Jenkins|Jenkins]] section.<br />
<br />
Regarding the dependencies of released artifacts:<br />
* for gCube components, they are resolved against the RELEASE Maven Repository<br />
* for third-party components, they are resolved against Maven Central or other external repositories.<br />
<br />
''Back to the [[Continuous_Integration_procedure_(2019) | CI guide]].''</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Continuous_Integration_of_gCube_System:_Overview&diff=32383
Continuous Integration of gCube System: Overview
2019-05-13T07:59:44Z
<p>Pasquale.pagano: /* How many Builds */</p>
<hr />
<div><br />
= Workflow = <br />
<br />
[[File:CI pipeline V6.png|1200px]]<br />
<br />
= How many Builds =<br />
<br />
One of biggest risks of a non-properly configured Continuous Integration pipeline is to trigger too many builds and transform the pipeline into something we can call ''Continuous Building''. Multiple builds of the same project simultaneously on the same slave can interfere with each other and inconsistent situations are very common. For instance, this is the case when each commit is immediately to the master branch or when the Git repository is wrongly used as backup system.<br />
<br />
In this guide, we set up a few procedures to prevent this misbehavior. Some of them assume a proper usage of Git from the user.<br />
<br />
Here's a summary of these practices:<br />
<br />
* the [[Jenkins_Projects_(aka_Jobs)|Jenkins project]] builds always the master branch<br />
* if a Jenkins project is configured to build a second branch, this branch must generate a software artifact with a different version than master branch<br />
* the development of new features and bug fixing are done in dedicated branches ([[Branching_Strategy|task branching]])<br />
* merges into master branch are performed when the feature/fix is stable<br />
* commits are not always pushed to the remote repository, but only when they add a significant, self-contained and consistent piece of working code <br />
* the master branch MUST be always in a releasable state<br />
<br />
By following them, builds are triggered only when a stable feature is merge into master, while commits in the other branches do not involve Jenkins. If two branches are built at the same time in a Jenkins project (which should be temporary), their different versions guarantee that there are no conflict in the published artifacts.<br />
<br />
More suggestions for a proper exploitation of the pipeline are in the [[Continuous_Integration:_Best_Practices|Best Practices]] section.<br />
<br />
= Maven Isolation =<br />
Another mistake to avoid with the pipeline is to use the public SNAPSHOT Maven Repository. We must guarantee that the SNAPSHOT dependencies resolved during the builds on the servers are ALWAYS coming from other Jenkins builds. If we let the builds use the SNAPSHOT versions manually deployed by the developers, the entire pipeline is INVALID. <br />
<br />
One long-standing solution to this is to use the “Use private Maven repository” option in the “Advanced” section of the Maven build. This creates an isolated local Maven repository for the job (in $WORKSPACE/.repository) which prevents these problems. Jenkins releases since 1.448 let you specify a Maven repository per executor, which is a more efficient way to solve the same problem. Read more in the [[Build_and_Integration_System:_Jenkins|Jenkins]] section.<br />
<br />
Regarding the dependencies of released artifacts:<br />
* for gCube components, they are resolved against the RELEASE Maven Repository<br />
* for third-party components, they are resolved against Maven Central or other external repositories.<br />
<br />
''Back to the [[Continuous_Integration_procedure_(2019) | CI guide]].''</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=GCat_Background&diff=30821
GCat Background
2018-01-22T13:32:09Z
<p>Pasquale.pagano: </p>
<hr />
<div>== gCube Data Catalogue ==<br />
<br />
D4Science offers services for seamless access and analysis to a wide spectrum of data including biological and ecological data, geospatial data, statistical data and semi-structured data from multiple authoritative data providers and information systems. These services can be exploited both via web based graphical user interfaces and web based protocols for programmatic access, e.g. OAI-PMH, CSW, WFS, SDMX. This offering nicely complements specific and community-specific applications.<br />
The gCube Data Catalogue catalogue contains a wealth of resources resulting from several activities, projects and communities including BlueBRIDGE (www.bluebridge-vres.eu/), i-Marine (www.i-marine.eu), SoBigData.eu (www.sobigdata.eu), and FAO (www.fao.org). All the products are accompanied with rich descriptions capturing general attributes, e.g. title and creator(s), as well as usage policies and licences. <br />
<br />
<br />
<br />
The gCube Data Catalogue is built using and extending CKAN platform. CKAN is a powerful DMS (data management system) that makes data accessible – by providing tools to streamline publishing, sharing, finding and using data. <br />
CKAN is an open-source DMS for powering data hubs and data portals. CKAN makes it easy to publish, share and use data see: http://ckan.org/<br />
<br />
CKAN model is made by the following entities (and their relations):<br />
<br />
[[File:ckan_entities.png|1000px|thumb|center|CKAN: 'Entities and Relations']]<br />
<br />
== Available Catalogues and their public locations ==<br />
<br />
''BLUEBRIDGE Catalogue''<br />
<br />
* https://bluebridge.d4science.org/catalogue<br />
* https://i-marine.d4science.org/catalogue<br />
<br />
''D4Science Catalogue'' <br />
* https://services.d4science.org/catalogue<br />
<br />
<br />
<br />
== Metadata ==<br />
<br />
A Metadata in the gCube Data Catalogue is made by two parts: [[#CKAN's default metadata fields | CKAN's default metadata fields]] and [[#gCube Metadata Profile | gCube Metadata Profile]].<br />
<br />
=== CKAN's default metadata fields ===<br />
<br />
Those are metadata fields common for all metadata types in the gCube Data Catalogue (and used by default in the CKAN platform).<br />
<br />
{| class="wikitable"<br />
! style="font-weight: bold;" | Label<br />
! style="font-weight: bold;" | Field Name (API)<br />
! style="font-weight: bold;" | Definition<br />
! style="font-weight: bold;" | Guidelines<br />
! style="font-weight: bold;" | Example<br />
|-<br />
| Title*<br />
| title<br />
| Name given to the dataset.<br />
| Short phrase, written in plain language. Should be sufficiently descriptive to allow for search and discovery.<br />
| Aquaculture Production and Consumption in Africa (2011)<br />
|-<br />
| Description<br />
| description<br />
| Short description explaining the content and its origins.<br />
| Description of a few sentences, written in plain language. Should,provide a sufficiently comprehensive overview of the resource for anyone,to understand its content, origins, and any continuing work on it. The,description can be written at the end, since it summarizes key,information from the other metadata fields.<br />
| This dataset contains attributes of aquaculture production and,consumption for each of Africa’s provinces in 2011. The data was,provided by………<br />
|-<br />
| Tags<br />
| tags<br />
| An array of Taxonomic terms stored as tags<br />
| Taxonomic terms<br />
| Access to education, Bamboo<br />
|-<br />
| License*<br />
| lincese_title<br />
| the license that applies to published dataset.<br />
| <br />
| <br />
|-<br />
| Organization*<br />
| organization<br />
| Organization the datasets belongs to<br />
| See list of organizations on <br />
https://ckan-d-d4s.d4science.org/organization<br />
| D4Science<br />
|-<br />
| Version<br />
| version<br />
| Version of dataset<br />
| Increase manually after editing<br />
| 1.0<br />
|-<br />
| Author*<br />
| <br />
| Owner of dataset<br />
| The person who created the dataset in the format: Surname, Name<br />
| Bloggs, Joe<br />
|-<br />
| Author Contact<br />
| <br />
| Contact details of owner<br />
| The email or other contact details of the person who created the dataset. <br />
| joe@example.com<br />
|-<br />
| Mantainer<br />
| <br />
| Mantainer of the dataset<br />
| The person or the authority that maintains the dataset<br />
| A person: Bloggs, Joe. An authority: D4Science<br />
|-<br />
| Mantainer<br />
Contact<br />
| <br />
| Contact details of mantainer<br />
| The email or other contact details of the person who maintains the dataset.<br />
| joe@example.com<br />
|}<br />
<br />
''mandatory fields are marked with an asterisk (*)''<br />
<br />
=== gCube Metadata Profile ===<br />
<br />
gCube Metadata Profile defines a Metadata schema XML-based for adding custom metadata fields.<br />
<br />
A gCube Metadata Profile is composed by one Metadata Format (<metadataformat>) containing an ordered list of '''(at least) one Metadata Field (<metadatafield>)'''. <br />
From version 3 a Metadata Field can contain also a reference (categoryref="category_id_#") to an entity "Category" using the Namespace of the Category (<namespace id="category_id_#">). <br />
Add a Category Reference to a Metadata Field means that the "field" belongs to the Category referred by Category Identifier (id="category_id_#). <br />
See Metadata Profile v.3. for more details.<br />
<br />
===== Metadata Profile v.3 =====<br />
<br />
Metadata Profile v.3 is a XML file having the format:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<metadataformat type="YOUR TYPE HERE"><br />
<metadatafield categoryref="category_id_#"><br />
<fieldName>Name of Metadata Field</fieldName><br />
<mandatory>true|false</mandatory><br />
<dataType>String|Time|Time_Interval|Times_ListOf|Text|Boolean|Number|GeoJSON</dataType><br />
<maxOccurs>N|*</maxOccurs><br />
<defaultValue>default value</defaultValue><br />
<note>shown as suggestions in the insert/update metadata form of CKAN<br />
</note><br />
<vocabulary isMultiSelection="true|false"><br />
<vocabularyField>field1</vocabularyField><br />
<vocabularyField>field2</vocabularyField><br />
<vocabularyField>field3</vocabularyField><br />
</vocabulary><br />
<validator><br />
<regularExpression>a regular expression for validating values</regularExpression><br />
</validator><br />
<tagging create="true|false" separator="char_to_separate">onFieldName|onValue|onFieldName_onValue|onValue_onFieldName</tagging> <br />
<grouping create="true|false">onFieldName|onValue|onFieldName_onValue|onValue_onFieldName</grouping><br />
</metadatafield><br />
</metadataformat><br />
</pre><br />
<br />
What's new:<br />
<br />
'''maxOccurs Indicator''':<br />
<br />
The <maxOccurs> indicator specifies the maximum number of times that <metadatafield> can occur:<br />
* N (as number): if the field must appear N times;<br />
* * (as char asterisk): if the field can appear an unlimited number of times.<br />
<br />
<br />
'''Categories as "Namespaces"''':<br />
<br />
* the Namespace of a Category declares a "class" for metadata fields having particular characteristics. It has been introduced in order to group metadata fields for categories and displaying them in a dedicated area through advanced GUI provided by CKAN D4Science plugin.<br />
<br />
Namespaces (for Categories) are defined in an XML file made by one Namespaces element (<namespaces>) containing a list of (at least) one or many Namespace (<namespace>). The file has the format:<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<namespaces xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><br />
<namespace id="category_id_#"><br />
<name>Category Name</name><br />
<title>Category Title</title><br />
<description>This section is about Category description</description><br />
</namespace><br />
</namespaces><br />
</pre><br />
<br />
A Namespace element (<namespace>) has an attribute (id) and three entities. The attribute "id" must be unique in the file [[#Namespaces_Categories_schema:_NamespacesCatalogueCategories.xsd]], it represents the category identifier for the Category. The elements are: name (is mandatory), title (is mandatory), description (is optional).<br />
<br />
Metadata Field and Category Reference (categoryref="category_id_#"):<br />
* categoryref is an optional attribute. It is a unique id (id="category_id_#"). A metadata field can belong to only one Namespace of a Category referring it via idref (categoryref="id category to which metadata field belongs one").<br />
<br />
Type of (meta)data (is Mandatory):<br />
* type: a Metadata Format (metadataformat) must have a unique 'type' (as a xml attribute) that declares a "type" for it. This mandatory information is saved as custom key (system:type="value of type") of the item stored in the Data Catalogue.<br />
<br />
'''Tagging''':<br />
* It is used by gCube Data Catalogue front-end for adding a metadata field as a Tag of the metadata. A Tag is a string between 2 and 100 characters long containing only alphanumeric characters and '-' (hyphen), '_' (underscore), . (dot). Tagging element in the Metadata Profile schema v3 must have a value equal to one of the values: {onFieldName, onValue, onFieldName_onValue, onValue_onFieldName}. Tagging values meanings:<br />
** onFieldName: (only) the fieldName specified to metadata field must be added as a Tag;<br />
** onValue: (only) the value specified to metadata field must be added as a Tag;<br />
** onFieldName_onValue: both the fieldName and the value (in this order) specified to metadata field must be added as a Tag. They are separated by string used as separator (<tagging create="true|false" separator="char_to_separate">{onFieldName_onValue}</tagging>);<br />
** onValue_onFieldName: both the value and the fieldName (in this order) specified to metadata field must be added as a Tag. They are separated by string used as separator (<tagging create="true|false" separator="char_to_separate">{onValue_onFieldName}</tagging>). <br />
* Moreover, Tagging has two (optional) attribute: 'create' and 'separator'. The first one (create="true"|"false") is used to mean: create the Tag if does not exist, no otherwise. The second one (separator="char_to_separate") is the string that will be used to separate the FieldName from its value. Default value for separator is the character '-' if it is not specified.<br />
<br />
Tagging example: using following instance of metadata field<br />
<pre><br />
<metadatafield categoryref="contact"><br />
<fieldName>Name</fieldName><br />
<dataType>String</dataType><br />
<defaultValue>My Name</defaultValue><br />
<note>Insert your Name</note><br />
<tagging create="true" separator="-">onFieldName_onValue</tagging><br />
</metadatafield><br />
</pre><br />
<br />
where My Name is "Francesco", gCube Data Catalogue adds the tag Name-Francesco to metadata field if it does not exist<br />
<br />
'''Grouping''':<br />
* It is used by Data Catalogue fron-end for adding a metadata field to a Group of Data Catalogue. Data Catalogue [https://ckan-d4s.d4science.org/group groups] are used for browsing. Grouping element in the Metadata Profile schema v3 must have a value equal to one of the values: {onFieldName, onValue, onFieldName_onValue, onValue_onFieldName}. The (optional) attribute create="true" is used to mean: create the Group if does not exist, no otherwise. Grouping values meanings:<br />
** onFieldName: (only) the fieldName specified to metadata field must be added to a Group;<br />
** onValue: (only) the value specified to metadata field must be added to a Group;<br />
** onFieldName_onValue: both the fieldName and the value (in this order) specified to metadata field must be added to a Group (<grouping create="true|false">{onFieldName_onValue}</grouping>);<br />
** onValue_onFieldName: both the value and the fieldName (in this order) specified to metadata field must be added to a Group (<grouping create="true|false">{onValue_onFieldName}</grouping>).<br />
* Moreover, Grouping has one (optional) attribute: 'propagateUp' This property will let a user specify if an item, that is going to be added to that group, must be also added to the hierarchical chain of groups involving it. For instance, if we have group B as child of group A, and item I is going to be added to B, then it will also be added to A. <br />
<br />
'''DataType values''':<br />
* GeoJSON: is a string. [http://geojson.org/geojson-spec.html GeoJSON] is a format for encoding a variety of geographic data structures.<br />
<br />
GeoJSON example: an instance of MedataField for GeoSpatial<br />
<pre><br />
<metadatafield idref="category_id_#"><br />
<fieldName>spatial</fieldName> <!--'spatial' is mandatory name of GeoSpatial field --><br />
<dataType>GeoJSON</dataType><br />
<defaultValue>{"type": "Point","coordinates": [-20.145,74.078]}</defaultValue><br />
<note>shown as suggestions in the insert/update metadata form of CKAN</note><br />
</metadatafield><br />
<br />
</pre><br />
<br />
====== Metadata Profile schema: gcdcmetadataprofilev3.xsd ======<br />
<br />
The gCube Data Catalogue Metadata Profile (v.3) schema:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<xs:schema attributeFormDefault="unqualified"<br />
elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"><br />
<xs:include schemaLocation="NamespacesCatalogueCategories.xsd"/><br />
<xs:element name="metadataformat"><br />
<xs:complexType><br />
<xs:sequence><br />
<xs:element name="metadatafield" minOccurs="0" maxOccurs="unbounded"><br />
<xs:complexType><br />
<xs:sequence><br />
<xs:element type="xs:string" name="fieldName" /><br />
<xs:element type="xs:boolean" name="mandatory"<br />
minOccurs="0" maxOccurs="1" /><br />
<xs:element name="dataType"><br />
<xs:simpleType><br />
<xs:restriction base="xs:string"><br />
<xs:enumeration value="String" /><br />
<xs:enumeration value="Time" /><br />
<xs:enumeration value="Time_Interval" /><br />
<xs:enumeration value="Times_ListOf" /><br />
<xs:enumeration value="Text" /><br />
<xs:enumeration value="Boolean" /><br />
<xs:enumeration value="Number" /><br />
<xs:enumeration value="GeoJSON" /><br />
</xs:restriction><br />
</xs:simpleType><br />
</xs:element><br />
<xs:element type="xs:string" name="maxOccurs"<br />
minOccurs="0" maxOccurs="1" /><br />
<xs:element type="xs:string" name="defaultValue"<br />
minOccurs="0" maxOccurs="1" /><br />
<xs:element type="xs:string" name="note" minOccurs="0"<br />
maxOccurs="1" /><br />
<xs:element name="vocabulary" minOccurs="0" maxOccurs="1"><br />
<xs:complexType><br />
<xs:sequence><br />
<xs:element type="xs:string" name="vocabularyField"<br />
minOccurs="1" maxOccurs="unbounded" /><br />
</xs:sequence><br />
<xs:attribute type="xs:boolean" name="isMultiSelection" /><br />
</xs:complexType><br />
</xs:element><br />
<xs:element name="validator" minOccurs="0" maxOccurs="1"><br />
<xs:complexType><br />
<xs:sequence><br />
<xs:element type="xs:string" name="regularExpression" /><br />
</xs:sequence><br />
</xs:complexType><br />
</xs:element><br />
<xs:element name="tagging" type="TaggingType"<br />
minOccurs="0" maxOccurs="1"><br />
</xs:element><br />
<xs:element name="grouping" type="GroupingType"<br />
minOccurs="0" maxOccurs="1"><br />
</xs:element><br />
</xs:sequence><br />
<xs:attribute name="categoryref" use="optional" type="xs:string" /><br />
</xs:complexType><br />
</xs:element><br />
</xs:sequence><br />
<xs:attribute type="NotEmpty" use="required" name="type" /><br />
</xs:complexType><br />
</xs:element><br />
<xs:simpleType name="TaggingGroupingValue"><br />
<xs:restriction base="xs:string"><br />
<xs:enumeration value="onFieldName" /><br />
<xs:enumeration value="onValue" /><br />
<xs:enumeration value="onFieldName_onValue" /><br />
<xs:enumeration value="onValue_onFieldName" /><br />
</xs:restriction><br />
</xs:simpleType><br />
<xs:complexType name="TaggingType"><br />
<xs:simpleContent><br />
<xs:extension base="TaggingGroupingValue"><br />
<xs:attribute type="xs:boolean" name="create" /><br />
<xs:attribute type="NotEmpty" name="separator" /><br />
</xs:extension><br />
</xs:simpleContent><br />
</xs:complexType><br />
<xs:complexType name="GroupingType"><br />
<xs:simpleContent id="TaggingGroupingValue"><br />
<xs:extension base="TaggingGroupingValue"><br />
<xs:attribute type="xs:boolean" name="create" /><br />
<xs:attribute type="xs:boolean" name="propagateUp" /><br />
</xs:extension><br />
</xs:simpleContent><br />
</xs:complexType><br />
<xs:simpleType name="NotEmpty"><br />
<xs:restriction base="xs:string"><br />
<xs:minLength value="1" /><br />
</xs:restriction><br />
</xs:simpleType><br />
</xs:schema><br />
</pre><br />
<br />
You can download it by clicking on [https://wiki.gcube-system.org/images_gcube/e/e8/Gcdcmetadataprofilev3.xsd Gcdcmetadataprofilev3.xsd]<br />
<br />
A "generic" example of MetadataProfile.xml: <br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<metadataformat type="the_metadata_type" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="gcdcmetadataprofilev3.xsd"><br />
<metadatafield categoryref="idvalue0"><br />
<fieldName>fieldName</fieldName><br />
<dataType>String</dataType><br />
<defaultValue>defaultValue</defaultValue><br />
<note>note</note><br />
<vocabulary isMultiSelection="true"><br />
<vocabularyField>vocabularyField</vocabularyField><br />
</vocabulary><br />
<validator><br />
<regularExpression>regularExpression</regularExpression><br />
</validator><br />
<tagging create="true" separator="-">onFieldName_onValue</tagging><br />
<grouping create="true">onFieldName</grouping><br />
</metadatafield><br />
</metadataformat><br />
</pre><br />
<br />
Another example (of MetadataProfile.xml ) is the following one:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<metadataformat type="the_metadata_type"<br />
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />
xsi:noNamespaceSchemaLocation="gcdcmetadataprofilev3.xsd"><br />
<metadatafield categoryref="contact"><br />
<fieldName>Name</fieldName><br />
<dataType>String</dataType><br />
<defaultValue>My Name</defaultValue><br />
<note>Insert your Name</note><br />
<tagging create="true" separator="-">onFieldName_onValue</tagging><br />
</metadatafield><br />
<metadatafield categoryref="contact"><br />
<fieldName>Surname</fieldName><br />
<dataType>String</dataType><br />
<defaultValue>My Surname</defaultValue><br />
<note>Insert your Surname</note><br />
</metadatafield><br />
</metadataformat><br />
</pre><br />
<br />
====== Namespaces Categories schema: NamespacesCatalogueCategories.xsd ======<br />
<br />
The Namespaces Catalogue Categories schema: <br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<xs:schema attributeFormDefault="unqualified"<br />
elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"<br />
xmlns:category="http://www.w3.org/TR/html4/"><br />
<xs:element name="namespaces"><br />
<xs:complexType><br />
<xs:sequence><br />
<xs:element name="namespace" minOccurs="1" maxOccurs="unbounded"><br />
<xs:complexType><br />
<xs:sequence><br />
<xs:element type="xs:string" name="name" minOccurs="1"<br />
maxOccurs="1" /><br />
<xs:element type="xs:string" name="title" minOccurs="1"<br />
maxOccurs="1" /><br />
<xs:element type="xs:string" name="description"<br />
minOccurs="0" maxOccurs="1" /><br />
</xs:sequence><br />
<xs:attribute type="xs:string" name="id" use="required" /><br />
</xs:complexType><br />
</xs:element><br />
</xs:sequence><br />
</xs:complexType><br />
<xs:unique name="unique-namespace-id"><br />
<xs:selector xpath="namespace" /><br />
<xs:field xpath="@id" /><br />
</xs:unique><br />
</xs:element><br />
</xs:schema><br />
</pre><br />
<br />
You can download it by clicking on [https://wiki.gcube-system.org/images_gcube/d/d5/NamespacesCatalogueCategories.xsd NamespacesCatalogueCategories]<br />
<br />
An example of valid Namespaces.xml:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<namespaces xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />
xsi:noNamespaceSchemaLocation="NamespacesCatalogueCategories.xsd"><br />
<namespace id="contact"><br />
<name>Contact</name><br />
<title>Contact Title</title><br />
<description>This section is about Contact(s)</description><br />
</namespace><br />
<namespace id="developer_information"><br />
<name>Developer</name><br />
<title>Developer Title</title><br />
<description>This section is about Developer(s)</description><br />
</namespace><br />
<namespace id="extra_information"><br />
<name>Extra</name><br />
<title>Extra Title</title><br />
<description>This section is about Extra(s)</description><br />
</namespace><br />
</namespaces><br />
</pre><br />
<br />
===== Metadata Profile v.2 =====<br />
<br />
Relased in gCube 4.1. What's new:<br />
<br />
* Added datatype field (<datatype>). A valid datatype must be equal to one of the values {String, Time, Time_Interval, Times_ListOf, Text, Boolean, Number}. When data type is not specified the metadata field has default value as "String". DataType values:<br />
** String: is a string;<br />
** Time: an instant time that follows the general format: YYYY-MM-DD [HH:MM] where: YYYY: 4-digit year, MM: 2-digit month, DD: 2-digit day, [optional HH: 2-digit hour], [optional MM: 2-digit minute] (e.g. "2005-03-01");<br />
** Time_Interval: a continuous interval instead of a single instant by specifying a start and end time, separated by one '/' ('slash') character (e.g. "2005-03-01/2006-05-11");<br />
** Times_ListOf: a list of discrete time values, separated by a ',' ('comma') character (e.g. "2005-03-01, 2006-05-11, 2006-05-11-2007-04-12");<br />
** Text: is a text;<br />
** Boolean: is True/False;<br />
** Number: is a valid Java number, see: Apache Commons NumberUtils.isNumber.<br />
<br />
* Added multi selection attribute ('isMultiSelection=true|false') to vocabulary.<br />
Values of Time, Time_Interval and Times_ListOf are based on [https://en.wikipedia.org/wiki/ISO_8601 ISO 8601]<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<metadataformat><br />
<metadatafield><br />
<fieldName>Name</fieldName><br />
<mandatory>true</mandatory><br />
<dataType>String|Time|Time_Interval|Times_ListOf|Text|Boolean|Number</dataType><br />
<defaultValue>default value</defaultValue><br />
<note>shown as suggestions in the insert/update metadata form of CKAN<br />
</note><br />
<vocabulary isMultiSelection="true|false"><br />
<vocabularyField>field1</vocabularyField><br />
<vocabularyField>field2</vocabularyField><br />
<vocabularyField>field3</vocabularyField><br />
</vocabulary><br />
<validator><br />
<regularExpression>a regular expression for validating values<br />
</regularExpression><br />
</validator><br />
</metadatafield><br />
</metadataformat><br />
</pre><br />
<br />
It's possible to validate a Metadata Format schema using following DTD v2<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<!ELEMENT metadataformat (metadatafield+)><br />
<!ELEMENT metadatafield (fieldName, mandatory, datatype?, defaultValue?, note?, vocabulary?, validator?)><br />
<!ELEMENT fieldName (#PCDATA)><br />
<!ELEMENT mandatory (#PCDATA)><br />
<!ELEMENT dataType (#PCDATA)> <br />
<!ELEMENT defaultValue (#PCDATA)> <br />
<!ELEMENT note (#PCDATA)> <br />
<!ELEMENT vocabulary (vocabularyField+)> <br />
<!ATTLIST vocabulary isMultiSelection (true|false) "false"><br />
<!ELEMENT vocabularyField (#PCDATA)> <br />
<!ELEMENT validator (regularExpression)> <br />
<!ELEMENT regularExpression (#PCDATA)> <br />
<br />
<!--<br />
Where datatype element is the enum: {String, Time, Time_Interval, Times_ListOf, Text, Boolean, Number}<br />
Its xml schema:<br />
<xs:element name="dataType"><br />
<xs:simpleType><br />
<xs:restriction base="xs:string"><br />
<xs:enumeration value="String"/><br />
<xs:enumeration value="Time"/><br />
<xs:enumeration value="Time_Interval"/><br />
<xs:enumeration value="Times_ListOf"/><br />
<xs:enumeration value="Text"/><br />
<xs:enumeration value="Boolean"/><br />
<xs:enumeration value="Number"/><br />
</xs:restriction><br />
</xs:simpleType><br />
</xs:element> <br />
--><br />
</pre><br />
<br />
===== Metadata Profile v.1 =====<br />
<br />
Relased in gCube 4.0. The schema is:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"><br />
<metadataformat><br />
<metadatafield><br />
<fieldName>Name</fieldName><br />
<mandatory>true</mandatory><br />
<isBoolean>false</isBoolean><br />
<defaultValue>default value</defaultValue><br />
<note>shown as suggestions in the insert/update metadata form of CKAN</note><br />
<vocabulary><br />
<vocabularyField>field1</vocabularyField><br />
<vocabularyField>field2</vocabularyField><br />
<!-- ... others vocabulary fields --><br />
</vocabulary><br />
<validator><br />
<regularExpression>a regular expression for validating values</regularExpression><br />
</validator><br />
</metadatafield><br />
<!-- ... others metadata fields --><br />
</metadataformat><br />
</pre><br />
<br />
It's possible to validate a Metadata Format schema using following DTD v1<br />
<pre><br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<!ELEMENT metadataformat (metadatafield+)><br />
<!ELEMENT metadatafield (fieldName, mandatory, isBoolean?, defaultValue?, note?, vocabulary?, validator?)><br />
<!ELEMENT fieldName (#PCDATA)><br />
<!ELEMENT mandatory (#PCDATA)><br />
<!ELEMENT isBoolean (#PCDATA)> <!-- MUST BE (true|false) --><br />
<!ELEMENT defaultValue (#PCDATA)> <br />
<!ELEMENT note (#PCDATA)> <br />
<!ELEMENT vocabulary (vocabularyField+)> <br />
<!ELEMENT vocabularyField (#PCDATA)> <br />
<!ELEMENT validator (regularExpression)> <br />
<!ELEMENT regularExpression (#PCDATA)> <br />
<br />
</pre><br />
<br />
A possible instance of Metadata Field (<metadatafield>):<br />
<br />
<pre><br />
<metadatafield><br />
<fieldName>Accessibility</fieldName><br />
<mandatory>true</mandatory><br />
<defaultValue>virtual/public</defaultValue><br />
<vocabulary><br />
<vocabularyField>virtual/public</vocabularyField><br />
<vocabularyField>virtual/private</vocabularyField><br />
<vocabularyField>transactional</vocabularyField><br />
</vocabulary><br />
</metadatafield><br />
</pre><br />
<br />
=== Instances of Metadata Profile ===<br />
<br />
The following list shows the instances of metadata profile created in the D4Sciece infrastructure and currently used in gCube Data Catalogue:<br />
<br />
===== SoBigData.eu =====<br />
<br />
[[SoBigData.eu: Metadata Profile for gCube Data Catalogue]]<br />
<br />
== Ckan Connector ==<br />
<br />
TODO @Lucio<br />
<br />
== Geo Harvesting ==<br />
<br />
This extension contains plugins like [https://github.com/geosolutions-it/ckanext-geonetwork/wiki ckanext-geonetwork] (and others) which add geospatial capabilities to CKAN.<br />
<br />
Several harvesters to import geospatial metadata (like ISO 19139 format) into CKAN from other sources have been created in gCube Data Catalogue.<br />
In particular all metadata created into gCube Geonetwork (GeoNetwork is the catalog application to manage spatially referenced resources generated into D4Science Infrastructure) are harvested through the '''Geonetwork Resolver'''.<br />
<br />
Mapping (among fields) from an ISO19139 Metadata to Ckan Dataset via ckanext-geonetwork is shown in the following table:<br />
<br />
{| class="wikitable"<br />
! style="font-weight: bold;" | ISO19139<br />
! style="font-weight: bold;" | Ckan Dataset<br />
|-<br />
| '''Title'''<br />
| Title<br />
|-<br />
| '''Description'''<br />
| Description<br />
|-<br />
| '''bbox'''<br />
| spatial<br />
|-<br />
| style="font-style: italic;" | Descriptive Keywords<br />
| <br />
|-<br />
| '''gmd:keyword'''<br />
| Tag<br />
|-<br />
|-<br />
| <br />
| style="font-style: italic;" | Additional Info<br />
|-<br />
| metadata language, age,<br />
reference system, etc.<br />
| key/value<br />
|-<br />
|-<br />
| style="font-style: italic;" | Digital Transfer Option<br />
| style="font-style: italic;" | Data and Resource<br />
|-<br />
| CI_OnlineResource<br />
| <br />
|-<br />
| '''gmd:url'''<br />
| URL<br />
|-<br />
| '''gmd:name'''<br />
| Name<br />
|-<br />
| '''gmd:description'''<br />
| Description<br />
|}<br />
<br />
=== Geonetwork Resolver ===<br />
<br />
The 'Geonetwork Resolver' is a "middle tier" to perform queries on gCube Geonetwork services. It uses the 'Geonetwork Manager library' to discovery Geonetwork configurations like: Geonetwork service end-point, Geonetwork accounts and so on.<br />
Using the Geonetwork configurations discovered the resolver performs authentication on Geonetwork (if needed) and then forward the requests received to harvesting metadata on that Geonetwork. <br />
Authentication is needed to get layers stored as private on Geonetwork.<br />
<br />
The resolver is reachable by HTTP GET request and supports the following protocol: <br />
http[s]://[GEONETWORK_RESOLVER_BASE_URL]/[SCOPE]/[MODE]/[VISIBILITY]/[OWNER]/$$<br />
<br />
In detail, the protocol parameters are:<br />
<br />
* SCOPE (mandatory): the gCube scope used via 'Geonetwork Manager library' to discovery the Geonetwork service end-point and other configurations (like Geonetwork accounts and so on). It must be separated by character pipe '|'. i.e. gcube|devNext|NextNext;<br />
* MODE (mandatory): must be 'VRE' or 'HARVEST'. To harvest at VRE level or External GEONETWORK level;<br />
* VISIBILITY (mandatory): must be 'PUB' or 'PRV'. When PUB: only public layer/s is/are returned. When PRV: only private layer/s is/are returned;<br />
* OWNER (optional): to filter by owner passed as parameter. Only layer/s whose ownership belongs to owner passed are returned;<br />
* REQUEST DELIMITER (mandatory). must be '/$$'. It is the delimiter to specify the end of the query.<br />
<br />
i.e. CKAN harvester configured to retrieve metadata by the URL: http://data-d.d4science.org/geonetwork/d4science.research-infrastructures.eu|gCubeApps|RPrototypingLab/VRE/PRV/$$<br />
<br />
Where:<br />
* GEONETWORK_RESOLVER_BASE_URL has value: 'http://data-d.d4science.org/geonetwork';<br />
* SCOPE has value: 'd4science.research-infrastructures.eu|gCubeApps|RPrototypingLab';<br />
* MODE has value: 'VRE';<br />
* VISIBILITY has value: 'PRV';<br />
<br />
It retrieves all private layers of the VRE RPrototypingLab.<br />
<br />
== Geo Datasets ==<br />
<br />
In order to make a dataset queryable by location (geospatial dataset), a special extra must be defined, with its key named ‘spatial’. The value must be a valid GeoJSON geometry, for example:<br />
<br />
<pre><br />
{<br />
"type":"Polygon",<br />
"coordinates":[[[2.05827, 49.8625],[2.05827, 55.7447], [-6.41736, 55.7447], [-6.41736, 49.8625], [2.05827, 49.8625]]]<br />
}<br />
</pre><br />
<br />
[Note: the polygon must be closed]<br />
<br />
or<br />
<br />
<pre><br />
{<br />
"type": "Point",<br />
"coordinates": [-3.145,53.078]<br />
}<br />
</pre><br />
<br />
GeoJSON Format Specification are available here: http://geojson.org/geojson-spec.html<br />
Datasets with spatial values are automatically geo-indexed, for example so that they can be searched using spatial filters.<br />
<br />
=== GeoSpatial search for datasets: via API or Search Widget === <br />
<br />
Once your datasets are geo-indexed, you can perform spatial queries by bounding box (coordinates format is [LONG, LAT]), via the following API call:<br />
<br />
<pre><br />
/api/2/search/dataset/geo?bbox={minx,miny,maxx,maxy}[&crs={srid}]<br />
</pre><br />
<br />
If the bounding box coordinates are not in the same projection as the one defined in the database, a CRS must be provided, in one of the following forms:<br />
<br />
<pre><br />
urn:ogc:def:crs:EPSG::4326<br />
EPSG:4326<br />
4326<br />
</pre><br />
<br />
Otherwise default bounding box is 4326. CKAN Wiki page for [http://docs.ckan.org/projects/ckanext-spatial/en/latest/spatial-search.html#legacy-api Legacy API]<br />
<br />
Moreover, you can perform spatial queries using an integrated map widget available on CKAN, which allows filtering results by an area of interest. You can try it on [https://ckan-d4s.d4science.org/dataset D4Science Data Catalogue]<br />
<br />
CKAN Wiki page for [http://docs.ckan.org/projects/ckanext-spatial/en/latest/spatial-search.html#spatial-search-widget Spatial Search Widget ]<br />
<br />
== Users, Roles and Groups ==<br />
<br />
Three roles are envisaged to capture the actions users are allowed to execute by the catalogue in the context of each VRE:<br />
<br />
* '''''Catalogue_Member''''' - users with this role are allowed to:<br />
** View the organization’s private datasets.<br />
<br />
* '''''Catalogue_Editor''''' - users with this role are allowed to:<br />
** View the organization’s private datasets;<br />
** Publish new datasets (into the organization);<br />
** Edit or delete the organization’s datasets the user is owner of.<br />
<br />
* '''''Catalogue_Admin''''' - users with this role are allowed to:<br />
** View the organization’s private datasets;<br />
** Publish new datasets (into the organization);<br />
** Edit or delete any of the organization’s datasets;<br />
** Make datasets public or private.<br />
<br />
The default role assigned to every VRE user is ''Catalogue_Member'', i.e. every user of a VRE is entitled to view the private datasets published in the VRE scope in addition to any public dataset. VRE Managers can assign other roles to selected users to enlarge their capabilities.<br />
<br />
'''CKAN Groups''' can used to create and manage collections of datasets. This could be to catalogue datasets for a particular project or team, or on a particular theme, or as a very simple way to help people find and search your own published datasets.<br />
<br />
== D4Science CKAN plugin ==<br />
<br />
@TODO Francesco<br />
<br />
=== Release procedure to D4Science CKAN plugin ===<br />
<br />
<br />
@TODO Francesco<br />
<br />
== Access the Catalogue via RESTful service ==<br />
'''Since gCube 4.5'''<br />
You can find more details about the Catalogue Web Service at the following [http://wiki.gcube-system.org/index.php?title=Catalogue_restful_service page].<br />
<br />
== Related Issues ==<br />
<br />
[1] gCube Data Catalogue for Global Record of Stocks and Fisheries - https://wiki.gcube-system.org/gcube/GCube_Data_Catalogue_for_GRSF<br />
<br />
[2] Data Catalogue Resolver - https://wiki.gcube-system.org/gcube/URI_Resolver#CATALOGUE_Resolver</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Information_System_Resource_Registry&diff=29779
Information System Resource Registry
2017-11-03T13:25:39Z
<p>Pasquale.pagano: /* Interact with Resource Registry */</p>
<hr />
<div>[[Category: Developer's Guide]]<br />
[[Category: Information System]]<br />
{| align="right"<br />
||__TOC__<br />
|}<br />
Resource Registry is part of gCube [[Information System]].<br />
<br />
== Architecture ==<br />
<br />
The constituent components are:<br />
<br />
* [[Information System Resource Registry#Resource_Registry | Resource Registry ]]<br />
* [[Information System Resource Registry#Resource_Registry_Context_Client | Resource Registry Context Client]]<br />
* [[Information System Resource Registry#Resource_Registry_Schema_Client | Resource Registry Schema Client]]<br />
* [[Information System Resource Registry#Resource_Registry_Publisher | Resource Registry Publisher]]<br />
* [[Information System Resource Registry#Resource_Registry_Client | Resource Registry Client]]<br />
<br />
=== Resource Registry ===<br />
<br />
Resource Registry is the key component. <br />
It is a WebService running on [[Smartgears] responsible to store information regarding the Infrastructure the global and partial view of:<br />
* the resources (e.g. computing, storage, services, software, datasets); <br />
* their current status (e.g. up and running, available); <br />
* their relationships with other resources.<br />
* the policies governing their exploitation.<br />
<br />
Furthermore the Resource Registry is responsible of keeping track of the <br />
* schema of the entities and relations is storing;<br />
* their belonging to one or more application domain (i.e. Context) that make up the Infrastructure. In other words, the Resource Registry have to manage the Contexts (allowing to create hierarchy beetween them) and associate the entities and relations to one or more of the Contexts as requested by the different clients.<br />
<br />
The Resource registry is also responsible to notify any update or creation of any entity or relation to [[Information System Subscription Notification Service]].<br />
<br />
=== Resource Registry Context Client ===<br />
<br />
=== Resource Registry Schema Client ===<br />
<br />
=== Resource Registry Publisher ===<br />
<br />
<br />
=== Resource Registry Client ===<br />
<br />
Resource Registry Client is a java library providing RPC facilities to interact with [[#Query_&_Access|Query & Access]] port type.<br />
The library hide all the complexity of marshalling and unmarshalling of requests and result. <br />
By using this library any client is able to manage java classes instead of json object<br />
<br />
== Interact with Resource Registry ==<br />
<br />
To reach its goals Resource Registry offers 4 port types:<br />
* [[#Context_Management|Context Management]] : manage hierarchical Context.<br />
* [[#Schema_Management|Schema Management]] : register and define Entities and Relations schema<br />
* [[#ER_Management|ER Management]] : manage instances of registered Entity and Relation type<br />
* [[#Query_&_Access|Query & Access]] : query instances and get the schema definition of registered types<br />
<br />
Every Port type is exposed as [https://en.wikipedia.org/wiki/Representational_state_transfer REST] API.<br />
<br />
Every REST api is [https://en.wikipedia.org/wiki/JSON JSON] based. This means that any content present in an HTTP request is formatted by using JSON standard.<br />
<br />
=== Context Management ===<br />
<br />
It is responsible for managing [[Facet_Based_Resource_Model#Context| Context]] belonging to the same Application Domain.<br />
<br />
Security configuration based on [[Authorization Framework]] make this port type accessible only from [[Information System Resource Manager|Resource Manager]]. In other words no others client is allowed to manage [[Facet_Based_Resource_Model#Context| Context]] rather than [[Information System Resource Manager|Resource Manager]].<br />
<br />
[[Facet_Based_Resource_Model#Context|Context]] requirements:<br />
* No predefined number of levels.<br />
* Possibility to change the name of the Context with no impact for any component.<br />
* Possibility to move a [[Facet_Based_Resource_Model#Context| Context]] from a parent [[Facet_Based_Resource_Model#Context| Context]] to another.<br />
<br />
Available Methods:<br />
<br />
* [[#Create|Create]]<br />
* [[#Rename|Rename]]<br />
* [[#Move|Move]]<br />
* [[#Delete|Delete]]<br />
<br />
Any action made to Contexts succeed if the following requirements are guaranteed:<br />
* Two Context with same name can exist but only if they have different parents. The operation which will try to obtain a Context with the same name to the same parent will fails with no effect.<br />
* Any operation made in any Context has effect only to the Context. In other words, there will be no effect on the associated Entity and Relations.<br />
<br />
<br />
==== Create ====<br />
<br />
<pre>PUT /resource-registry/context</pre><br />
<br />
===== Description =====<br />
<br />
Create new Context as child of another Context (if any).<br />
<br />
===== Parameters =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Required<br />
! Description<br />
|-<br />
| '''name'''<br />
| String<br />
| true<br />
| The name of the context.<br />
|-<br />
| '''parentContextId'''<br />
| String (UUID)<br />
| false<br />
| The UUID of the parent Context if any<br />
|}<br />
<br />
===== Responses =====<br />
<br />
{|class="wikitable"<br />
! Code<br />
! Type<br />
! Description<br />
|-<br />
| 200<br />
| String<br />
| The json representation of the context.<br />
|}<br />
<br />
===== Examples =====<br />
<br />
Create a new Context with name '''gcube''' with no parent. It is a ROOT Context.<br />
<br />
''Request URL''<br />
<br />
<pre>PUT /resource-registry/context?name=gcube</pre><br />
<br />
''Response Body''<br />
<br />
<pre><br />
{<br />
"@class":"Context",<br />
"header": {<br />
"@class":"Header",<br />
"uuid":"2705dd32-c857-444b-818a-3ec69e339e5d",<br />
"creator":"luca.frosini",<br />
"creationTime":"2017-03-17 11:47:55",<br />
"lastUpdateTime":"2017-03-17 11:47:55"<br />
},<br />
"name":"gCube"<br />
}<br />
</pre><br />
<br />
<br />
<br />
Create a new Context with name '''devsec''' as child of Context with UUID '''2705dd32-c857-444b-818a-3ec69e339e5d (gcube)'''<br />
<br />
''Request URL''<br />
<br />
<pre>/resource-registry/context?name=devsec&parentContextId=2705dd32-c857-444b-818a-3ec69e339e5d</pre><br />
<br />
''Response Body''<br />
<br />
<pre><br />
{<br />
"@class":"Context",<br />
"header": {<br />
"@class":"Header",<br />
"uuid":"30f6254c-c87a-451e-bc0f-7cfcbd94a84a",<br />
"creator":"luca.frosini",<br />
"creationTime":"2017-03-17 11:47:56",<br />
"lastUpdateTime":"2017-03-17 11:47:56"<br />
}<br />
"name":"devsec"<br />
}<br />
</pre><br />
<br />
<br />
Create a new Context with name '''devVRE''' as child of Context with UUID '''30f6254c-c87a-451e-bc0f-7cfcbd94a84a (devsec)'''<br />
<br />
''Request URL''<br />
<br />
<pre>/resource-registry/context?name=devVRE&parentContextId=30f6254c-c87a-451e-bc0f-7cfcbd94a84a</pre><br />
<br />
''Response Body''<br />
<br />
<pre><br />
{<br />
"@class":"Context",<br />
"header": {<br />
"@class":"Header",<br />
"uuid":"9d73d3bd-1873-490c-b0a7-e3c0da11ad52",<br />
"creator":"luca.frosini",<br />
"creationTime":"2017-03-17 11:47:57",<br />
"lastUpdateTime":"2017-03-17 11:47:57"<br />
}<br />
"name":"devVRE"<br />
}<br />
</pre><br />
<br />
==== Rename ====<br />
<br />
<pre>POST /resource-registry/context/rename/{UUID}</pre><br />
<br />
===== Description =====<br />
<br />
Rename a Context identified by the UUID provided as path parameter to the new name provided as query parameter.<br />
<br />
===== Parameters =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Required<br />
! Description<br />
|-<br />
| '''{''Path Paramenter''}'''<br />
| String (UUID)<br />
| true<br />
| The UUID of the target context.<br />
|-<br />
| '''name'''<br />
| String<br />
| true<br />
| The new name of the target context.<br />
|}<br />
<br />
===== Responses =====<br />
<br />
{|class="wikitable"<br />
! Code<br />
! Type<br />
! Description<br />
|-<br />
| 200<br />
| String<br />
| The json representation of the context.<br />
|}<br />
<br />
===== Examples =====<br />
<br />
Rename a Context '''9d73d3bd-1873-490c-b0a7-e3c0da11ad52''' (was '''devVRE''') to the new name '''devNext'''.<br />
<br />
''Request URL''<br />
<br />
<pre>POST /resource-registry/context/rename/9d73d3bd-1873-490c-b0a7-e3c0da11ad52?name=devNext</pre><br />
<br />
''Response Body''<br />
<br />
<pre><br />
{<br />
"@class":"Context",<br />
"header": {<br />
"@class":"Header",<br />
"uuid":"9d73d3bd-1873-490c-b0a7-e3c0da11ad52",<br />
"creator":"luca.frosini",<br />
"creationTime":"2017-03-17 11:47:56",<br />
"lastUpdateTime":"2017-03-17 11:52:56"<br />
}<br />
"name":"devNext"<br />
}<br />
</pre><br />
<br />
==== Move ====<br />
<br />
<pre>POST /resource-registry/context/move/d821bcc0-946b-11e6-bdf4-800200c9a66[?parentContextId=a2fe0030-7b3d-4617-ba37-532c0e4b778d</pre><br />
<br />
==== Delete ====<br />
<br />
<pre>DELETE /resource-registry/context/d821bcc0-946b-11e6-bdf4-0800200c9a66</pre><br />
<br />
=== Schema Management ===<br />
<br />
At time of writing this port type is only accessible by using REST API.<br />
A java client is under development.<br />
<br />
==== Type Definition ====<br />
<br />
Any Type is described by the following attributes:<br />
<br />
* '''name''' (String): Type Name<br />
* '''description''' (String): The description of the Type. <code>default=null</code>.<br />
* '''abstractType''' (Boolean): Indicate if the type is abstract so that it cannot be instatiated. In other words only subtypes of this type can be isntantiated. <code>default=false</code>.<br />
* '''superclasses''' (List<String>): The list of all supertypes of this type. Multiple Inheritance is supported.<br />
* Zero o more [[Facet_Based_Resource_Model#Property | Properties]]<br />
<br />
===== Property =====<br />
<br />
Any [[Facet_Based_Resource_Model#Property | Property]] is described by the following attributes:<br />
<br />
* '''name''' : Property Name<br />
* '''type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''description''' : The description of the Property. <code>default=null</code>.<br />
* '''mandatory''' : Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''readOnly''' : The Property cannot change its value. <code>default=false</code>.<br />
* '''notNull''' : Whether the property must assume a value diverse from 'null' or not. <code>default=false</code><br />
* '''max''' : <code>default=null</code><br />
* '''min''' : <code>default=null</code><br />
* '''regexpr''' : A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value, <code>default=null</code>. A good online tool for regex is avalable at [https://regex101.com/ https://regex101.com/]<br />
<br />
====== Property Type Mapping ======<br />
<br />
[[Facet_Based_Resource_Model#Basic_Property_Type | Property Type]] are mapped to and integer to be used in property definition:<br />
<br />
Type binder is defined here:<br />
[http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/information-system/information-system-model/src/main/java/org/gcube/informationsystem/types/Type.java]<br />
<br />
{|class="wikitable"<br />
! Type<br />
! Integer Mapping<br />
! Java type <br />
! Description<br />
|-<br />
| Boolean<br />
| 0<br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
| Handles only the values <em>True</em> or <em>False</em>.<br />
|-<br />
| Integer<br />
| 1<br />
| <code>java.lang.Integer</code> or <code>int</code> or <code>java.math.BigInteger</code><br />
| 32-bit signed Integers.<br />
|-<br />
| Short<br />
| 2<br />
| <code>java.lang.Short</code> or <code>short</code><br />
| Small 16-bit signed integers.<br />
|-<br />
| Long<br />
| 3<br />
| <code>java.lang.Long</code> or <code>long</code><br />
| Big 64-bit signed integers.<br />
|-<br />
| Float<br />
| 4<br />
| <code>java.lang.Float</code> or <code>float</code><br />
| Decimal numbers<br />
|-<br />
| Double<br />
| 5<br />
| <code>java.lang.Double</code> or <code>double</code><br />
| Decimal numbers with high precision.<br />
|-<br />
| Date<br />
| 6<br />
| <code>java.util.Date</code><br />
| Any date with the precision up to milliseconds.<br />
|-<br />
| String<br />
| 7<br />
| <code>java.lang.String</code><br />
| Any string as alphanumeric sequence of chars.<br />
|-<br />
| Binary<br />
| 8<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
| Can contain any value as byte array.<br />
|-<br />
| Embedded<br />
| 9<br />
| <code>? extends org.gcube.informationsystem.model.embedded.Embedded</code><br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
|-<br />
| Embedded list<br />
| 10<br />
| <code>List&lt;? extends org.gcube.informationsystem.model.embedded.Embedded&gt;</code><br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
|-<br />
| Embedded set<br />
| 11<br />
| <code>Set&lt;? extends org.gcube.informationsystem.model.embedded.Embedded&gt;</code><br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
|-<br />
| Embedded map<br />
| 12<br />
| <code>Map&lt;String, ? extends org.gcube.informationsystem.model.embedded.Embedded&gt;</code><br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
|-<br />
| Byte<br />
| 17<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
| Single byte. usesful to store small 8-bit signed integers.<br />
|}<br />
<br />
==== Resource Type Creation ====<br />
<br />
<pre><br />
PUT /resource-registry/schema/Resource<br />
</pre><br />
<br />
'''''Request Body'''''<br />
<pre><br />
{<br />
"name":"Actor",<br />
"description":"Any entity (human or machine) playing an active role.",<br />
"abstractType":true, /* If the Resource cannot be instantiated */<br />
"superclasses":["Resource"], /* Resource or any registered specialization. */<br />
"properties":null /* MUST be null. The Resource cannot have any property. */<br />
}<br />
</pre><br />
<br />
==== Facet Type Creation ====<br />
<br />
<pre><br />
PUT /resource-registry/schema/Facet<br />
</pre><br />
<br />
'''''Request Body'''''<br />
<pre><br />
{<br />
"name":"ContactFacet",<br />
"description":"This facet is expected to capture contact information",<br />
"abstractType": false,<br />
"superclasses":["Facet"],<br />
"properties":[<br />
{<br />
"name":"name",<br />
"description":"First Name",<br />
"mandatory":true,<br />
"readonly":false,<br />
"notnull":true,<br />
"max":null,<br />
"min":null,<br />
"regexpr":null,<br />
"linkedType":null,<br />
"linkedClass":null,<br />
"type":7 /* String*/<br />
},{<br />
"name":"eMail",<br />
"description": "A restricted range of RFC‑822 compliant email address. ... ",<br />
"mandatory":true,<br />
"readonly":false,<br />
"notnull":true,<br />
"max":null,<br />
"min":null,<br />
"regexpr":"^[a-z0-9._%+-]{1,128}@[a-z0-9.-]{1,128}$",<br />
"linkedType":null,<br />
"linkedClass":null,<br />
"type":7 /* String */<br />
}<br />
]<br />
}<br />
</pre><br />
<br />
==== IsRelatedTo Type Creation ====<br />
<pre><br />
PUT /resource-registry/schema/IsRelatedTo<br />
</pre><br />
<br />
'''''Request Body'''''<br />
<pre><br />
{<br />
"name":"Hosts",<br />
"description": "…”,<br />
"abstractType":false,<br />
"superclasses":["IsRelatedTo"],<br />
"properties":[]<br />
}<br />
</pre><br />
<br />
==== ConsistsOf Type Creation ====<br />
<br />
<pre><br />
PUT /resource-registry/schema/ConsistsOf<br />
</pre><br />
<br />
'''''Request Body'''''<br />
<pre><br />
{<br />
"name":"HasContact",<br />
"description":"",<br />
"abstractType":true,<br />
"superclasses":["ConsistsOf"],<br />
"properties":[]<br />
}<br />
</pre><br />
<br />
==== Embedded Type Creation ====<br />
<pre><br />
PUT /resource-registry/schema/Embedded<br />
</pre><br />
<br />
'''''Request Body'''''<br />
<pre><br />
{<br />
"name":"AccessPolicy",<br />
"description":"",<br />
"abstractType":false,<br />
"superclasses":["Embedded"],<br />
"properties":[{<br />
"name":"policy",<br />
"description":"",<br />
"mandatory":false,<br />
"readonly":false,<br />
"notnull":false,<br />
"max":null,<br />
"min":null,<br />
"regexpr":null,<br />
"linkedType":null,<br />
"linkedClass":”ValueSchema”,<br />
"type": 9 /* Embedded */<br />
},{<br />
"name":"note",<br />
"description":"",<br />
"mandatory": false,<br />
"readonly":false,<br />
"notnull":false,<br />
"max":null,<br />
"min":null,<br />
"regexpr":null,<br />
"linkedType":null,<br />
"linkedClass":null,<br />
"type":7 /* String */<br />
}]<br />
}<br />
</pre><br />
<br />
=== ER Management ===<br />
<br />
Apart the REST API this port type can be used also by using a Java client<br />
<br />
<pre><br />
<dependency><br />
<groupId>org.gcube.information-system</groupId><br />
<artifactId>resource-registry-publisher</artifactId><br />
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version><br />
</dependency><br />
</pre><br />
<br />
To use the client you need first get a ''resourceRegistryPublisher'' instance. <br />
By using create method the library automatically query the Information System to get the correct endpoint for the current context.<br />
<br />
<pre><br />
SecurityTokenProvider.instance.set("Your-NextNext-Token-Here"); //If not already set<br />
ResourceRegistryPublisher resourceRegistryPublisher = ResourceRegistryPublisherFactory.create();<br />
</pre><br />
<br />
<br />
==== Facet Instances APIs ====<br />
<br />
===== Create Facet Instance =====<br />
<br />
====== REST API ======<br />
<pre><br />
PUT /resource-registry/er/facet/CPUFacet<br />
</pre><br />
<br />
'''''Request Body'''''<br />
<pre><br />
{<br />
"@class":"CPUFacet",<br />
"header":null,<br />
"model":"Opteron",<br />
"vendor":"AMD",<br />
"clockSpeed":"1 GHz"<br />
}<br />
</pre><br />
<br />
'''''Response Body'''''<br />
<pre><br />
{ <br />
"@class":"CPUFacet", "model":"Opteron", "vendor":"AMD", "clockSpeed":"1 GHz",<br />
"header": {<br />
"uuid":"69f0b376-38d2-4a85-bc63-37f9fa323f82",<br />
"creator":"luca.frosini", "creationTime":"2016-10-05 11:16:24",<br />
"lastUpdateTime":"2016-10-05 11:16:24<br />
}<br />
}<br />
</pre><br />
<br />
====== Java API ======<br />
<pre><br />
CPUFacet cpuFacet = new CPUFacetImpl();<br />
cpuFacet.setClockSpeed("1 GHz");<br />
cpuFacet.setModel("Opteron");<br />
cpuFacet.setVendor("AMD");<br />
<br />
CPUFacet createdCpuFacet = resourceRegistryPublisher.createFacet(CPUFacet.class, cpuFacet);<br />
UUID uuid = createdCpuFacet.getHeader().getUUID(); // 69f0b376-38d2-4a85-bc63-37f9fa323f82<br />
</pre><br />
<br />
===== Update Facet Instance =====<br />
<br />
====== REST API ======<br />
<pre><br />
POST /resource-registry/er/facet/69f0b376-38d2-4a85-bc63-37f9fa323f82<br />
</pre><br />
<br />
'''''Request Body'''''<br />
<pre><br />
{<br />
"@class":"CPUFacet",<br />
"header":{"uuid":"69f0b376-38d2-4a85-bc63-37f9fa323f82"}, /* if you pass the header only the UUID is checked and must be the same of the one provided in the URL*/<br />
"model":"Opteron",<br />
"vendor":"AMD",<br />
"clockSpeed":"2 GHz"<br />
}<br />
</pre><br />
<br />
'''''Response Body'''''<br />
<pre><br />
{ <br />
"@class":"CPUFacet", "model":"Opteron", "vendor":"AMD", "clockSpeed":"2 GHz",<br />
"header": {<br />
"uuid":"69f0b376-38d2-4a85-bc63-37f9fa323f82",<br />
"creator":"luca.frosini", "creationTime":"2016-10-05 11:16:24",<br />
"lastUpdateTime":"2016-10-05 11:17:32"<br />
}<br />
}<br />
</pre><br />
<br />
====== Java API ======<br />
<pre><br />
createdCpuFacet.setClockSpeed("2 GHz");<br />
CPUFacet updatedCpuFacet = resourceRegistryPublisher.updateFacet(CPUFacet.class, createdCpuFacet);<br />
</pre><br />
<br />
===== Delete Facet Instance =====<br />
<br />
====== REST API ======<br />
<pre><br />
DELETE /resource-registry/er/facet/69f0b376-38d2-4a85-bc63-37f9fa323f82<br />
</pre><br />
<br />
'''''Response Body'''''<br />
<pre><br />
true<br />
</pre><br />
<br />
====== Java API ======<br />
<pre><br />
boolean deleted = resourceRegistryPublisher.deleteFacet(createdCpuFacet);<br />
</pre><br />
<br />
==== Resource Instances APIs ====<br />
<br />
===== Create Resource Instance =====<br />
<br />
====== REST API ======<br />
<pre><br />
PUT /resource-registry/er/resource/HostingNode<br />
</pre><br />
<br />
'''''Request Body'''''<br />
<pre><br />
{<br />
"@class":"HostingNode",<br />
"consistsOf":[<br />
{ <br />
"@class":"ConsistsOf", <br />
"target":{ <br />
"@class":"CPUFacet",<br />
"model":"Opteron",<br />
"vendor":"AMD",<br />
"clockSpeed":"3 GHz"<br />
}<br />
},{<br />
"@class":"IsIdentifiedBy", <br />
"target":{ <br />
"@class":"NetworkingFacet",<br />
"header":{"uuid":"59617b01-5856-4d8e-b85c-590a42039933"}, <br />
/* In this example we suppose that the NetworkingFacet was already created, so the UUID is enought to attach it by using IsIdentifiedBy relation */<br />
}<br />
}<br />
],<br />
"isRelatedTo":[<br />
{<br />
"@class":"Hosts",<br />
"propagationConstraint":{<br />
"add":"unpropagate",<br />
"remove": "cascade"<br />
},<br />
"target":{<br />
"@class":"EService",<br />
"header":{"uuid":"9bff49c8-c0a7-45de-827c-accb71defbd3"} <br />
/* The EService was already created, so the UUID is enought to attach it by using Hosts relation */<br />
}<br />
}<br />
]<br />
}<br />
<br />
</pre><br />
<br />
'''''Response'''''<br />
<pre><br />
{<br />
"@class":"HostingNode",<br />
"header":{"uuid":"670eeabf-76c7-493f-a449-4e6e139a2e84"},<br />
"consistsOf":[<br />
{ <br />
"@class":"ConsistsOf",<br />
"header":{"uuid":"9d0b1b2b-ac4e-40a9-8dea-bec90076e0ca", ...},<br />
"target":{ <br />
"@class":"CPUFacet",<br />
"header":{"uuid":"1daef6a8-5ca4-4700-844b-2a2d784e17b0", ...},<br />
"model":"Opteron",<br />
"vendor":"AMD",<br />
"clockSpeed":"1 GHz"<br />
}<br />
},{<br />
"@class":"IsIdentifiedBy",<br />
"header":{"uuid":"02a7072c-4f72-4568-945b-9ddccc881e9f", ...},<br />
"target":{ <br />
"@class":"NetworkingFacet",<br />
"header":{"uuid":"59617b01-5856-4d8e-b85c-590a42039933", ...},<br />
"ipAddress" : "146.48.87.183",<br />
"hostName": "pc-frosini.isti.cnr.it",<br />
"domainName" : "isti.cnr.it",<br />
"mask" : "255.255.248.0",<br />
"broadcastAddress":"146.48.87.255"<br />
}<br />
}<br />
],<br />
"isRelatedTo":[<br />
{<br />
"@class":"Hosts",<br />
"header":{"uuid":"47494ad0-e606-4630-9def-4c607761ae14", ...},<br />
"propagationConstraint":{<br />
"add":"unpropagate",<br />
"remove": "cascade"<br />
},<br />
"target":{<br />
"@class":"EService",<br />
"header":{"uuid":"9bff49c8-c0a7-45de-827c-accb71defbd3", ...}<br />
}<br />
}<br />
]<br />
}<br />
</pre><br />
<br />
====== Java API ======<br />
<pre><br />
NetworkingFacet networkingFacet = new NetworkingFacetImpl();<br />
networkingFacet.setIPAddress("146.48.87.183");<br />
networkingFacet.setHostName("pc-frosini.isti.cnr.it");<br />
networkingFacet.setDomainName("isti.cnr.it");<br />
networkingFacet.setMask("255.255.248.0");<br />
networkingFacet.setBroadcastAddress("146.48.87.255");<br />
<br />
networkingFacet = resourceRegistryPublisher.createFacet(NetworkingFacet.class, networkingFacet);<br />
<br />
HostingNode hostingNode = new HostingNodeImpl();<br />
<br />
CPUFacet cpuFacet = new CPUFacetImpl();<br />
cpuFacet.setClockSpeed("1 GHz");<br />
cpuFacet.setModel("Opteron");<br />
cpuFacet.setVendor("AMD");<br />
hostingNode.addFacet(cpuFacet);<br />
<br />
isIdentifiedBy = new IsIdentifiedByImpl<Resource, Facet>(hostingNode, networkingFacet, null);<br />
hostingNode.attachFacet(isIdentifiedBy);<br />
<br />
PropagationConstraint propagationConstraint = new PropagationConstraintImpl();<br />
propagationConstraint.setRemoveConstraint(RemoveConstraint.cascade);<br />
propagationConstraint.setAddConstraint(AddConstraint.unpropagate);<br />
<br />
Hosts<HostingNode, EService> hosts = new HostsImpl<HostingNode, EService>(hostingNode, eService, propagationConstraint);<br />
hostingNode.attachResource(hosts);<br />
<br />
hostingNode = resourceRegistryPublisher.createResource(HostingNode.class, hostingNode);<br />
</pre><br />
<br />
===== Update Resource Instance =====<br />
<br />
====== REST API ======<br />
<pre><br />
POST /resource-registry/er/resource/670eeabf-76c7-493f-a449-4e6e139a2e84<br />
</pre><br />
<br />
'''''Request Body'''''<br />
<pre><br />
{<br />
"@class":"HostingNode",<br />
"header":{"uuid":"670eeabf-76c7-493f-a449-4e6e139a2e84", ...},<br />
"consistsOf":[<br />
{ <br />
"@class":"ConsistsOf",<br />
"header":{"uuid":"9d0b1b2b-ac4e-40a9-8dea-bec90076e0ca", ...},<br />
"target":{ <br />
"@class":"CPUFacet",<br />
"header":{"uuid":"1daef6a8-5ca4-4700-844b-2a2d784e17b0", ...},<br />
"model":"Opteron",<br />
"vendor":"AMD",<br />
"clockSpeed":"1 GHz" <br />
}<br />
},{<br />
"@class":"IsIdentifiedBy",<br />
"header":{"uuid":"02a7072c-4f72-4568-945b-9ddccc881e9f", ...},<br />
"target":{ <br />
"@class":"NetworkingFacet",<br />
"header":{"uuid":"59617b01-5856-4d8e-b85c-590a42039933", ...},<br />
"ipAddress" : "146.48.87.183",<br />
"hostName": "pc-frosini.isti.cnr.it",<br />
"domainName" : "isti.cnr.it",<br />
"mask" : "255.255.248.0",<br />
"broadcastAddress":"146.48.87.255",<br />
"username":"luca.frosini" /* Added this property */<br />
}<br />
}<br />
]<br />
}<br />
</pre><br />
<br />
'''''Response'''''<br />
<pre><br />
{<br />
"@class":"HostingNode",<br />
"header":{"uuid":"670eeabf-76c7-493f-a449-4e6e139a2e84", ...},<br />
"consistsOf":[<br />
{ <br />
"@class":"ConsistsOf",<br />
"header":{"uuid":"9d0b1b2b-ac4e-40a9-8dea-bec90076e0ca", ...},<br />
"target":{ <br />
"@class":"CPUFacet",<br />
"header":{"uuid":"1daef6a8-5ca4-4700-844b-2a2d784e17b0", ...},<br />
"model":"Opteron",<br />
"vendor":"AMD",<br />
"clockSpeed":"1 GHz"<br />
}<br />
},{<br />
"@class":"IsIdentifiedBy",<br />
"header":{"uuid":"02a7072c-4f72-4568-945b-9ddccc881e9f", ...},<br />
"target":{ <br />
"@class":"NetworkingFacet",<br />
"header":{"uuid":"59617b01-5856-4d8e-b85c-590a42039933", ...},<br />
"ipAddress" : "146.48.87.183",<br />
"hostName": "pc-frosini.isti.cnr.it",<br />
"domainName" : "isti.cnr.it",<br />
"mask" : "255.255.248.0",<br />
"broadcastAddress":"146.48.87.255",<br />
"username":"luca.frosini"<br />
}<br />
}<br />
]<br />
}<br />
</pre><br />
<br />
====== Java API ======<br />
<pre><br />
<br />
/* This is just a code example, here we suppose that there is only one identification Facet of the type (NetworkingFacet). This could not be true in real scenario*/<br />
networkingFacet = (NetworkingFacet) hostingNode.getIdentificationFacets().get(0);<br />
networkingFacet.setAdditionalProperty("username", "luca.frosini");<br />
<br />
hostingNode = resourceRegistryPublisher.updateResource(HostingNode.class, hostingNode);<br />
<br />
</pre><br />
<br />
===== Delete Resource Instance =====<br />
<br />
====== REST API ======<br />
<pre><br />
DELETE /resource-registry/er/resource/670eeabf-76c7-493f-a449-4e6e139a2e84<br />
</pre><br />
<br />
====== Java API ======<br />
<pre><br />
boolean deleted = resourceRegistryPublisher.deleteResource(hostingNode);<br />
</pre><br />
<br />
==== Relation Instances APIs ====<br />
<br />
<pre><br />
</pre><br />
<br />
=== Query & Access ===<br />
<br />
<br />
==== Exists ====<br />
<br />
<pre>HEAD /resource-registry/access/instance/{ER-Type}/{INSTANCE UUID}</pre><br />
<br />
Example<br />
<br />
<pre>HEAD /resource-registry/access/instance/ContactFacet/4d28077b-566d-4132-b073-f4edaf61dcb9</pre><br />
<br />
<br />
==== Get Instance ====<br />
<br />
<pre>GET /resource-registry/access/instance/{ER-Type}/{INSTANCE UUID}</pre><br />
<br />
Example <br />
<br />
<pre>GET /resource-registry/access/instance/ContactFacet/4d28077b-566d-4132-b073-f4edaf61dcb9</pre><br />
<br />
<br />
<br />
==== Get All Instances of a Specific Type ====<br />
<br />
<pre>GET /resource-registry/access/instances/{ER-Type}?[polymorphic=(true|false)][&reference={INSTANCE UUID}][&direction=(in|out|both)]</pre><br />
<br />
Default:<br />
* polymorphic : false<br />
* direction : both<br />
<br />
direction has sense only if reference UUID is provided, is ignored otherwise.<br />
<br />
<br />
<pre>GET /resource-registry/access/instances/EService?polymorphic=true</pre><br />
<br />
<pre>GET /resource-registry/access/instances/EService?polymorphic=true&reference=4d28077b-566d-4132-b073-f4edaf61dcb9&direction=(in|out|both)</pre><br />
<br />
<br />
==== Raw Query ====<br />
<br />
<pre>GET /resource-registry/access?query=SELECT FROM Facet</pre></div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Information_System_Resource_Registry&diff=29777
Information System Resource Registry
2017-11-03T13:25:20Z
<p>Pasquale.pagano: /* Architecture */</p>
<hr />
<div>[[Category: Developer's Guide]]<br />
[[Category: Information System]]<br />
{| align="right"<br />
||__TOC__<br />
|}<br />
Resource Registry is part of gCube [[Information System]].<br />
<br />
== Architecture ==<br />
<br />
The constituent components are:<br />
<br />
* [[Information System Resource Registry#Resource_Registry | Resource Registry ]]<br />
* [[Information System Resource Registry#Resource_Registry_Context_Client | Resource Registry Context Client]]<br />
* [[Information System Resource Registry#Resource_Registry_Schema_Client | Resource Registry Schema Client]]<br />
* [[Information System Resource Registry#Resource_Registry_Publisher | Resource Registry Publisher]]<br />
* [[Information System Resource Registry#Resource_Registry_Client | Resource Registry Client]]<br />
<br />
=== Resource Registry ===<br />
<br />
Resource Registry is the key component. <br />
It is a WebService running on [[Smartgears] responsible to store information regarding the Infrastructure the global and partial view of:<br />
* the resources (e.g. computing, storage, services, software, datasets); <br />
* their current status (e.g. up and running, available); <br />
* their relationships with other resources.<br />
* the policies governing their exploitation.<br />
<br />
Furthermore the Resource Registry is responsible of keeping track of the <br />
* schema of the entities and relations is storing;<br />
* their belonging to one or more application domain (i.e. Context) that make up the Infrastructure. In other words, the Resource Registry have to manage the Contexts (allowing to create hierarchy beetween them) and associate the entities and relations to one or more of the Contexts as requested by the different clients.<br />
<br />
The Resource registry is also responsible to notify any update or creation of any entity or relation to [[Information System Subscription Notification Service]].<br />
<br />
=== Resource Registry Context Client ===<br />
<br />
=== Resource Registry Schema Client ===<br />
<br />
=== Resource Registry Publisher ===<br />
<br />
<br />
=== Resource Registry Client ===<br />
<br />
Resource Registry Client is a java library providing RPC facilities to interact with [[#Query_&_Access|Query & Access]] port type.<br />
The library hide all the complexity of marshalling and unmarshalling of requests and result. <br />
By using this library any client is able to manage java classes instead of json object<br />
<br />
== Interact with Resource Registry ==<br />
<br />
=== Context Management ===<br />
<br />
It is responsible for managing [[Facet_Based_Resource_Model#Context| Context]] belonging to the same Application Domain.<br />
<br />
Security configuration based on [[Authorization Framework]] make this port type accessible only from [[Information System Resource Manager|Resource Manager]]. In other words no others client is allowed to manage [[Facet_Based_Resource_Model#Context| Context]] rather than [[Information System Resource Manager|Resource Manager]].<br />
<br />
[[Facet_Based_Resource_Model#Context|Context]] requirements:<br />
* No predefined number of levels.<br />
* Possibility to change the name of the Context with no impact for any component.<br />
* Possibility to move a [[Facet_Based_Resource_Model#Context| Context]] from a parent [[Facet_Based_Resource_Model#Context| Context]] to another.<br />
<br />
Available Methods:<br />
<br />
* [[#Create|Create]]<br />
* [[#Rename|Rename]]<br />
* [[#Move|Move]]<br />
* [[#Delete|Delete]]<br />
<br />
Any action made to Contexts succeed if the following requirements are guaranteed:<br />
* Two Context with same name can exist but only if they have different parents. The operation which will try to obtain a Context with the same name to the same parent will fails with no effect.<br />
* Any operation made in any Context has effect only to the Context. In other words, there will be no effect on the associated Entity and Relations.<br />
<br />
<br />
==== Create ====<br />
<br />
<pre>PUT /resource-registry/context</pre><br />
<br />
===== Description =====<br />
<br />
Create new Context as child of another Context (if any).<br />
<br />
===== Parameters =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Required<br />
! Description<br />
|-<br />
| '''name'''<br />
| String<br />
| true<br />
| The name of the context.<br />
|-<br />
| '''parentContextId'''<br />
| String (UUID)<br />
| false<br />
| The UUID of the parent Context if any<br />
|}<br />
<br />
===== Responses =====<br />
<br />
{|class="wikitable"<br />
! Code<br />
! Type<br />
! Description<br />
|-<br />
| 200<br />
| String<br />
| The json representation of the context.<br />
|}<br />
<br />
===== Examples =====<br />
<br />
Create a new Context with name '''gcube''' with no parent. It is a ROOT Context.<br />
<br />
''Request URL''<br />
<br />
<pre>PUT /resource-registry/context?name=gcube</pre><br />
<br />
''Response Body''<br />
<br />
<pre><br />
{<br />
"@class":"Context",<br />
"header": {<br />
"@class":"Header",<br />
"uuid":"2705dd32-c857-444b-818a-3ec69e339e5d",<br />
"creator":"luca.frosini",<br />
"creationTime":"2017-03-17 11:47:55",<br />
"lastUpdateTime":"2017-03-17 11:47:55"<br />
},<br />
"name":"gCube"<br />
}<br />
</pre><br />
<br />
<br />
<br />
Create a new Context with name '''devsec''' as child of Context with UUID '''2705dd32-c857-444b-818a-3ec69e339e5d (gcube)'''<br />
<br />
''Request URL''<br />
<br />
<pre>/resource-registry/context?name=devsec&parentContextId=2705dd32-c857-444b-818a-3ec69e339e5d</pre><br />
<br />
''Response Body''<br />
<br />
<pre><br />
{<br />
"@class":"Context",<br />
"header": {<br />
"@class":"Header",<br />
"uuid":"30f6254c-c87a-451e-bc0f-7cfcbd94a84a",<br />
"creator":"luca.frosini",<br />
"creationTime":"2017-03-17 11:47:56",<br />
"lastUpdateTime":"2017-03-17 11:47:56"<br />
}<br />
"name":"devsec"<br />
}<br />
</pre><br />
<br />
<br />
Create a new Context with name '''devVRE''' as child of Context with UUID '''30f6254c-c87a-451e-bc0f-7cfcbd94a84a (devsec)'''<br />
<br />
''Request URL''<br />
<br />
<pre>/resource-registry/context?name=devVRE&parentContextId=30f6254c-c87a-451e-bc0f-7cfcbd94a84a</pre><br />
<br />
''Response Body''<br />
<br />
<pre><br />
{<br />
"@class":"Context",<br />
"header": {<br />
"@class":"Header",<br />
"uuid":"9d73d3bd-1873-490c-b0a7-e3c0da11ad52",<br />
"creator":"luca.frosini",<br />
"creationTime":"2017-03-17 11:47:57",<br />
"lastUpdateTime":"2017-03-17 11:47:57"<br />
}<br />
"name":"devVRE"<br />
}<br />
</pre><br />
<br />
==== Rename ====<br />
<br />
<pre>POST /resource-registry/context/rename/{UUID}</pre><br />
<br />
===== Description =====<br />
<br />
Rename a Context identified by the UUID provided as path parameter to the new name provided as query parameter.<br />
<br />
===== Parameters =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Required<br />
! Description<br />
|-<br />
| '''{''Path Paramenter''}'''<br />
| String (UUID)<br />
| true<br />
| The UUID of the target context.<br />
|-<br />
| '''name'''<br />
| String<br />
| true<br />
| The new name of the target context.<br />
|}<br />
<br />
===== Responses =====<br />
<br />
{|class="wikitable"<br />
! Code<br />
! Type<br />
! Description<br />
|-<br />
| 200<br />
| String<br />
| The json representation of the context.<br />
|}<br />
<br />
===== Examples =====<br />
<br />
Rename a Context '''9d73d3bd-1873-490c-b0a7-e3c0da11ad52''' (was '''devVRE''') to the new name '''devNext'''.<br />
<br />
''Request URL''<br />
<br />
<pre>POST /resource-registry/context/rename/9d73d3bd-1873-490c-b0a7-e3c0da11ad52?name=devNext</pre><br />
<br />
''Response Body''<br />
<br />
<pre><br />
{<br />
"@class":"Context",<br />
"header": {<br />
"@class":"Header",<br />
"uuid":"9d73d3bd-1873-490c-b0a7-e3c0da11ad52",<br />
"creator":"luca.frosini",<br />
"creationTime":"2017-03-17 11:47:56",<br />
"lastUpdateTime":"2017-03-17 11:52:56"<br />
}<br />
"name":"devNext"<br />
}<br />
</pre><br />
<br />
==== Move ====<br />
<br />
<pre>POST /resource-registry/context/move/d821bcc0-946b-11e6-bdf4-800200c9a66[?parentContextId=a2fe0030-7b3d-4617-ba37-532c0e4b778d</pre><br />
<br />
==== Delete ====<br />
<br />
<pre>DELETE /resource-registry/context/d821bcc0-946b-11e6-bdf4-0800200c9a66</pre><br />
<br />
=== Schema Management ===<br />
<br />
At time of writing this port type is only accessible by using REST API.<br />
A java client is under development.<br />
<br />
==== Type Definition ====<br />
<br />
Any Type is described by the following attributes:<br />
<br />
* '''name''' (String): Type Name<br />
* '''description''' (String): The description of the Type. <code>default=null</code>.<br />
* '''abstractType''' (Boolean): Indicate if the type is abstract so that it cannot be instatiated. In other words only subtypes of this type can be isntantiated. <code>default=false</code>.<br />
* '''superclasses''' (List<String>): The list of all supertypes of this type. Multiple Inheritance is supported.<br />
* Zero o more [[Facet_Based_Resource_Model#Property | Properties]]<br />
<br />
===== Property =====<br />
<br />
Any [[Facet_Based_Resource_Model#Property | Property]] is described by the following attributes:<br />
<br />
* '''name''' : Property Name<br />
* '''type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''description''' : The description of the Property. <code>default=null</code>.<br />
* '''mandatory''' : Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''readOnly''' : The Property cannot change its value. <code>default=false</code>.<br />
* '''notNull''' : Whether the property must assume a value diverse from 'null' or not. <code>default=false</code><br />
* '''max''' : <code>default=null</code><br />
* '''min''' : <code>default=null</code><br />
* '''regexpr''' : A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value, <code>default=null</code>. A good online tool for regex is avalable at [https://regex101.com/ https://regex101.com/]<br />
<br />
====== Property Type Mapping ======<br />
<br />
[[Facet_Based_Resource_Model#Basic_Property_Type | Property Type]] are mapped to and integer to be used in property definition:<br />
<br />
Type binder is defined here:<br />
[http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/information-system/information-system-model/src/main/java/org/gcube/informationsystem/types/Type.java]<br />
<br />
{|class="wikitable"<br />
! Type<br />
! Integer Mapping<br />
! Java type <br />
! Description<br />
|-<br />
| Boolean<br />
| 0<br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
| Handles only the values <em>True</em> or <em>False</em>.<br />
|-<br />
| Integer<br />
| 1<br />
| <code>java.lang.Integer</code> or <code>int</code> or <code>java.math.BigInteger</code><br />
| 32-bit signed Integers.<br />
|-<br />
| Short<br />
| 2<br />
| <code>java.lang.Short</code> or <code>short</code><br />
| Small 16-bit signed integers.<br />
|-<br />
| Long<br />
| 3<br />
| <code>java.lang.Long</code> or <code>long</code><br />
| Big 64-bit signed integers.<br />
|-<br />
| Float<br />
| 4<br />
| <code>java.lang.Float</code> or <code>float</code><br />
| Decimal numbers<br />
|-<br />
| Double<br />
| 5<br />
| <code>java.lang.Double</code> or <code>double</code><br />
| Decimal numbers with high precision.<br />
|-<br />
| Date<br />
| 6<br />
| <code>java.util.Date</code><br />
| Any date with the precision up to milliseconds.<br />
|-<br />
| String<br />
| 7<br />
| <code>java.lang.String</code><br />
| Any string as alphanumeric sequence of chars.<br />
|-<br />
| Binary<br />
| 8<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
| Can contain any value as byte array.<br />
|-<br />
| Embedded<br />
| 9<br />
| <code>? extends org.gcube.informationsystem.model.embedded.Embedded</code><br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
|-<br />
| Embedded list<br />
| 10<br />
| <code>List&lt;? extends org.gcube.informationsystem.model.embedded.Embedded&gt;</code><br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
|-<br />
| Embedded set<br />
| 11<br />
| <code>Set&lt;? extends org.gcube.informationsystem.model.embedded.Embedded&gt;</code><br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
|-<br />
| Embedded map<br />
| 12<br />
| <code>Map&lt;String, ? extends org.gcube.informationsystem.model.embedded.Embedded&gt;</code><br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
|-<br />
| Byte<br />
| 17<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
| Single byte. usesful to store small 8-bit signed integers.<br />
|}<br />
<br />
==== Resource Type Creation ====<br />
<br />
<pre><br />
PUT /resource-registry/schema/Resource<br />
</pre><br />
<br />
'''''Request Body'''''<br />
<pre><br />
{<br />
"name":"Actor",<br />
"description":"Any entity (human or machine) playing an active role.",<br />
"abstractType":true, /* If the Resource cannot be instantiated */<br />
"superclasses":["Resource"], /* Resource or any registered specialization. */<br />
"properties":null /* MUST be null. The Resource cannot have any property. */<br />
}<br />
</pre><br />
<br />
==== Facet Type Creation ====<br />
<br />
<pre><br />
PUT /resource-registry/schema/Facet<br />
</pre><br />
<br />
'''''Request Body'''''<br />
<pre><br />
{<br />
"name":"ContactFacet",<br />
"description":"This facet is expected to capture contact information",<br />
"abstractType": false,<br />
"superclasses":["Facet"],<br />
"properties":[<br />
{<br />
"name":"name",<br />
"description":"First Name",<br />
"mandatory":true,<br />
"readonly":false,<br />
"notnull":true,<br />
"max":null,<br />
"min":null,<br />
"regexpr":null,<br />
"linkedType":null,<br />
"linkedClass":null,<br />
"type":7 /* String*/<br />
},{<br />
"name":"eMail",<br />
"description": "A restricted range of RFC‑822 compliant email address. ... ",<br />
"mandatory":true,<br />
"readonly":false,<br />
"notnull":true,<br />
"max":null,<br />
"min":null,<br />
"regexpr":"^[a-z0-9._%+-]{1,128}@[a-z0-9.-]{1,128}$",<br />
"linkedType":null,<br />
"linkedClass":null,<br />
"type":7 /* String */<br />
}<br />
]<br />
}<br />
</pre><br />
<br />
==== IsRelatedTo Type Creation ====<br />
<pre><br />
PUT /resource-registry/schema/IsRelatedTo<br />
</pre><br />
<br />
'''''Request Body'''''<br />
<pre><br />
{<br />
"name":"Hosts",<br />
"description": "…”,<br />
"abstractType":false,<br />
"superclasses":["IsRelatedTo"],<br />
"properties":[]<br />
}<br />
</pre><br />
<br />
==== ConsistsOf Type Creation ====<br />
<br />
<pre><br />
PUT /resource-registry/schema/ConsistsOf<br />
</pre><br />
<br />
'''''Request Body'''''<br />
<pre><br />
{<br />
"name":"HasContact",<br />
"description":"",<br />
"abstractType":true,<br />
"superclasses":["ConsistsOf"],<br />
"properties":[]<br />
}<br />
</pre><br />
<br />
==== Embedded Type Creation ====<br />
<pre><br />
PUT /resource-registry/schema/Embedded<br />
</pre><br />
<br />
'''''Request Body'''''<br />
<pre><br />
{<br />
"name":"AccessPolicy",<br />
"description":"",<br />
"abstractType":false,<br />
"superclasses":["Embedded"],<br />
"properties":[{<br />
"name":"policy",<br />
"description":"",<br />
"mandatory":false,<br />
"readonly":false,<br />
"notnull":false,<br />
"max":null,<br />
"min":null,<br />
"regexpr":null,<br />
"linkedType":null,<br />
"linkedClass":”ValueSchema”,<br />
"type": 9 /* Embedded */<br />
},{<br />
"name":"note",<br />
"description":"",<br />
"mandatory": false,<br />
"readonly":false,<br />
"notnull":false,<br />
"max":null,<br />
"min":null,<br />
"regexpr":null,<br />
"linkedType":null,<br />
"linkedClass":null,<br />
"type":7 /* String */<br />
}]<br />
}<br />
</pre><br />
<br />
=== ER Management ===<br />
<br />
Apart the REST API this port type can be used also by using a Java client<br />
<br />
<pre><br />
<dependency><br />
<groupId>org.gcube.information-system</groupId><br />
<artifactId>resource-registry-publisher</artifactId><br />
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version><br />
</dependency><br />
</pre><br />
<br />
To use the client you need first get a ''resourceRegistryPublisher'' instance. <br />
By using create method the library automatically query the Information System to get the correct endpoint for the current context.<br />
<br />
<pre><br />
SecurityTokenProvider.instance.set("Your-NextNext-Token-Here"); //If not already set<br />
ResourceRegistryPublisher resourceRegistryPublisher = ResourceRegistryPublisherFactory.create();<br />
</pre><br />
<br />
<br />
==== Facet Instances APIs ====<br />
<br />
===== Create Facet Instance =====<br />
<br />
====== REST API ======<br />
<pre><br />
PUT /resource-registry/er/facet/CPUFacet<br />
</pre><br />
<br />
'''''Request Body'''''<br />
<pre><br />
{<br />
"@class":"CPUFacet",<br />
"header":null,<br />
"model":"Opteron",<br />
"vendor":"AMD",<br />
"clockSpeed":"1 GHz"<br />
}<br />
</pre><br />
<br />
'''''Response Body'''''<br />
<pre><br />
{ <br />
"@class":"CPUFacet", "model":"Opteron", "vendor":"AMD", "clockSpeed":"1 GHz",<br />
"header": {<br />
"uuid":"69f0b376-38d2-4a85-bc63-37f9fa323f82",<br />
"creator":"luca.frosini", "creationTime":"2016-10-05 11:16:24",<br />
"lastUpdateTime":"2016-10-05 11:16:24<br />
}<br />
}<br />
</pre><br />
<br />
====== Java API ======<br />
<pre><br />
CPUFacet cpuFacet = new CPUFacetImpl();<br />
cpuFacet.setClockSpeed("1 GHz");<br />
cpuFacet.setModel("Opteron");<br />
cpuFacet.setVendor("AMD");<br />
<br />
CPUFacet createdCpuFacet = resourceRegistryPublisher.createFacet(CPUFacet.class, cpuFacet);<br />
UUID uuid = createdCpuFacet.getHeader().getUUID(); // 69f0b376-38d2-4a85-bc63-37f9fa323f82<br />
</pre><br />
<br />
===== Update Facet Instance =====<br />
<br />
====== REST API ======<br />
<pre><br />
POST /resource-registry/er/facet/69f0b376-38d2-4a85-bc63-37f9fa323f82<br />
</pre><br />
<br />
'''''Request Body'''''<br />
<pre><br />
{<br />
"@class":"CPUFacet",<br />
"header":{"uuid":"69f0b376-38d2-4a85-bc63-37f9fa323f82"}, /* if you pass the header only the UUID is checked and must be the same of the one provided in the URL*/<br />
"model":"Opteron",<br />
"vendor":"AMD",<br />
"clockSpeed":"2 GHz"<br />
}<br />
</pre><br />
<br />
'''''Response Body'''''<br />
<pre><br />
{ <br />
"@class":"CPUFacet", "model":"Opteron", "vendor":"AMD", "clockSpeed":"2 GHz",<br />
"header": {<br />
"uuid":"69f0b376-38d2-4a85-bc63-37f9fa323f82",<br />
"creator":"luca.frosini", "creationTime":"2016-10-05 11:16:24",<br />
"lastUpdateTime":"2016-10-05 11:17:32"<br />
}<br />
}<br />
</pre><br />
<br />
====== Java API ======<br />
<pre><br />
createdCpuFacet.setClockSpeed("2 GHz");<br />
CPUFacet updatedCpuFacet = resourceRegistryPublisher.updateFacet(CPUFacet.class, createdCpuFacet);<br />
</pre><br />
<br />
===== Delete Facet Instance =====<br />
<br />
====== REST API ======<br />
<pre><br />
DELETE /resource-registry/er/facet/69f0b376-38d2-4a85-bc63-37f9fa323f82<br />
</pre><br />
<br />
'''''Response Body'''''<br />
<pre><br />
true<br />
</pre><br />
<br />
====== Java API ======<br />
<pre><br />
boolean deleted = resourceRegistryPublisher.deleteFacet(createdCpuFacet);<br />
</pre><br />
<br />
==== Resource Instances APIs ====<br />
<br />
===== Create Resource Instance =====<br />
<br />
====== REST API ======<br />
<pre><br />
PUT /resource-registry/er/resource/HostingNode<br />
</pre><br />
<br />
'''''Request Body'''''<br />
<pre><br />
{<br />
"@class":"HostingNode",<br />
"consistsOf":[<br />
{ <br />
"@class":"ConsistsOf", <br />
"target":{ <br />
"@class":"CPUFacet",<br />
"model":"Opteron",<br />
"vendor":"AMD",<br />
"clockSpeed":"3 GHz"<br />
}<br />
},{<br />
"@class":"IsIdentifiedBy", <br />
"target":{ <br />
"@class":"NetworkingFacet",<br />
"header":{"uuid":"59617b01-5856-4d8e-b85c-590a42039933"}, <br />
/* In this example we suppose that the NetworkingFacet was already created, so the UUID is enought to attach it by using IsIdentifiedBy relation */<br />
}<br />
}<br />
],<br />
"isRelatedTo":[<br />
{<br />
"@class":"Hosts",<br />
"propagationConstraint":{<br />
"add":"unpropagate",<br />
"remove": "cascade"<br />
},<br />
"target":{<br />
"@class":"EService",<br />
"header":{"uuid":"9bff49c8-c0a7-45de-827c-accb71defbd3"} <br />
/* The EService was already created, so the UUID is enought to attach it by using Hosts relation */<br />
}<br />
}<br />
]<br />
}<br />
<br />
</pre><br />
<br />
'''''Response'''''<br />
<pre><br />
{<br />
"@class":"HostingNode",<br />
"header":{"uuid":"670eeabf-76c7-493f-a449-4e6e139a2e84"},<br />
"consistsOf":[<br />
{ <br />
"@class":"ConsistsOf",<br />
"header":{"uuid":"9d0b1b2b-ac4e-40a9-8dea-bec90076e0ca", ...},<br />
"target":{ <br />
"@class":"CPUFacet",<br />
"header":{"uuid":"1daef6a8-5ca4-4700-844b-2a2d784e17b0", ...},<br />
"model":"Opteron",<br />
"vendor":"AMD",<br />
"clockSpeed":"1 GHz"<br />
}<br />
},{<br />
"@class":"IsIdentifiedBy",<br />
"header":{"uuid":"02a7072c-4f72-4568-945b-9ddccc881e9f", ...},<br />
"target":{ <br />
"@class":"NetworkingFacet",<br />
"header":{"uuid":"59617b01-5856-4d8e-b85c-590a42039933", ...},<br />
"ipAddress" : "146.48.87.183",<br />
"hostName": "pc-frosini.isti.cnr.it",<br />
"domainName" : "isti.cnr.it",<br />
"mask" : "255.255.248.0",<br />
"broadcastAddress":"146.48.87.255"<br />
}<br />
}<br />
],<br />
"isRelatedTo":[<br />
{<br />
"@class":"Hosts",<br />
"header":{"uuid":"47494ad0-e606-4630-9def-4c607761ae14", ...},<br />
"propagationConstraint":{<br />
"add":"unpropagate",<br />
"remove": "cascade"<br />
},<br />
"target":{<br />
"@class":"EService",<br />
"header":{"uuid":"9bff49c8-c0a7-45de-827c-accb71defbd3", ...}<br />
}<br />
}<br />
]<br />
}<br />
</pre><br />
<br />
====== Java API ======<br />
<pre><br />
NetworkingFacet networkingFacet = new NetworkingFacetImpl();<br />
networkingFacet.setIPAddress("146.48.87.183");<br />
networkingFacet.setHostName("pc-frosini.isti.cnr.it");<br />
networkingFacet.setDomainName("isti.cnr.it");<br />
networkingFacet.setMask("255.255.248.0");<br />
networkingFacet.setBroadcastAddress("146.48.87.255");<br />
<br />
networkingFacet = resourceRegistryPublisher.createFacet(NetworkingFacet.class, networkingFacet);<br />
<br />
HostingNode hostingNode = new HostingNodeImpl();<br />
<br />
CPUFacet cpuFacet = new CPUFacetImpl();<br />
cpuFacet.setClockSpeed("1 GHz");<br />
cpuFacet.setModel("Opteron");<br />
cpuFacet.setVendor("AMD");<br />
hostingNode.addFacet(cpuFacet);<br />
<br />
isIdentifiedBy = new IsIdentifiedByImpl<Resource, Facet>(hostingNode, networkingFacet, null);<br />
hostingNode.attachFacet(isIdentifiedBy);<br />
<br />
PropagationConstraint propagationConstraint = new PropagationConstraintImpl();<br />
propagationConstraint.setRemoveConstraint(RemoveConstraint.cascade);<br />
propagationConstraint.setAddConstraint(AddConstraint.unpropagate);<br />
<br />
Hosts<HostingNode, EService> hosts = new HostsImpl<HostingNode, EService>(hostingNode, eService, propagationConstraint);<br />
hostingNode.attachResource(hosts);<br />
<br />
hostingNode = resourceRegistryPublisher.createResource(HostingNode.class, hostingNode);<br />
</pre><br />
<br />
===== Update Resource Instance =====<br />
<br />
====== REST API ======<br />
<pre><br />
POST /resource-registry/er/resource/670eeabf-76c7-493f-a449-4e6e139a2e84<br />
</pre><br />
<br />
'''''Request Body'''''<br />
<pre><br />
{<br />
"@class":"HostingNode",<br />
"header":{"uuid":"670eeabf-76c7-493f-a449-4e6e139a2e84", ...},<br />
"consistsOf":[<br />
{ <br />
"@class":"ConsistsOf",<br />
"header":{"uuid":"9d0b1b2b-ac4e-40a9-8dea-bec90076e0ca", ...},<br />
"target":{ <br />
"@class":"CPUFacet",<br />
"header":{"uuid":"1daef6a8-5ca4-4700-844b-2a2d784e17b0", ...},<br />
"model":"Opteron",<br />
"vendor":"AMD",<br />
"clockSpeed":"1 GHz" <br />
}<br />
},{<br />
"@class":"IsIdentifiedBy",<br />
"header":{"uuid":"02a7072c-4f72-4568-945b-9ddccc881e9f", ...},<br />
"target":{ <br />
"@class":"NetworkingFacet",<br />
"header":{"uuid":"59617b01-5856-4d8e-b85c-590a42039933", ...},<br />
"ipAddress" : "146.48.87.183",<br />
"hostName": "pc-frosini.isti.cnr.it",<br />
"domainName" : "isti.cnr.it",<br />
"mask" : "255.255.248.0",<br />
"broadcastAddress":"146.48.87.255",<br />
"username":"luca.frosini" /* Added this property */<br />
}<br />
}<br />
]<br />
}<br />
</pre><br />
<br />
'''''Response'''''<br />
<pre><br />
{<br />
"@class":"HostingNode",<br />
"header":{"uuid":"670eeabf-76c7-493f-a449-4e6e139a2e84", ...},<br />
"consistsOf":[<br />
{ <br />
"@class":"ConsistsOf",<br />
"header":{"uuid":"9d0b1b2b-ac4e-40a9-8dea-bec90076e0ca", ...},<br />
"target":{ <br />
"@class":"CPUFacet",<br />
"header":{"uuid":"1daef6a8-5ca4-4700-844b-2a2d784e17b0", ...},<br />
"model":"Opteron",<br />
"vendor":"AMD",<br />
"clockSpeed":"1 GHz"<br />
}<br />
},{<br />
"@class":"IsIdentifiedBy",<br />
"header":{"uuid":"02a7072c-4f72-4568-945b-9ddccc881e9f", ...},<br />
"target":{ <br />
"@class":"NetworkingFacet",<br />
"header":{"uuid":"59617b01-5856-4d8e-b85c-590a42039933", ...},<br />
"ipAddress" : "146.48.87.183",<br />
"hostName": "pc-frosini.isti.cnr.it",<br />
"domainName" : "isti.cnr.it",<br />
"mask" : "255.255.248.0",<br />
"broadcastAddress":"146.48.87.255",<br />
"username":"luca.frosini"<br />
}<br />
}<br />
]<br />
}<br />
</pre><br />
<br />
====== Java API ======<br />
<pre><br />
<br />
/* This is just a code example, here we suppose that there is only one identification Facet of the type (NetworkingFacet). This could not be true in real scenario*/<br />
networkingFacet = (NetworkingFacet) hostingNode.getIdentificationFacets().get(0);<br />
networkingFacet.setAdditionalProperty("username", "luca.frosini");<br />
<br />
hostingNode = resourceRegistryPublisher.updateResource(HostingNode.class, hostingNode);<br />
<br />
</pre><br />
<br />
===== Delete Resource Instance =====<br />
<br />
====== REST API ======<br />
<pre><br />
DELETE /resource-registry/er/resource/670eeabf-76c7-493f-a449-4e6e139a2e84<br />
</pre><br />
<br />
====== Java API ======<br />
<pre><br />
boolean deleted = resourceRegistryPublisher.deleteResource(hostingNode);<br />
</pre><br />
<br />
==== Relation Instances APIs ====<br />
<br />
<pre><br />
</pre><br />
<br />
=== Query & Access ===<br />
<br />
<br />
==== Exists ====<br />
<br />
<pre>HEAD /resource-registry/access/instance/{ER-Type}/{INSTANCE UUID}</pre><br />
<br />
Example<br />
<br />
<pre>HEAD /resource-registry/access/instance/ContactFacet/4d28077b-566d-4132-b073-f4edaf61dcb9</pre><br />
<br />
<br />
==== Get Instance ====<br />
<br />
<pre>GET /resource-registry/access/instance/{ER-Type}/{INSTANCE UUID}</pre><br />
<br />
Example <br />
<br />
<pre>GET /resource-registry/access/instance/ContactFacet/4d28077b-566d-4132-b073-f4edaf61dcb9</pre><br />
<br />
<br />
<br />
==== Get All Instances of a Specific Type ====<br />
<br />
<pre>GET /resource-registry/access/instances/{ER-Type}?[polymorphic=(true|false)][&reference={INSTANCE UUID}][&direction=(in|out|both)]</pre><br />
<br />
Default:<br />
* polymorphic : false<br />
* direction : both<br />
<br />
direction has sense only if reference UUID is provided, is ignored otherwise.<br />
<br />
<br />
<pre>GET /resource-registry/access/instances/EService?polymorphic=true</pre><br />
<br />
<pre>GET /resource-registry/access/instances/EService?polymorphic=true&reference=4d28077b-566d-4132-b073-f4edaf61dcb9&direction=(in|out|both)</pre><br />
<br />
<br />
==== Raw Query ====<br />
<br />
<pre>GET /resource-registry/access?query=SELECT FROM Facet</pre></div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Information_System&diff=29775
Information System
2017-11-03T13:22:23Z
<p>Pasquale.pagano: /* Definition */</p>
<hr />
<div><br />
The gCube Information System (IS) has been designed to support Research Infrastructure federation.<br />
<br />
== Definition ==<br />
Several definitions of Information System exist. Each definition aims to capture either a specific role or a specific behavior in systems managing some kind of information. <br />
<br />
It is quite common to define an information system (IS) as "any organized system for the collection, organization, storage and communication of information".<br />
<br />
The Encyclopaedia Britannica defines n information system (IS) as "an integrated set of components for collecting, storing, and processing data and for providing information, knowledge, and digital products".<br />
<br />
All the definitions convey on the characteristics of Information. Information consists of data that:<br />
* is accurate and timely, <br />
* is specific and organized for a purpose, <br />
* is presented within a context that gives it meaning and relevance, <br />
* can increase understanding and decrease uncertainty<br />
<br />
According to the Business Dictionary, an information system (IS) is "a combination of hardware, software, infrastructure and trained personnel organized to facilitate planning, control, coordination, and decision making in an organization"<br />
In this context, trained personnel consists of human resources, procedures for using, operating, and maintaining the information system, and set of basic principles and associated guidelines, a.k.a policies, formulated and enforced to direct and limit actions in pursuit of long-term goals.<br />
<br />
Looking at the MIT Press, an information system (IS) is "a software system to capture, transmit, store, retrieve, and manipulate data produced by software systems to provide access to information, thereby supporting people, organizations, or other software systems". This definition makes evident that software systems become producer and consumer of the Information System making it at the core of their business activities<br />
<br />
In the context of the research infrastructures and the system of systems, we can define an information system (IS) as:<br />
A software system<br />
* to capture, transmit, store, retrieve, and manipulate data produced by software systems<br />
* to provide access to information, organized for a purpose and within a contextual domain<br />
** used, accessed, and maintained according to well-known procedures operated under the limit of the (evolving) organization policies<br />
* to support people within an organization and other software systems <br />
<br />
<br />
''The term ‘research infrastructures’ refers to facilities, resources and related services used by the scientific community to conduct top-level research in their respective fields, ranging from social sciences to astronomy, genomics to nanotechnologies'' [https://ec.europa.eu/research/infrastructures/index_en.cfm?pg=about https://ec.europa.eu/research/infrastructures/index_en.cfm?pg=about]<br />
<br />
<br />
IS: a registry of the infrastructure offering global and partial view of <br />
* its resources (e.g. computing, storage, services, software, datasets); <br />
* their current status (e.g. up and running, available); <br />
* their relationships with other resources; <br />
* the policies governing their exploitation.<br />
<br />
== Requirements ==<br />
<br />
=== Functional Requirements ===<br />
<br />
* Data Definition Language (DDL) for schemas definition (entities and relations);<br />
* Entity and Relation instances must be:<br />
** Univocally identifiable;<br />
** Selective/Partial updatable;<br />
** Validated against the Schema.<br />
* Referential Integrity;<br />
* Dynamic Query (no pre-define query);<br />
* Standard Abstraction (desiderata);<br />
* Subscription Notification Support.<br />
<br />
=== Non-Functional Requirements ===<br />
<br />
* High Availability (HA);<br />
* Eventual Consistency; <br />
* Horizontal Scalability; <br />
* Multi-Tenancy, i.e. a single instance of the technology should be able to serve many “independent” contexts (between the same Application Domain) <ref>Please note that different Application domain must be managed by completely separated instances of the whole IS.<br />
</ref>;<br />
* EUPL licence compatibility of all its components.<br />
<br />
== Architecture ==<br />
<br />
[[File:Information-system-architecture.png | 800px]]<br />
<br />
The constituent components are:<br />
<br />
* [[Facet Based Resource Model]]<br />
** [[Facet_Based_Resource_Model#IS_Model | IS Model]]<br />
** [[Facet_Based_Resource_Model#gCube_Model | gCube Model]]<br />
* [[Information System Resource Registry]]<br />
** [[Information System Resource Registry#Resource_Registry| Resource Registry]]<br />
** [[Information System Resource Registry#Resource_Registry_Client | Resource Registry Client]]<br />
** [[Information System Resource Registry#Resource_Registry_Publisher | Resource Registry Publisher]]<br />
* Backend Database (i.e. [https://orientdb.com/ OrientDB] as Graph Database)<br />
* [[Information System Subscription Notification Service]]<br />
<br />
== Notes ==<br />
<br />
<references /></div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Accounting_Aggregator&diff=29319
Accounting Aggregator
2017-06-30T16:55:03Z
<p>Pasquale.pagano: /* Accounting Aggregator Execution */</p>
<hr />
<div>This component is responsible of aggregating the collected '''Accounting''' data.<br />
'''PLEASE NOTE THAT THIS COMPONENT IS NOT READY YET. IT IS STILL UNDER DEVELOPEMENT.'''<br />
<br />
== Accounting Aggregator in the Accounting Architecture ==<br />
<br />
The following image evidences the accounting-aggregator components as part of [[Accounting | Accounting Architecture]]:<br />
<br />
[[File:Accounting-architecture-accounting-aggregator.png]]<br />
<br />
== Accounting Aggregator Execution ==<br />
<br />
This component is a [[SmartExecutor | Smart Executor]] plugin and is launched as '''Global Scheduled Task''' (see [[SmartExecutor | Smart Executor]] for further information)<br />
<br />
It aggregates (lossless) accounted Usage Record. The scheduling plan is to run on different smart-executor equipped with this plugin with the following parameters:<br />
<br />
* Hourly => accounting records per hour are available for the past week;<br />
* Daily => accounting records per day are available for the past 3 months;<br />
* Monthly => accounting records per month are available for the past 2 years;<br />
* Yearly => accounting records per year are available for the past 10 years;</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Accounting_Aggregator&diff=29318
Accounting Aggregator
2017-06-30T16:46:31Z
<p>Pasquale.pagano: /* Accounting Aggregator Execution */</p>
<hr />
<div>This component is responsible of aggregating the collected '''Accounting''' data.<br />
'''PLEASE NOTE THAT THIS COMPONENT IS NOT READY YET. IT IS STILL UNDER DEVELOPEMENT.'''<br />
<br />
== Accounting Aggregator in the Accounting Architecture ==<br />
<br />
The following image evidences the accounting-aggregator components as part of [[Accounting | Accounting Architecture]]:<br />
<br />
[[File:Accounting-architecture-accounting-aggregator.png]]<br />
<br />
== Accounting Aggregator Execution ==<br />
<br />
This component is a [[SmartExecutor | Smart Executor]] plugin and is launched as '''Global Scheduled Task''' (see [[SmartExecutor | Smart Executor]] for further information)<br />
<br />
It aggregates (loseless) accounted Usage Record. The scheduling plan is to run on different smart-executor equipped with this plugin with the following parameters:<br />
<br />
* Hourly => accounting records per hour are available for the last week;<br />
* Daily => accounting records per day are available for the latest 3 months;<br />
* Monthly => accounting records per month are available for the last year;<br />
* Yearly => accounting records per year are available for the latest 10 years;</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Data_e-Infrastructure_Management_Facilities&diff=28021
Data e-Infrastructure Management Facilities
2016-12-13T16:15:09Z
<p>Pasquale.pagano: /* Subsystems */</p>
<hr />
<div><!-- CATEGORIES --> <br />
[[Category: gCube Features]]<br />
<!-- CATEGORIES --><br />
== Overview ==<br />
Data e-Infrastructure management facilities promote the optimal exploitation of the resources available in the e-Infrastructure and the integration of technology external to the e-Infrastructure. They insulate as much as possible the management of the e-Infrastructure from the data and the data management services that are hosted in or accessible through the infrastructure itself.<br />
<br />
The motto at the heart of the management facilities is <br />
<br />
''less dependencies for more management'' <br />
<br />
meaning that the requirements posed to resources (even independent resources) to be managed are minimal, close to zero in some cases. All the implemented solutions are prioritized in order to pursue this goal.<br />
<br />
Towards new directions of openness and interoperability called by our growing community, management facilities move along:<br />
* adoption of standards<br />
* support for new software platforms by implementing a zero-dependency approach to [[Software_Management_Functions|software management]]<br />
* a [[Resource_Model_(2nd_generation)|second generation]] of its Resource Model<br />
<br />
== Key Features ==<br />
<br />
;Extensible notion of resource<br />
: a resource model which is open to modular extensions at runtime by arbitrary third parties<br />
<br />
;Transparent software resource management <br />
:nearly zero-dependency requested to managed resources for being part of the infrastructure<br />
<br />
;Environment propagation<br />
:operational information among services are transparently propagated over a range of protocols (SOAP, HTTP/S, and more)<br />
<br />
;Dynamic Deployment and Optimal Resource (re)Allocation<br />
:remote deployment and (re-)configuration of resources across the infrastructure <br />
<br />
;Resource lifetime management<br />
:complete running of the entire lifetime of resources ranging from creation and publication to discovery, access and consumption<br />
<br />
;Self-elastic management<br />
:dynamic resource provisioning to meet peaks and lows in demand <br />
<br />
;Interoperability, openness and integration at software level<br />
:third-parties software can be added to the Data e-Infrastructure at runtime, other initiatives can exploit gCube in a standard way<br />
<br />
;Support to standards<br />
:crucial functionalities are accessible via recognized standards in order to enhance interoperability<br />
<br />
;Multi-platforms<br />
: not only gCore (our ''in-house'' platform), but also Tomcat6, external infrastructures, and a framework for bridging potentially any software hosting platform<br />
<br />
== Subsystems ==<br />
Data e-Infrastructure Management facilities are collectively delivered by the following set of software subsystems:<br />
<br />
[[Resource Management Specification]]<br />
<br />
[[Information System | SmartGears Based Information System Specification]]<br />
<br />
[[gCore Based Information System Specification]]<br />
<br />
[[Common Libraries Specification]]</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Data_Mining_Facilities&diff=27929
Data Mining Facilities
2016-11-30T18:25:46Z
<p>Pasquale.pagano: /* Overview */</p>
<hr />
<div>[[Category:gCube Features]]<br />
== Overview ==<br />
Data Mining facilities include a set of features, services and methods for performing data processing and mining on information sets. These features face several aspects of data processing ranging from modeling to clustering, from identification of anomalies to detection of hidden series. This set of services and libraries is used by the D4Science e-infrastructure to manage data mining problems even from a computational complexity point of view. Algorithms are executed in parallel and possibly distributed fashion, using the same D4Science nodes as working nodes. Furthermore, Services performing Data Mining operations are deployed according to a distributed architecture, in order to balance the load of those procedures requiring local resources. <br />
<br />
By means of the above features, Data Mining aims to manage problems like (i) the prediction of the impact of climate changes on biodiversity, (ii) the prevention of the spread of invasive species, (iii) the identification of geographical and ecological aspects of disease transmission, (iv) the conservation planning, (v) the prediction of suitable habitats for marine species. By using the computational facilities of the D4Science e-Infrastructure, algorithms can run in a cost-effective way letting scientists perform more experiments and combine different techniques.<br />
<br />
== Key Features ==<br />
<br />
The components part of the subsystem provide the following main key features:<br />
<br />
;parallel processing<br />
:parallelization of statistical algorithms using a map-reduce approach<br />
:cloud computing approach in a seamless way to the users<br />
<br />
;pre-cooked state-of-the-art data mining algorithms<br />
:algorithms oriented to biological-related problems supplied as-a-service<br />
:general purpose algorithms (e.g. Clustering, Principal Component Analysis, Artificial Neural Networks) supplied as-a-service<br />
<br />
;data trends generation and analysis<br />
:extraction of trends for biodiversity data<br />
:inspection of time series of observations on biological species<br />
:basic signal processing techniques to explore periodicities in trends<br />
<br />
;ecological niche modelling<br />
:algorithms to perform ecological niche modelling using either mechanistic or correlative approaches<br />
:species distribution maps generation<br />
<br />
== Specifications ==<br />
<br />
;[[DataMiner_Manager | DataMiner]]<br />
: a Service allowing the management of statistical data and multi-user requests for computation<br />
;[[DataMiner_Algorithms | DataMiner Algorithms]]<br />
: the complete list of algorithms supported by the [[DataMiner_Manager | DataMiner]]<br />
;[[How-to_Implement_Algorithms_for_DataMiner | How-to Implement Algorithms for DataMiner]]<br />
: How to implement algorithms for DataMiner<br />
;[[Statistical_Algorithms_Importer | Statistical Algorithms Importer]]<br />
: a tool to import R processes on DataMiner<br />
;[[DataMiner_Installation | DataMiner Installation]]<br />
: Installation guide for DataMiner<br />
;[[How_to_Interact_with_the_DataMiner_by_client | How to Interact with the DataMiner by client]]<br />
: Interacting with DataMiner from a thin client<br />
;[[Ecological Modeling]]<br />
: a set of methods for performing Data Mining operations. These include experiments and techniques categorization<br />
;[[Signal Processing]]<br />
: a set of methods to perform digital signal processing.<br />
;[[Statistical_Manager | Statistical Manager]]<br />
: the previous gCube system for Cloud computing</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Authorization_Framework&diff=27606
Authorization Framework
2016-11-02T16:38:32Z
<p>Pasquale.pagano: </p>
<hr />
<div>{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
The gCube Authorization framework is a token based authorization system in a gCube-based infrastructure.<br />
This framework is compliant with the [https://en.wikipedia.org/wiki/Attribute-based_access_control Attribute-based access control (ABAC)] that defines an access control paradigm whereby access rights are granted to users through the use of policies which combine attributes together.<br />
ABAC defines access control based on attributes which describe:<br />
* the requesting entity (either the user or the service), <br />
* the targeted resource (either the service or the resource), <br />
* the desired action (read, write, delete, execute), <br />
* and environmental or contextual information (either the VRE or the VO where the operation is executed).<br />
<br />
ABAC is a logical access control model that is distinguishable because it controls access to objects by evaluating rules against the attributes of the entities (requesting entity or target resource) actions and the environment relevant to a request. ABAC relies upon the evaluation of attributes of the requesting entity, attributes of the targeted resource, environment conditions, and a formal relationship or access control rule defining the allowable operations for entity-resource attribute and environment condition combinations. <br />
<br />
== The model == <br />
<br />
=== Token based authorization ===<br />
<br />
The token is a string generated on request by the Authorization service for identification purposes and associated with every entity belonging to a gCube-based infrastructure (users or services).<br />
The token is passed in every call and is automatically propagated in the lower layers.<br />
The token can be passed to a Smartgears service in 3 ways:<br />
* using the HTTP-header: adding the value ("gcube-token","{your-token}") to the header parameters.<br />
* using the query-string: adding gcube-token={your-token} to the existing query-string<br />
* logging via the default authentication widget showed by the browser using your gcube username as username and your token as password.<br />
<br />
The personal token can be retrieved using the token widget deployed on every environment of the portal.<br />
<br />
=== The Policy Language === <br />
<br />
The gCube Auhtorization Framework controls access to applications to allow or prevent the clients to perform various operations in the application. This is controlled by the Auhtorization Service embedded in the Smartgears framework with the help of authorization policies. The purpose of authorization policies is to control clients access. The authorization policies determine at runtime whether or not a particular action is denied. You can define authorization policies that satisfy the authorization requirements using the policy language.<br />
<br />
All the policies created in the system are used to DENY to a client an operation in a specific context. <br />
Two types of policy are supported:<br />
* User2Service (U2S)<br />
* Service2Service (S2S)<br />
<br />
The U2S policies are used to deny to an user or a role the acces to specific service or class of services.<br />
The S2S policies are used to deny to a service or a class of services the acces to specific service or class of services.<br />
To make easier the possibility to allow access only to few clients an except restriction is defined in the policies. <br />
<br />
For every policy a specific ACTION to prevent can be added (if supported from the service) otherwise all the ACTION will be denied:<br />
* ALL (default)<br />
* ACCESS<br />
* WRITE<br />
* DELETE<br />
* EXECUTE<br />
<br />
==== Examples ====<br />
<br />
* U2S(context, User('myUserName'), Service(ServiceClass, ServiceName, ServiceIdentifier ) )<br />
<br />
* U2S(context, Role('role'), Service(ServiceClass, ServiceName, ServiceIdentifier ) )<br />
<br />
* U2S(context, allExcept[Role('role1'), Role('role2')], Service(ServiceClass, ServiceName, ServiceIdentifier ) )<br />
<br />
* S2S(context, Service(ServiceClass1, ServiceName1, ServiceIdentifier), Service(ServiceClass2, ServiceName2, ServiceIdentifier2 ) )<br />
<br />
* S2S(context, Service(ServiceClass1, ServiceName1, ServiceIdentifier), Service(ServiceClass2, *) )<br />
<br />
* S2S(context, allExcept[Service(ServiceClass1, ServiceName1,*)], Service(*))<br />
<br />
== The System Architecture ==<br />
The Authorization framework is compliant with the [https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xacml XACML] reference architecture. XACML is the OASIS standard for fine-grained authorization management based on the concept of Attribute-based access control (ABAC), where access control decisions are made based on attributes associated with relevant entities while operating in a given operational context, a natural evolution from Role Based Access Control (RBAC).<br />
<br />
The XACML standard proposes a reference architecture with commonly accepted names for the various entities involved in the architecture. The nomenclature is not new (SAML uses similar names to describe entities in its ecosystem), nor is the architecture complicated, allowing for easier common base of understanding of the standard. It is composed by 5 modules<br />
<br />
* Policy Administration Point (PAP) - Point which manages access authorization policies<br />
* Policy Decision Point (PDP) - Point which evaluates access requests against authorization policies before issuing access decisions<br />
* Policy Enforcement Point (PEP) - Point which intercepts user's access request to a resource, makes a decision request to the PDP to obtain the access decision (i.e. access to the resource is approved or rejected), and acts on the received decision<br />
* Policy Information Point (PIP) - The system entity that acts as a source of attribute values (i.e. a resource, subject, environment)<br />
* Policy Retrieval Point (PRP) - Point where the XACML access authorization policies are stored, typically a database or the filesystem.<br />
<br />
The 5 modules' capabilities are implemented by gCube as follow.<br />
<br />
* Policy Administration Point (PAP) is the gCube Authorization Service<br />
* Policy Decision Point (PDP) is implemented by a PDP library distributed with gCube SmartGears <br />
* Policy Enforcement Point (PEP) is implemented by a PEP library distributed with gCube SmartGears<br />
* Policy Information Point (PIP) is implemented by the gCube Information System<br />
* Policy Retrieval Point (PRP) is implemented by a database controlled exclusively by the gCube Authorization Service<br />
<br />
[[File:Authorization_Architecture.jpg]]<br />
<br />
The following flow of control governs the authorization flow. <br />
<br />
The policy author uses policy authoring tools (GUI) (part of the PAP) to write policies governing access and exploitation of his/her own resources. <br />
<br />
The policy administrator then uses the PAP GUI to administer the policies. Please note that policies are not distributed to PDPs upon their creation but at first request referring access/exploitation of a given resource. PDPs use a cache with TTL to avoid the exchange of too many requests. <br />
<br />
The PEP intercepts the business level request to access the resource decorated with a token. It resolves the token by sending a request to the PAP and gets back information about the validity of the token to operate in the specific operational context. If the access is denied (invalid token) a Deny Response is immediately issued. If the access is permitted the request to the PAP allows to populate the PDP cache with the appropriate policies. Then it produces a request out of it and sends it to the PDP for actual decision making. <br />
<br />
The PDP, on receiving the request, looks up the policies deployed on it and figures out the ones which are pertinent to the specific request. It may, if necessary, query the PIP for additional attributes that are needed to evaluate the policies. By exploiting the attributes contained in the request, the attributes obtained from the PIP and attributes that are generic to the operational context, the PDP decides whether the request can be allowed (Permit response), denied (Deny response), is not applicable since none of the policies deployed on it can be used to evaluate the request (NotApplicable response) or there was some issue with evaluating the response against the policy, for example due to lack of sufficient attributes available to the PDP (Indeterminate response).<br />
<br />
The response is then sent by the PDP to the PEP. The PEP parses the response from the PDP and handles each of the four possible response cases. If either a Permit or a NotApplicable response is get back then the business request is passed to the service, otherwise a Deny response is issued.<br />
<br />
== Client Library ==<br />
<br />
Client library has a specific wiki page: [[Authorization_Client_Library | Authorization client Library ]]<br />
<br />
== Service installation ==<br />
<br />
Please refer to the [[Authorization_service_installation| Authorization service installation]] page.</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26172
Facet Based Resource Model
2016-07-25T14:00:08Z
<p>Pasquale.pagano: /* Suggested Extensions */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link ...<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
<br />
=== Resources and (isRelatedTo) Relations ===<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png|1024px]]<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facet ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
|+ Access Point Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
|+ Access Point Facet<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|<br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|<br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
|+ Contact Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|<br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|<br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|<br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|<br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|<br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
| [[#Legal_Body|Legal Body]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| A Legal Body has at least a Contact Facet which permit to identify the Legal Body per se.<br />
|-<br />
| [[#Person|Person]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| A Person has at least a Contact Facet which permit to identify the Person per se.<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContact|hasContact]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the owner<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasManager|hasManager]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
|+ Coverage Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|<br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCoverage|hasCoverage]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
|+ CPU Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU Facet]]<br />
| CPU Information<br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
|+ Descriptive Metadata Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata Facet]]<br />
| ...<br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
|+ Event Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| date<br />
| Date<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event Facet]]<br />
| ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event Facet]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event Facet]]<br />
| ...<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
|+ Identifier Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|<br />
|-<br />
| isPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
|<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|}<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
|+ License Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License Facet]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License Facet]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#License_Facet|License Facet]]<br />
| ...<br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
|+ Location Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|<br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|<br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|<br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location Facet]]<br />
| ...<br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
|+ Memory Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| RAM<br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
|+ Network Address Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Network_Address_Facet|Network Address Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address Facet]]<br />
| Network address ...<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
|+ Provenance Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance Facet]]<br />
| ...<br />
|}<br />
<br />
==== Schema Facet ====<br />
<br />
The goal of this facet is to provide a way to store a schema. This is an <code>Abstract</code> facet.<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Schema Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| schemaURL<br />
| URL<br />
| ...<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Schema_Facet|Schema Facet]]<br />
| ...<br />
|}<br />
<br />
===== JSON Schema Facet =====<br />
<br />
{|class="wikitable"<br />
|+ JSON Schema Facet <code>extends</code> [[#Schema_Facet|Schema Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| content<br />
| ...<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
|}<br />
<br />
===== XSD Schema Facet =====<br />
<br />
{|class="wikitable"<br />
|+ XSD Schema Facet <code>extends</code> [[#Schema_Facet|Schema Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| content<br />
| ...<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
|+ Simple Property Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property Facet]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Simple_Property_Facet|Simple Property Facet]]<br />
| E.g. Environment Variables<br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
|+ Software Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| The software enabling the E-Service capabilities<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software available in the E-Service environment that characterizes the specific E-Service instance<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software Facet]]<br />
| The software enabling the Running Plugin<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Useful to report the hosted software that are not registered in the Resource Registry as Software Resource, e.g. Operating System<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
|+ State Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State Facet]]<br />
| E.g. Deprecated, Active, Obsolete<br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
|+ Container State Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Container_State_Facet|Container State Facet]]<br />
| I.e. started, ready, certified, down, failed<br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
|+ Service State Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State Facet]]<br />
| I.e. STARTED, ready, down, failed<br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
|+ Subject Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject Facet]]<br />
| ...<br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
==== belongsTo ====<br />
<br />
{|class="wikitable"<br />
|+ belongsTo <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Person|Person]]<br />
| [[#belongsTo|belongsTo]]<br />
| align=center | 0..n<br />
| [[#Legal_Body|Legal Body]]<br />
| ...<br />
|}<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isActivatedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isActivatedBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isActivatedBy|isActivatedBy]]<br />
| align=center | 1..1<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration_Template|Configuration Template]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
===== isPartOf =====<br />
<br />
{|class="wikitable"<br />
|+ isPartOf <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isDerivationOf ====<br />
<br />
{|class="wikitable"<br />
|+ isDerivationOf <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isDerivationOf|isDerivationOf]]<br />
| align=center | 1..1<br />
| [[#Configuration_Template|Configuration Template]]<br />
|<br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== runsPlugin ====<br />
<br />
{|class="wikitable"<br />
|+ runsPlugin <code>extends</code> [[#runs|runs]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#runsPlugin|runsPlugin]]<br />
| align=center | 1..1<br />
| [[#Plugin|Plugin]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
| <br />
|}<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy <code>extends</code> [[#consistsOf|consistsOf]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
| [[#Legal_Body|Legal Body]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
| [[#Person|Person]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
|<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
| <br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== hasCoverage ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> hasCoverage <code>extends</code> [[#consistsOf|consistsOf]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasCoverage|hasCoverage]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCoverage|hasCoverage]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal <code>extends</code> [[#hasCoverage|hasCoverage]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial <code>extends</code> [[#hasCoverage|hasCoverage]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|}<br />
<br />
==== hasMemory ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> hasMemory <code>extends</code> [[#consistsOf|consistsOf]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasMemory|hasMemory]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| ...<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent <code>extends</code> [[#hasMemory|hasMemory]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile <code>extends</code> [[#hasMemory|hasMemory]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| RAM<br />
|}<br />
<br />
==== hasContact ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> hasContact <code>extends</code> [[#consistsOf|consistsOf]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContact|hasContact]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContact|hasContact]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasCreator <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasCurator <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasDeveloper <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasMaintainer <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasManager <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasOwner <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facet|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource|Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Actor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| ...<br />
| ...<br />
|}<br />
<br />
===== Legal Body =====<br />
<br />
{| class="wikitable"<br />
|+ Legal Body <code>extends</code> [[#Actor|Actor]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Legal_Body|Legal Body]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| A Legal Body has at least a Contact Facet which permit to identify the Legal Body per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Person|Person]]<br />
| [[#belongsTo|belongsTo]]<br />
| align=center | 0..n<br />
| [[#Legal_Body|Legal Body]]<br />
| ...<br />
|}<br />
<br />
===== Person =====<br />
<br />
{| class="wikitable"<br />
|+ Person <code>extends</code> [[#Actor|Actor]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Person|Person]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| A Person has at least a Contact Facet which permit to identify the Person per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Person|Person]]<br />
| [[#belongsTo|belongsTo]]<br />
| align=center | 0..n<br />
| [[#Legal_Body|Legal Body]]<br />
| ...<br />
|}<br />
<br />
==== Configuration Template ====<br />
<br />
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.<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isDerivationOf|isDerivationOf]]<br />
| align=center | 1..1<br />
| [[#Configuration_Template|Configuration Template]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration_Template|Configuration Template]]<br />
| ...<br />
|}<br />
<br />
<br />
===== Configuration =====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile <code>extends</code> <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isDerivationOf|isDerivationOf]]<br />
| align=center | 1..1<br />
| [[#Configuration_Template|Configuration Template]]<br />
| ...<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| ...<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContact|hasContact]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License Facet]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCoverage|hasCoverage]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
|<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| ...<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| ...<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| ...<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| The software enabling the E-Service capabilities<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software available in the E-Service environment that characterizes the specific E-Service instance<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event Facet]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State Facet]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License Facet]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| ...<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isActivatedBy|isActivatedBy]]<br />
| align=center | 1..1<br />
| [[#E-Service|E-Service]]<br />
| A reference to the E-Service is running the plugin.<br />
|}<br />
<br />
<br />
====== Running Plugin ======<br />
<br />
{| class="wikitable"<br />
|+ Running Plugin Profile <code>''extends''</code> [[#E-Service|E-Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software Facet]]<br />
| The software enabling the Running Plugin<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isActivatedBy|isActivatedBy]]<br />
| align=center | 1..1<br />
| [[#E-Service|E-Service]]<br />
| A reference to the E-Service is running the plugin.<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#runsPlugin|runsPlugin]]<br />
| align=center | 0..n<br />
| [[#Plugin|Plugin]]<br />
| ...<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Network_Address_Facet|Network Address Facet]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU Facet]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event Facet]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Container_State_Facet|Container State Facet]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Simple_Property_Facet|Simple Property Facet]]<br />
| E.g. Environment Variables<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Useful to report the hosted software that are not registered in the Resource Registry as Software Resource, e.g. Operating System<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| ...<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software Facet]]<br />
| ...<br />
|}<br />
<br />
==== Schema ====<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Schema_Facet|Schema Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| ...<br />
| align=center | 0..n<br />
| ...<br />
| ...<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasManager|hasManager]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address Facet]]<br />
| Network address ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| ...<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#License_Facet|License Facet]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State Facet]]<br />
| E.g. Deprecated, Active, Obsolete<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration_Template|Configuration Template]]<br />
| E.g. Accounting Sw uses it to discover the configuration <br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| E.g. A software requiring a specific database<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#runsPlugin|runsPlugin]]<br />
| align=center | 0..n<br />
| [[#Plugin|Plugin]]<br />
| ...<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Suggested Extensions ==<br />
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. <br />
An example of those specializations is the following:<br />
<br />
=== Functionality Related Facet ===<br />
<br />
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. <br />
<br />
{|class="wikitable"<br />
|+ Functionality Related Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| 0..n<br />
| [[#Functionality_Related_Facet|Functionality Related Facet]]<br />
| ...<br />
|}<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26171
Facet Based Resource Model
2016-07-25T13:59:35Z
<p>Pasquale.pagano: /* Internal Entity and Relation */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link ...<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
<br />
=== Resources and (isRelatedTo) Relations ===<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png|1024px]]<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facet ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
|+ Access Point Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
|+ Access Point Facet<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|<br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|<br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
|+ Contact Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|<br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|<br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|<br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|<br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|<br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
| [[#Legal_Body|Legal Body]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| A Legal Body has at least a Contact Facet which permit to identify the Legal Body per se.<br />
|-<br />
| [[#Person|Person]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| A Person has at least a Contact Facet which permit to identify the Person per se.<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContact|hasContact]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the owner<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasManager|hasManager]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
|+ Coverage Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|<br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCoverage|hasCoverage]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
|+ CPU Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU Facet]]<br />
| CPU Information<br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
|+ Descriptive Metadata Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata Facet]]<br />
| ...<br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
|+ Event Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| date<br />
| Date<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event Facet]]<br />
| ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event Facet]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event Facet]]<br />
| ...<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
|+ Identifier Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|<br />
|-<br />
| isPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
|<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|}<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
|+ License Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License Facet]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License Facet]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#License_Facet|License Facet]]<br />
| ...<br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
|+ Location Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|<br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|<br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|<br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location Facet]]<br />
| ...<br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
|+ Memory Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| RAM<br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
|+ Network Address Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Network_Address_Facet|Network Address Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address Facet]]<br />
| Network address ...<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
|+ Provenance Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance Facet]]<br />
| ...<br />
|}<br />
<br />
==== Schema Facet ====<br />
<br />
The goal of this facet is to provide a way to store a schema. This is an <code>Abstract</code> facet.<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Schema Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| schemaURL<br />
| URL<br />
| ...<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Schema_Facet|Schema Facet]]<br />
| ...<br />
|}<br />
<br />
===== JSON Schema Facet =====<br />
<br />
{|class="wikitable"<br />
|+ JSON Schema Facet <code>extends</code> [[#Schema_Facet|Schema Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| content<br />
| ...<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
|}<br />
<br />
===== XSD Schema Facet =====<br />
<br />
{|class="wikitable"<br />
|+ XSD Schema Facet <code>extends</code> [[#Schema_Facet|Schema Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| content<br />
| ...<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
|+ Simple Property Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property Facet]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Simple_Property_Facet|Simple Property Facet]]<br />
| E.g. Environment Variables<br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
|+ Software Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| The software enabling the E-Service capabilities<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software available in the E-Service environment that characterizes the specific E-Service instance<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software Facet]]<br />
| The software enabling the Running Plugin<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Useful to report the hosted software that are not registered in the Resource Registry as Software Resource, e.g. Operating System<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
|+ State Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State Facet]]<br />
| E.g. Deprecated, Active, Obsolete<br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
|+ Container State Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Container_State_Facet|Container State Facet]]<br />
| I.e. started, ready, certified, down, failed<br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
|+ Service State Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State Facet]]<br />
| I.e. STARTED, ready, down, failed<br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
|+ Subject Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject Facet]]<br />
| ...<br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
==== belongsTo ====<br />
<br />
{|class="wikitable"<br />
|+ belongsTo <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Person|Person]]<br />
| [[#belongsTo|belongsTo]]<br />
| align=center | 0..n<br />
| [[#Legal_Body|Legal Body]]<br />
| ...<br />
|}<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isActivatedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isActivatedBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isActivatedBy|isActivatedBy]]<br />
| align=center | 1..1<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration_Template|Configuration Template]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
===== isPartOf =====<br />
<br />
{|class="wikitable"<br />
|+ isPartOf <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isDerivationOf ====<br />
<br />
{|class="wikitable"<br />
|+ isDerivationOf <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isDerivationOf|isDerivationOf]]<br />
| align=center | 1..1<br />
| [[#Configuration_Template|Configuration Template]]<br />
|<br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== runsPlugin ====<br />
<br />
{|class="wikitable"<br />
|+ runsPlugin <code>extends</code> [[#runs|runs]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#runsPlugin|runsPlugin]]<br />
| align=center | 1..1<br />
| [[#Plugin|Plugin]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
| <br />
|}<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy <code>extends</code> [[#consistsOf|consistsOf]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
| [[#Legal_Body|Legal Body]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
| [[#Person|Person]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
|<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
| <br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== hasCoverage ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> hasCoverage <code>extends</code> [[#consistsOf|consistsOf]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasCoverage|hasCoverage]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCoverage|hasCoverage]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal <code>extends</code> [[#hasCoverage|hasCoverage]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial <code>extends</code> [[#hasCoverage|hasCoverage]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|}<br />
<br />
==== hasMemory ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> hasMemory <code>extends</code> [[#consistsOf|consistsOf]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasMemory|hasMemory]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| ...<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent <code>extends</code> [[#hasMemory|hasMemory]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile <code>extends</code> [[#hasMemory|hasMemory]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| RAM<br />
|}<br />
<br />
==== hasContact ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> hasContact <code>extends</code> [[#consistsOf|consistsOf]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContact|hasContact]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContact|hasContact]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasCreator <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasCurator <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasDeveloper <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasMaintainer <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasManager <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasOwner <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facet|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource|Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Actor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| ...<br />
| ...<br />
|}<br />
<br />
===== Legal Body =====<br />
<br />
{| class="wikitable"<br />
|+ Legal Body <code>extends</code> [[#Actor|Actor]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Legal_Body|Legal Body]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| A Legal Body has at least a Contact Facet which permit to identify the Legal Body per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Person|Person]]<br />
| [[#belongsTo|belongsTo]]<br />
| align=center | 0..n<br />
| [[#Legal_Body|Legal Body]]<br />
| ...<br />
|}<br />
<br />
===== Person =====<br />
<br />
{| class="wikitable"<br />
|+ Person <code>extends</code> [[#Actor|Actor]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Person|Person]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| A Person has at least a Contact Facet which permit to identify the Person per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Person|Person]]<br />
| [[#belongsTo|belongsTo]]<br />
| align=center | 0..n<br />
| [[#Legal_Body|Legal Body]]<br />
| ...<br />
|}<br />
<br />
==== Configuration Template ====<br />
<br />
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.<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isDerivationOf|isDerivationOf]]<br />
| align=center | 1..1<br />
| [[#Configuration_Template|Configuration Template]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration_Template|Configuration Template]]<br />
| ...<br />
|}<br />
<br />
<br />
===== Configuration =====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile <code>extends</code> <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isDerivationOf|isDerivationOf]]<br />
| align=center | 1..1<br />
| [[#Configuration_Template|Configuration Template]]<br />
| ...<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| ...<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContact|hasContact]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License Facet]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCoverage|hasCoverage]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
|<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| ...<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| ...<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| ...<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| The software enabling the E-Service capabilities<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software available in the E-Service environment that characterizes the specific E-Service instance<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event Facet]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State Facet]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License Facet]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| ...<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isActivatedBy|isActivatedBy]]<br />
| align=center | 1..1<br />
| [[#E-Service|E-Service]]<br />
| A reference to the E-Service is running the plugin.<br />
|}<br />
<br />
<br />
====== Running Plugin ======<br />
<br />
{| class="wikitable"<br />
|+ Running Plugin Profile <code>''extends''</code> [[#E-Service|E-Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software Facet]]<br />
| The software enabling the Running Plugin<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isActivatedBy|isActivatedBy]]<br />
| align=center | 1..1<br />
| [[#E-Service|E-Service]]<br />
| A reference to the E-Service is running the plugin.<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#runsPlugin|runsPlugin]]<br />
| align=center | 0..n<br />
| [[#Plugin|Plugin]]<br />
| ...<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Network_Address_Facet|Network Address Facet]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU Facet]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event Facet]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Container_State_Facet|Container State Facet]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Simple_Property_Facet|Simple Property Facet]]<br />
| E.g. Environment Variables<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Useful to report the hosted software that are not registered in the Resource Registry as Software Resource, e.g. Operating System<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| ...<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software Facet]]<br />
| ...<br />
|}<br />
<br />
==== Schema ====<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Schema_Facet|Schema Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| ...<br />
| align=center | 0..n<br />
| ...<br />
| ...<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasManager|hasManager]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address Facet]]<br />
| Network address ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| ...<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#License_Facet|License Facet]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State Facet]]<br />
| E.g. Deprecated, Active, Obsolete<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration_Template|Configuration Template]]<br />
| E.g. Accounting Sw uses it to discover the configuration <br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| E.g. A software requiring a specific database<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#runsPlugin|runsPlugin]]<br />
| align=center | 0..n<br />
| [[#Plugin|Plugin]]<br />
| ...<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Suggested Extensions ==<br />
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. <br />
An example of those specialization is the following:<br />
<br />
=== Functionality Related Facet ===<br />
<br />
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. <br />
<br />
{|class="wikitable"<br />
|+ Functionality Related Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| 0..n<br />
| [[#Functionality_Related_Facet|Functionality Related Facet]]<br />
| ...<br />
|}<br />
<br />
<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26170
Facet Based Resource Model
2016-07-25T13:51:57Z
<p>Pasquale.pagano: /* Functionality Related Facet */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link ...<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
<br />
=== Resources and (isRelatedTo) Relations ===<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png|1024px]]<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facet ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
|+ Access Point Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
|+ Access Point Facet<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|<br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|<br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
|+ Contact Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|<br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|<br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|<br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|<br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|<br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
| [[#Legal_Body|Legal Body]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| A Legal Body has at least a Contact Facet which permit to identify the Legal Body per se.<br />
|-<br />
| [[#Person|Person]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| A Person has at least a Contact Facet which permit to identify the Person per se.<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContact|hasContact]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the owner<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasManager|hasManager]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
|+ Coverage Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|<br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCoverage|hasCoverage]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
|+ CPU Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU Facet]]<br />
| CPU Information<br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
|+ Descriptive Metadata Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata Facet]]<br />
| ...<br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
|+ Event Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| date<br />
| Date<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event Facet]]<br />
| ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event Facet]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event Facet]]<br />
| ...<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
|+ Identifier Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|<br />
|-<br />
| isPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
|<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|}<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
|+ License Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License Facet]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License Facet]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#License_Facet|License Facet]]<br />
| ...<br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
|+ Location Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|<br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|<br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|<br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location Facet]]<br />
| ...<br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
|+ Memory Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| RAM<br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
|+ Network Address Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Network_Address_Facet|Network Address Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address Facet]]<br />
| Network address ...<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
|+ Provenance Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance Facet]]<br />
| ...<br />
|}<br />
<br />
==== Schema Facet ====<br />
<br />
The goal of this facet is to provide a way to store a schema. This is an <code>Abstract</code> facet.<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Schema Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| schemaURL<br />
| URL<br />
| ...<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Schema_Facet|Schema Facet]]<br />
| ...<br />
|}<br />
<br />
===== JSON Schema Facet =====<br />
<br />
{|class="wikitable"<br />
|+ JSON Schema Facet <code>extends</code> [[#Schema_Facet|Schema Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| content<br />
| ...<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
|}<br />
<br />
===== XSD Schema Facet =====<br />
<br />
{|class="wikitable"<br />
|+ XSD Schema Facet <code>extends</code> [[#Schema_Facet|Schema Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| content<br />
| ...<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
|+ Simple Property Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property Facet]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Simple_Property_Facet|Simple Property Facet]]<br />
| E.g. Environment Variables<br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
|+ Software Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| The software enabling the E-Service capabilities<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software available in the E-Service environment that characterizes the specific E-Service instance<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software Facet]]<br />
| The software enabling the Running Plugin<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Useful to report the hosted software that are not registered in the Resource Registry as Software Resource, e.g. Operating System<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
|+ State Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State Facet]]<br />
| E.g. Deprecated, Active, Obsolete<br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
|+ Container State Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Container_State_Facet|Container State Facet]]<br />
| I.e. started, ready, certified, down, failed<br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
|+ Service State Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State Facet]]<br />
| I.e. STARTED, ready, down, failed<br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
|+ Subject Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject Facet]]<br />
| ...<br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
==== belongsTo ====<br />
<br />
{|class="wikitable"<br />
|+ belongsTo <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Person|Person]]<br />
| [[#belongsTo|belongsTo]]<br />
| align=center | 0..n<br />
| [[#Legal_Body|Legal Body]]<br />
| ...<br />
|}<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isActivatedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isActivatedBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isActivatedBy|isActivatedBy]]<br />
| align=center | 1..1<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration_Template|Configuration Template]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
===== isPartOf =====<br />
<br />
{|class="wikitable"<br />
|+ isPartOf <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isDerivationOf ====<br />
<br />
{|class="wikitable"<br />
|+ isDerivationOf <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isDerivationOf|isDerivationOf]]<br />
| align=center | 1..1<br />
| [[#Configuration_Template|Configuration Template]]<br />
|<br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== runsPlugin ====<br />
<br />
{|class="wikitable"<br />
|+ runsPlugin <code>extends</code> [[#runs|runs]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#runsPlugin|runsPlugin]]<br />
| align=center | 1..1<br />
| [[#Plugin|Plugin]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
| <br />
|}<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy <code>extends</code> [[#consistsOf|consistsOf]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
| [[#Legal_Body|Legal Body]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
| [[#Person|Person]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
|<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
| <br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== hasCoverage ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> hasCoverage <code>extends</code> [[#consistsOf|consistsOf]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasCoverage|hasCoverage]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCoverage|hasCoverage]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal <code>extends</code> [[#hasCoverage|hasCoverage]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial <code>extends</code> [[#hasCoverage|hasCoverage]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|}<br />
<br />
==== hasMemory ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> hasMemory <code>extends</code> [[#consistsOf|consistsOf]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasMemory|hasMemory]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| ...<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent <code>extends</code> [[#hasMemory|hasMemory]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile <code>extends</code> [[#hasMemory|hasMemory]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| RAM<br />
|}<br />
<br />
==== hasContact ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> hasContact <code>extends</code> [[#consistsOf|consistsOf]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContact|hasContact]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContact|hasContact]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasCreator <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasCurator <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasDeveloper <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasMaintainer <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasManager <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasOwner <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facet|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource|Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Actor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| ...<br />
| ...<br />
|}<br />
<br />
===== Legal Body =====<br />
<br />
{| class="wikitable"<br />
|+ Legal Body <code>extends</code> [[#Actor|Actor]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Legal_Body|Legal Body]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| A Legal Body has at least a Contact Facet which permit to identify the Legal Body per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Person|Person]]<br />
| [[#belongsTo|belongsTo]]<br />
| align=center | 0..n<br />
| [[#Legal_Body|Legal Body]]<br />
| ...<br />
|}<br />
<br />
===== Person =====<br />
<br />
{| class="wikitable"<br />
|+ Person <code>extends</code> [[#Actor|Actor]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Person|Person]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| A Person has at least a Contact Facet which permit to identify the Person per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Person|Person]]<br />
| [[#belongsTo|belongsTo]]<br />
| align=center | 0..n<br />
| [[#Legal_Body|Legal Body]]<br />
| ...<br />
|}<br />
<br />
==== Configuration Template ====<br />
<br />
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.<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isDerivationOf|isDerivationOf]]<br />
| align=center | 1..1<br />
| [[#Configuration_Template|Configuration Template]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration_Template|Configuration Template]]<br />
| ...<br />
|}<br />
<br />
<br />
===== Configuration =====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile <code>extends</code> <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isDerivationOf|isDerivationOf]]<br />
| align=center | 1..1<br />
| [[#Configuration_Template|Configuration Template]]<br />
| ...<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| ...<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContact|hasContact]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License Facet]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCoverage|hasCoverage]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
|<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| ...<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| ...<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| ...<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| The software enabling the E-Service capabilities<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software available in the E-Service environment that characterizes the specific E-Service instance<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event Facet]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State Facet]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License Facet]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| ...<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isActivatedBy|isActivatedBy]]<br />
| align=center | 1..1<br />
| [[#E-Service|E-Service]]<br />
| A reference to the E-Service is running the plugin.<br />
|}<br />
<br />
<br />
====== Running Plugin ======<br />
<br />
{| class="wikitable"<br />
|+ Running Plugin Profile <code>''extends''</code> [[#E-Service|E-Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software Facet]]<br />
| The software enabling the Running Plugin<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isActivatedBy|isActivatedBy]]<br />
| align=center | 1..1<br />
| [[#E-Service|E-Service]]<br />
| A reference to the E-Service is running the plugin.<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#runsPlugin|runsPlugin]]<br />
| align=center | 0..n<br />
| [[#Plugin|Plugin]]<br />
| ...<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Network_Address_Facet|Network Address Facet]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU Facet]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event Facet]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Container_State_Facet|Container State Facet]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Simple_Property_Facet|Simple Property Facet]]<br />
| E.g. Environment Variables<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Useful to report the hosted software that are not registered in the Resource Registry as Software Resource, e.g. Operating System<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| ...<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software Facet]]<br />
| ...<br />
|}<br />
<br />
==== Schema ====<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Schema_Facet|Schema Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| ...<br />
| align=center | 0..n<br />
| ...<br />
| ...<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasManager|hasManager]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address Facet]]<br />
| Network address ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| ...<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#License_Facet|License Facet]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State Facet]]<br />
| E.g. Deprecated, Active, Obsolete<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration_Template|Configuration Template]]<br />
| E.g. Accounting Sw uses it to discover the configuration <br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| E.g. A software requiring a specific database<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#runsPlugin|runsPlugin]]<br />
| align=center | 0..n<br />
| [[#Plugin|Plugin]]<br />
| ...<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26169
Facet Based Resource Model
2016-07-25T13:50:41Z
<p>Pasquale.pagano: /* Event Facet */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link ...<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
<br />
=== Resources and (isRelatedTo) Relations ===<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png|1024px]]<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facet ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
|+ Access Point Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
|+ Access Point Facet<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|<br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|<br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
|+ Contact Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|<br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|<br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|<br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|<br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|<br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
| [[#Legal_Body|Legal Body]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| A Legal Body has at least a Contact Facet which permit to identify the Legal Body per se.<br />
|-<br />
| [[#Person|Person]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| A Person has at least a Contact Facet which permit to identify the Person per se.<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContact|hasContact]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the owner<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasManager|hasManager]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
|+ Coverage Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|<br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCoverage|hasCoverage]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
|+ CPU Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU Facet]]<br />
| CPU Information<br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
|+ Descriptive Metadata Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata Facet]]<br />
| ...<br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
|+ Event Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| date<br />
| Date<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event Facet]]<br />
| ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event Facet]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event Facet]]<br />
| ...<br />
|}<br />
<br />
==== Functionality Related Facet ====<br />
<br />
The goal of this facet is to capture what are the facilities supported ('''Challenging because of the different audiences''')<br />
Something very "poor" ... we can have a look at WPS spec <br />
<br />
{|class="wikitable"<br />
|+ Functionality Related Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
|+ Identifier Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|<br />
|-<br />
| isPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
|<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|}<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
|+ License Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License Facet]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License Facet]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#License_Facet|License Facet]]<br />
| ...<br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
|+ Location Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|<br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|<br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|<br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location Facet]]<br />
| ...<br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
|+ Memory Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| RAM<br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
|+ Network Address Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Network_Address_Facet|Network Address Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address Facet]]<br />
| Network address ...<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
|+ Provenance Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance Facet]]<br />
| ...<br />
|}<br />
<br />
==== Schema Facet ====<br />
<br />
The goal of this facet is to provide a way to store a schema. This is an <code>Abstract</code> facet.<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Schema Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| schemaURL<br />
| URL<br />
| ...<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Schema_Facet|Schema Facet]]<br />
| ...<br />
|}<br />
<br />
===== JSON Schema Facet =====<br />
<br />
{|class="wikitable"<br />
|+ JSON Schema Facet <code>extends</code> [[#Schema_Facet|Schema Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| content<br />
| ...<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
|}<br />
<br />
===== XSD Schema Facet =====<br />
<br />
{|class="wikitable"<br />
|+ XSD Schema Facet <code>extends</code> [[#Schema_Facet|Schema Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| content<br />
| ...<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
|+ Simple Property Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property Facet]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Simple_Property_Facet|Simple Property Facet]]<br />
| E.g. Environment Variables<br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
|+ Software Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| The software enabling the E-Service capabilities<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software available in the E-Service environment that characterizes the specific E-Service instance<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software Facet]]<br />
| The software enabling the Running Plugin<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Useful to report the hosted software that are not registered in the Resource Registry as Software Resource, e.g. Operating System<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
|+ State Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State Facet]]<br />
| E.g. Deprecated, Active, Obsolete<br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
|+ Container State Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Container_State_Facet|Container State Facet]]<br />
| I.e. started, ready, certified, down, failed<br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
|+ Service State Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State Facet]]<br />
| I.e. STARTED, ready, down, failed<br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
|+ Subject Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject Facet]]<br />
| ...<br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
==== belongsTo ====<br />
<br />
{|class="wikitable"<br />
|+ belongsTo <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Person|Person]]<br />
| [[#belongsTo|belongsTo]]<br />
| align=center | 0..n<br />
| [[#Legal_Body|Legal Body]]<br />
| ...<br />
|}<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isActivatedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isActivatedBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isActivatedBy|isActivatedBy]]<br />
| align=center | 1..1<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration_Template|Configuration Template]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
===== isPartOf =====<br />
<br />
{|class="wikitable"<br />
|+ isPartOf <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isDerivationOf ====<br />
<br />
{|class="wikitable"<br />
|+ isDerivationOf <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isDerivationOf|isDerivationOf]]<br />
| align=center | 1..1<br />
| [[#Configuration_Template|Configuration Template]]<br />
|<br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== runsPlugin ====<br />
<br />
{|class="wikitable"<br />
|+ runsPlugin <code>extends</code> [[#runs|runs]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#runsPlugin|runsPlugin]]<br />
| align=center | 1..1<br />
| [[#Plugin|Plugin]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
| <br />
|}<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy <code>extends</code> [[#consistsOf|consistsOf]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
| [[#Legal_Body|Legal Body]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
| [[#Person|Person]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
|<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
| <br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== hasCoverage ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> hasCoverage <code>extends</code> [[#consistsOf|consistsOf]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasCoverage|hasCoverage]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCoverage|hasCoverage]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal <code>extends</code> [[#hasCoverage|hasCoverage]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial <code>extends</code> [[#hasCoverage|hasCoverage]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|}<br />
<br />
==== hasMemory ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> hasMemory <code>extends</code> [[#consistsOf|consistsOf]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasMemory|hasMemory]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| ...<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent <code>extends</code> [[#hasMemory|hasMemory]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile <code>extends</code> [[#hasMemory|hasMemory]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| RAM<br />
|}<br />
<br />
==== hasContact ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> hasContact <code>extends</code> [[#consistsOf|consistsOf]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContact|hasContact]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContact|hasContact]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasCreator <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasCurator <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasDeveloper <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasMaintainer <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasManager <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasOwner <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facet|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource|Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Actor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| ...<br />
| ...<br />
|}<br />
<br />
===== Legal Body =====<br />
<br />
{| class="wikitable"<br />
|+ Legal Body <code>extends</code> [[#Actor|Actor]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Legal_Body|Legal Body]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| A Legal Body has at least a Contact Facet which permit to identify the Legal Body per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Person|Person]]<br />
| [[#belongsTo|belongsTo]]<br />
| align=center | 0..n<br />
| [[#Legal_Body|Legal Body]]<br />
| ...<br />
|}<br />
<br />
===== Person =====<br />
<br />
{| class="wikitable"<br />
|+ Person <code>extends</code> [[#Actor|Actor]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Person|Person]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| A Person has at least a Contact Facet which permit to identify the Person per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Person|Person]]<br />
| [[#belongsTo|belongsTo]]<br />
| align=center | 0..n<br />
| [[#Legal_Body|Legal Body]]<br />
| ...<br />
|}<br />
<br />
==== Configuration Template ====<br />
<br />
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.<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isDerivationOf|isDerivationOf]]<br />
| align=center | 1..1<br />
| [[#Configuration_Template|Configuration Template]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration_Template|Configuration Template]]<br />
| ...<br />
|}<br />
<br />
<br />
===== Configuration =====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile <code>extends</code> <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isDerivationOf|isDerivationOf]]<br />
| align=center | 1..1<br />
| [[#Configuration_Template|Configuration Template]]<br />
| ...<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| ...<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContact|hasContact]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License Facet]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCoverage|hasCoverage]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
|<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| ...<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| ...<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| ...<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| The software enabling the E-Service capabilities<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software available in the E-Service environment that characterizes the specific E-Service instance<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event Facet]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State Facet]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License Facet]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| ...<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isActivatedBy|isActivatedBy]]<br />
| align=center | 1..1<br />
| [[#E-Service|E-Service]]<br />
| A reference to the E-Service is running the plugin.<br />
|}<br />
<br />
<br />
====== Running Plugin ======<br />
<br />
{| class="wikitable"<br />
|+ Running Plugin Profile <code>''extends''</code> [[#E-Service|E-Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software Facet]]<br />
| The software enabling the Running Plugin<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isActivatedBy|isActivatedBy]]<br />
| align=center | 1..1<br />
| [[#E-Service|E-Service]]<br />
| A reference to the E-Service is running the plugin.<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#runsPlugin|runsPlugin]]<br />
| align=center | 0..n<br />
| [[#Plugin|Plugin]]<br />
| ...<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Network_Address_Facet|Network Address Facet]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU Facet]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event Facet]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Container_State_Facet|Container State Facet]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Simple_Property_Facet|Simple Property Facet]]<br />
| E.g. Environment Variables<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Useful to report the hosted software that are not registered in the Resource Registry as Software Resource, e.g. Operating System<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| ...<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software Facet]]<br />
| ...<br />
|}<br />
<br />
==== Schema ====<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Schema_Facet|Schema Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| ...<br />
| align=center | 0..n<br />
| ...<br />
| ...<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasManager|hasManager]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address Facet]]<br />
| Network address ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| ...<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#License_Facet|License Facet]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State Facet]]<br />
| E.g. Deprecated, Active, Obsolete<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration_Template|Configuration Template]]<br />
| E.g. Accounting Sw uses it to discover the configuration <br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| E.g. A software requiring a specific database<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#runsPlugin|runsPlugin]]<br />
| align=center | 0..n<br />
| [[#Plugin|Plugin]]<br />
| ...<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26168
Facet Based Resource Model
2016-07-25T13:40:03Z
<p>Pasquale.pagano: /* Peripheral Facet */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link ...<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
<br />
=== Resources and (isRelatedTo) Relations ===<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png|1024px]]<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facet ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
|+ Access Point Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
|+ Access Point Facet<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|<br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|<br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
|+ Contact Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|<br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|<br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|<br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|<br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|<br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
| [[#Legal_Body|Legal Body]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| A Legal Body has at least a Contact Facet which permit to identify the Legal Body per se.<br />
|-<br />
| [[#Person|Person]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| A Person has at least a Contact Facet which permit to identify the Person per se.<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContact|hasContact]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the owner<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasManager|hasManager]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
|+ Coverage Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|<br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCoverage|hasCoverage]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
|+ CPU Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU Facet]]<br />
| CPU Information<br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
|+ Descriptive Metadata Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata Facet]]<br />
| ...<br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
|+ Event Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event Facet]]<br />
| ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event Facet]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event Facet]]<br />
| ...<br />
|}<br />
<br />
==== Functionality Related Facet ====<br />
<br />
The goal of this facet is to capture what are the facilities supported ('''Challenging because of the different audiences''')<br />
Something very "poor" ... we can have a look at WPS spec <br />
<br />
{|class="wikitable"<br />
|+ Functionality Related Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
|+ Identifier Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|<br />
|-<br />
| isPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
|<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|}<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
|+ License Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License Facet]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License Facet]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#License_Facet|License Facet]]<br />
| ...<br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
|+ Location Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|<br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|<br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|<br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location Facet]]<br />
| ...<br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
|+ Memory Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| RAM<br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
|+ Network Address Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Network_Address_Facet|Network Address Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address Facet]]<br />
| Network address ...<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
|+ Provenance Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance Facet]]<br />
| ...<br />
|}<br />
<br />
==== Schema Facet ====<br />
<br />
The goal of this facet is to provide a way to store a schema. This is an <code>Abstract</code> facet.<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Schema Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| schemaURL<br />
| URL<br />
| ...<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Schema_Facet|Schema Facet]]<br />
| ...<br />
|}<br />
<br />
===== JSON Schema Facet =====<br />
<br />
{|class="wikitable"<br />
|+ JSON Schema Facet <code>extends</code> [[#Schema_Facet|Schema Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| content<br />
| ...<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
|}<br />
<br />
===== XSD Schema Facet =====<br />
<br />
{|class="wikitable"<br />
|+ XSD Schema Facet <code>extends</code> [[#Schema_Facet|Schema Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| content<br />
| ...<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
|+ Simple Property Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property Facet]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Simple_Property_Facet|Simple Property Facet]]<br />
| E.g. Environment Variables<br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
|+ Software Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| The software enabling the E-Service capabilities<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software available in the E-Service environment that characterizes the specific E-Service instance<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software Facet]]<br />
| The software enabling the Running Plugin<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Useful to report the hosted software that are not registered in the Resource Registry as Software Resource, e.g. Operating System<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
|+ State Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State Facet]]<br />
| E.g. Deprecated, Active, Obsolete<br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
|+ Container State Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Container_State_Facet|Container State Facet]]<br />
| I.e. started, ready, certified, down, failed<br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
|+ Service State Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State Facet]]<br />
| I.e. STARTED, ready, down, failed<br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
|+ Subject Facet <code>extends</code> [[#Facet|Facet]]<br />
|-<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
!<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|<br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject Facet]]<br />
| ...<br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
==== belongsTo ====<br />
<br />
{|class="wikitable"<br />
|+ belongsTo <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Person|Person]]<br />
| [[#belongsTo|belongsTo]]<br />
| align=center | 0..n<br />
| [[#Legal_Body|Legal Body]]<br />
| ...<br />
|}<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isActivatedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isActivatedBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isActivatedBy|isActivatedBy]]<br />
| align=center | 1..1<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration_Template|Configuration Template]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
===== isPartOf =====<br />
<br />
{|class="wikitable"<br />
|+ isPartOf <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isDerivationOf ====<br />
<br />
{|class="wikitable"<br />
|+ isDerivationOf <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isDerivationOf|isDerivationOf]]<br />
| align=center | 1..1<br />
| [[#Configuration_Template|Configuration Template]]<br />
|<br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== runsPlugin ====<br />
<br />
{|class="wikitable"<br />
|+ runsPlugin <code>extends</code> [[#runs|runs]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#runsPlugin|runsPlugin]]<br />
| align=center | 1..1<br />
| [[#Plugin|Plugin]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses <code>extends</code> [[#isRelatedTo|isRelatedTo]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
| <br />
|}<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy <code>extends</code> [[#consistsOf|consistsOf]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
| [[#Legal_Body|Legal Body]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
| [[#Person|Person]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
|<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
| <br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== hasCoverage ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> hasCoverage <code>extends</code> [[#consistsOf|consistsOf]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasCoverage|hasCoverage]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCoverage|hasCoverage]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal <code>extends</code> [[#hasCoverage|hasCoverage]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial <code>extends</code> [[#hasCoverage|hasCoverage]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|}<br />
<br />
==== hasMemory ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> hasMemory <code>extends</code> [[#consistsOf|consistsOf]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasMemory|hasMemory]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| ...<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent <code>extends</code> [[#hasMemory|hasMemory]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile <code>extends</code> [[#hasMemory|hasMemory]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| RAM<br />
|}<br />
<br />
==== hasContact ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> hasContact <code>extends</code> [[#consistsOf|consistsOf]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContact|hasContact]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContact|hasContact]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasCreator <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasCurator <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasDeveloper <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasMaintainer <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasManager <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasOwner <code>extends</code> [[#hasContact|hasContact]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facet|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource|Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Actor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| ...<br />
| ...<br />
|}<br />
<br />
===== Legal Body =====<br />
<br />
{| class="wikitable"<br />
|+ Legal Body <code>extends</code> [[#Actor|Actor]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Legal_Body|Legal Body]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| A Legal Body has at least a Contact Facet which permit to identify the Legal Body per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Person|Person]]<br />
| [[#belongsTo|belongsTo]]<br />
| align=center | 0..n<br />
| [[#Legal_Body|Legal Body]]<br />
| ...<br />
|}<br />
<br />
===== Person =====<br />
<br />
{| class="wikitable"<br />
|+ Person <code>extends</code> [[#Actor|Actor]]<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Person|Person]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| A Person has at least a Contact Facet which permit to identify the Person per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Person|Person]]<br />
| [[#belongsTo|belongsTo]]<br />
| align=center | 0..n<br />
| [[#Legal_Body|Legal Body]]<br />
| ...<br />
|}<br />
<br />
==== Configuration Template ====<br />
<br />
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.<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Configuration_Template|Configuration Template]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isDerivationOf|isDerivationOf]]<br />
| align=center | 1..1<br />
| [[#Configuration_Template|Configuration Template]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration_Template|Configuration Template]]<br />
| ...<br />
|}<br />
<br />
<br />
===== Configuration =====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile <code>extends</code> <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isDerivationOf|isDerivationOf]]<br />
| align=center | 1..1<br />
| [[#Configuration_Template|Configuration Template]]<br />
| ...<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| ...<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContact|hasContact]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License Facet]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCoverage|hasCoverage]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata Facet]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facet|Facet]]<br />
|<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| ...<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| ...<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| ...<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| The software enabling the E-Service capabilities<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software available in the E-Service environment that characterizes the specific E-Service instance<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event Facet]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State Facet]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License Facet]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| ...<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isActivatedBy|isActivatedBy]]<br />
| align=center | 1..1<br />
| [[#E-Service|E-Service]]<br />
| A reference to the E-Service is running the plugin.<br />
|}<br />
<br />
<br />
====== Running Plugin ======<br />
<br />
{| class="wikitable"<br />
|+ Running Plugin Profile <code>''extends''</code> [[#E-Service|E-Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software Facet]]<br />
| The software enabling the Running Plugin<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#isActivatedBy|isActivatedBy]]<br />
| align=center | 1..1<br />
| [[#E-Service|E-Service]]<br />
| A reference to the E-Service is running the plugin.<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#runsPlugin|runsPlugin]]<br />
| align=center | 0..n<br />
| [[#Plugin|Plugin]]<br />
| ...<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Network_Address_Facet|Network Address Facet]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU Facet]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory Facet]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event Facet]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Container_State_Facet|Container State Facet]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Simple_Property_Facet|Simple Property Facet]]<br />
| E.g. Environment Variables<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Useful to report the hosted software that are not registered in the Resource Registry as Software Resource, e.g. Operating System<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| ...<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software Facet]]<br />
| ...<br />
|}<br />
<br />
==== Schema ====<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Schema_Facet|Schema Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata Facet]]<br />
| ...<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject Facet]]<br />
| ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| ...<br />
| align=center | 0..n<br />
| ...<br />
| ...<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasContact|hasContact]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#hasManager|hasManager]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location Facet]]<br />
| ...<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address Facet]]<br />
| Network address ...<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| ...<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#Access_Point_Facet|Access Point Facet]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#License_Facet|License Facet]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State Facet]]<br />
| E.g. Deprecated, Active, Obsolete<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration_Template|Configuration Template]]<br />
| E.g. Accounting Sw uses it to discover the configuration <br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| E.g. A software requiring a specific database<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| ...<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software Facet]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|-<br />
| [[#Running_Plugin|Running Plugin]]<br />
| [[#runsPlugin|runsPlugin]]<br />
| align=center | 0..n<br />
| [[#Plugin|Plugin]]<br />
| ...<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26096
Facet Based Resource Model
2016-07-22T16:13:34Z
<p>Pasquale.pagano: /* Site */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link '''TBD'''<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facets Specification ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Functionality Related Facet ====<br />
<br />
The goal of this facet is to capture what are the facilities supported ('''Challenging because of the different audiences''')<br />
Something very "poor" ... we can have a look at WPS spec <br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| isPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|}<br />
<br />
==== Peripheral Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is the base class for all facets described by a value and the schema of the value<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
The following specializations of [[#isRelatedTo|isRelatedTo]] relation have been identified and defined:<br />
<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png]]<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
====== isPartOf ======<br />
<br />
{|class="wikitable"<br />
|+ isPartOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|}<br />
<br />
The following relations (extending the '''consistsOf''') have been identified and defined:<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== Coverage Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Coverage Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Memory Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Memory Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Memory_Relation|Memory Relation]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|}<br />
<br />
==== Contact Relation ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Contact Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facets|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isRelatedTo | isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource | Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ Actor Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#consistsOf|ConsistsOf]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifies]]<br />
| '''TBD'''<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
|<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| The software enabling the E-Service capabilities<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software]]<br />
| Software available in the E-Service environment that characterizes the specific E-Service instance<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Container_State_Facet|Container State]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| E.g. Environment Variables<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software]]<br />
| Useful to report the hosted software that are not registered in the Resource Registry as Software Resource, e.g. Operating System<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Schema ====<br />
<br />
'''TBD'''<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| '''TBD'''<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#Access_Point_Facet|Access Point]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#License_Facet|License]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State]]<br />
| E.g. Deprecated, Active, Obsolete<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration_Template|Configuration Template]]<br />
| E.g. Accounting Sw uses it to discover the configuration <br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| E.g. A software requiring a specific database<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Virtual_Service | Virtual Service]] that is ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#E-Service | E-Service]] that is running this Software<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Hosting Node|Hosting Node]] that is ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26095
Facet Based Resource Model
2016-07-22T16:12:53Z
<p>Pasquale.pagano: /* Site */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link '''TBD'''<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facets Specification ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Functionality Related Facet ====<br />
<br />
The goal of this facet is to capture what are the facilities supported ('''Challenging because of the different audiences''')<br />
Something very "poor" ... we can have a look at WPS spec <br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| isPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|}<br />
<br />
==== Peripheral Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is the base class for all facets described by a value and the schema of the value<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
The following specializations of [[#isRelatedTo|isRelatedTo]] relation have been identified and defined:<br />
<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png]]<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
====== isPartOf ======<br />
<br />
{|class="wikitable"<br />
|+ isPartOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|}<br />
<br />
The following relations (extending the '''consistsOf''') have been identified and defined:<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== Coverage Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Coverage Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Memory Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Memory Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Memory_Relation|Memory Relation]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|}<br />
<br />
==== Contact Relation ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Contact Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facets|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isRelatedTo | isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource | Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ Actor Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#consistsOf|ConsistsOf]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifies]]<br />
| '''TBD'''<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
|<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| The software enabling the E-Service capabilities<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software]]<br />
| Software available in the E-Service environment that characterizes the specific E-Service instance<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Container_State_Facet|Container State]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| E.g. Environment Variables<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software]]<br />
| Useful to report the hosted software that are not registered in the Resource Registry as Software Resource, e.g. Operating System<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Schema ====<br />
<br />
'''TBD'''<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| '''TBD'''<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#Access_Point_Facet|Access Point]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#License_Facet|License]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State]]<br />
| E.g. Deprecated, Active, Obsolete<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration_Template|Configuration Template]]<br />
| E.g. Accounting Sw uses it to discover the configuration <br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| E.g. A software requiring a specific database<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Virtual_Service | Virtual Service]] that is ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#E-Service | E-Service]] that is running this Software<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Hosting Node|Hosting Node]] that is ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26094
Facet Based Resource Model
2016-07-22T16:09:45Z
<p>Pasquale.pagano: /* Configuration */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link '''TBD'''<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facets Specification ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Functionality Related Facet ====<br />
<br />
The goal of this facet is to capture what are the facilities supported ('''Challenging because of the different audiences''')<br />
Something very "poor" ... we can have a look at WPS spec <br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| isPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|}<br />
<br />
==== Peripheral Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is the base class for all facets described by a value and the schema of the value<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
The following specializations of [[#isRelatedTo|isRelatedTo]] relation have been identified and defined:<br />
<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png]]<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
====== isPartOf ======<br />
<br />
{|class="wikitable"<br />
|+ isPartOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|}<br />
<br />
The following relations (extending the '''consistsOf''') have been identified and defined:<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== Coverage Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Coverage Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Memory Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Memory Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Memory_Relation|Memory Relation]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|}<br />
<br />
==== Contact Relation ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Contact Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facets|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isRelatedTo | isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource | Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ Actor Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#consistsOf|ConsistsOf]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifies]]<br />
| '''TBD'''<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
|<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| The software enabling the E-Service capabilities<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software]]<br />
| Software available in the E-Service environment that characterizes the specific E-Service instance<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Container_State_Facet|Container State]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| E.g. Environment Variables<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software]]<br />
| Useful to report the hosted software that are not registered in the Resource Registry as Software Resource, e.g. Operating System<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Schema ====<br />
<br />
'''TBD'''<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| '''TBD'''<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#Access_Point_Facet|Access Point]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#License_Facet|License]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State]]<br />
| E.g. Deprecated, Active, Obsolete<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration_Template|Configuration Template]]<br />
| E.g. Accounting Sw uses it to discover the configuration <br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| E.g. A software requiring a specific database<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Virtual_Service | Virtual Service]] that is ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#E-Service | E-Service]] that is running this Software<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Hosting Node|Hosting Node]] that is ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26093
Facet Based Resource Model
2016-07-22T16:08:45Z
<p>Pasquale.pagano: /* Identifier Facet */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link '''TBD'''<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facets Specification ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Functionality Related Facet ====<br />
<br />
The goal of this facet is to capture what are the facilities supported ('''Challenging because of the different audiences''')<br />
Something very "poor" ... we can have a look at WPS spec <br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| isPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|}<br />
<br />
==== Peripheral Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is the base class for all facets described by a value and the schema of the value<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
The following specializations of [[#isRelatedTo|isRelatedTo]] relation have been identified and defined:<br />
<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png]]<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
====== isPartOf ======<br />
<br />
{|class="wikitable"<br />
|+ isPartOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|}<br />
<br />
The following relations (extending the '''consistsOf''') have been identified and defined:<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== Coverage Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Coverage Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Memory Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Memory Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Memory_Relation|Memory Relation]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|}<br />
<br />
==== Contact Relation ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Contact Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facets|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isRelatedTo | isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource | Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ Actor Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#consistsOf|ConsistsOf]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
|<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| The software enabling the E-Service capabilities<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software]]<br />
| Software available in the E-Service environment that characterizes the specific E-Service instance<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Container_State_Facet|Container State]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| E.g. Environment Variables<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software]]<br />
| Useful to report the hosted software that are not registered in the Resource Registry as Software Resource, e.g. Operating System<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Schema ====<br />
<br />
'''TBD'''<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| '''TBD'''<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#Access_Point_Facet|Access Point]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#License_Facet|License]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State]]<br />
| E.g. Deprecated, Active, Obsolete<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration_Template|Configuration Template]]<br />
| E.g. Accounting Sw uses it to discover the configuration <br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| E.g. A software requiring a specific database<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Virtual_Service | Virtual Service]] that is ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#E-Service | E-Service]] that is running this Software<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Hosting Node|Hosting Node]] that is ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26092
Facet Based Resource Model
2016-07-22T15:58:32Z
<p>Pasquale.pagano: /* Hosting Node */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link '''TBD'''<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facets Specification ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Functionality Related Facet ====<br />
<br />
The goal of this facet is to capture what are the facilities supported ('''Challenging because of the different audiences''')<br />
Something very "poor" ... we can have a look at WPS spec <br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| ishasPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|}<br />
<br />
==== Peripheral Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is the base class for all facets described by a value and the schema of the value<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
The following specializations of [[#isRelatedTo|isRelatedTo]] relation have been identified and defined:<br />
<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png]]<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
====== isPartOf ======<br />
<br />
{|class="wikitable"<br />
|+ isPartOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|}<br />
<br />
The following relations (extending the '''consistsOf''') have been identified and defined:<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== Coverage Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Coverage Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Memory Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Memory Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Memory_Relation|Memory Relation]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|}<br />
<br />
==== Contact Relation ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Contact Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facets|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isRelatedTo | isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource | Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ Actor Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#consistsOf|ConsistsOf]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
|<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| The software enabling the E-Service capabilities<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software]]<br />
| Software available in the E-Service environment that characterizes the specific E-Service instance<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Container_State_Facet|Container State]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| E.g. Environment Variables<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software]]<br />
| Useful to report the hosted software that are not registered in the Resource Registry as Software Resource, e.g. Operating System<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Schema ====<br />
<br />
'''TBD'''<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| '''TBD'''<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#Access_Point_Facet|Access Point]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#License_Facet|License]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State]]<br />
| E.g. Deprecated, Active, Obsolete<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration_Template|Configuration Template]]<br />
| E.g. Accounting Sw uses it to discover the configuration <br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| E.g. A software requiring a specific database<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Virtual_Service | Virtual Service]] that is ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#E-Service | E-Service]] that is running this Software<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Hosting Node|Hosting Node]] that is ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26091
Facet Based Resource Model
2016-07-22T15:55:13Z
<p>Pasquale.pagano: /* Software */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link '''TBD'''<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facets Specification ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Functionality Related Facet ====<br />
<br />
The goal of this facet is to capture what are the facilities supported ('''Challenging because of the different audiences''')<br />
Something very "poor" ... we can have a look at WPS spec <br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| ishasPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|}<br />
<br />
==== Peripheral Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is the base class for all facets described by a value and the schema of the value<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
The following specializations of [[#isRelatedTo|isRelatedTo]] relation have been identified and defined:<br />
<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png]]<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
====== isPartOf ======<br />
<br />
{|class="wikitable"<br />
|+ isPartOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|}<br />
<br />
The following relations (extending the '''consistsOf''') have been identified and defined:<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== Coverage Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Coverage Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Memory Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Memory Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Memory_Relation|Memory Relation]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|}<br />
<br />
==== Contact Relation ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Contact Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facets|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isRelatedTo | isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource | Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ Actor Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#consistsOf|ConsistsOf]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
|<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| The software enabling the E-Service capabilities<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software]]<br />
| Software available in the E-Service environment that characterizes the specific E-Service instance<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Container_State_Facet|Container State]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| E.g. Environment Variables<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Schema ====<br />
<br />
'''TBD'''<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| '''TBD'''<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#Access_Point_Facet|Access Point]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#License_Facet|License]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State]]<br />
| E.g. Deprecated, Active, Obsolete<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration_Template|Configuration Template]]<br />
| E.g. Accounting Sw uses it to discover the configuration <br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| E.g. A software requiring a specific database<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Virtual_Service | Virtual Service]] that is ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#E-Service | E-Service]] that is running this Software<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Hosting Node|Hosting Node]] that is ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26090
Facet Based Resource Model
2016-07-22T15:53:44Z
<p>Pasquale.pagano: /* Software */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link '''TBD'''<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facets Specification ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Functionality Related Facet ====<br />
<br />
The goal of this facet is to capture what are the facilities supported ('''Challenging because of the different audiences''')<br />
Something very "poor" ... we can have a look at WPS spec <br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| ishasPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|}<br />
<br />
==== Peripheral Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is the base class for all facets described by a value and the schema of the value<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
The following specializations of [[#isRelatedTo|isRelatedTo]] relation have been identified and defined:<br />
<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png]]<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
====== isPartOf ======<br />
<br />
{|class="wikitable"<br />
|+ isPartOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|}<br />
<br />
The following relations (extending the '''consistsOf''') have been identified and defined:<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== Coverage Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Coverage Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Memory Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Memory Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Memory_Relation|Memory Relation]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|}<br />
<br />
==== Contact Relation ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Contact Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facets|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isRelatedTo | isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource | Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ Actor Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#consistsOf|ConsistsOf]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
|<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| The software enabling the E-Service capabilities<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software]]<br />
| Software available in the E-Service environment that characterizes the specific E-Service instance<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Container_State_Facet|Container State]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| E.g. Environment Variables<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Schema ====<br />
<br />
'''TBD'''<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| '''TBD'''<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#Access_Point_Facet|Access Point]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#License_Facet|License]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State]]<br />
| E.g. Deprecated, Active, Obsolete<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration_Template|Configuration Template]]<br />
| E.g. Accounting Sw uses it to discover the configuration <br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| E.g. A software requiring a specific database<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Abstract_Service | Abstract Service]] that is ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#E-Service | E-Service]] that is running this Software<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Hosting Node|Hosting Node]] that is ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26089
Facet Based Resource Model
2016-07-22T15:42:15Z
<p>Pasquale.pagano: /* Software */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link '''TBD'''<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facets Specification ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Functionality Related Facet ====<br />
<br />
The goal of this facet is to capture what are the facilities supported ('''Challenging because of the different audiences''')<br />
Something very "poor" ... we can have a look at WPS spec <br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| ishasPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|}<br />
<br />
==== Peripheral Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is the base class for all facets described by a value and the schema of the value<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
The following specializations of [[#isRelatedTo|isRelatedTo]] relation have been identified and defined:<br />
<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png]]<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
====== isPartOf ======<br />
<br />
{|class="wikitable"<br />
|+ isPartOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|}<br />
<br />
The following relations (extending the '''consistsOf''') have been identified and defined:<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== Coverage Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Coverage Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Memory Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Memory Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Memory_Relation|Memory Relation]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|}<br />
<br />
==== Contact Relation ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Contact Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facets|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isRelatedTo | isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource | Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ Actor Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#consistsOf|ConsistsOf]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
|<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| The software enabling the E-Service capabilities<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software]]<br />
| Software available in the E-Service environment that characterizes the specific E-Service instance<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Container_State_Facet|Container State]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| E.g. Environment Variables<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Schema ====<br />
<br />
'''TBD'''<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| '''TBD'''<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#Access_Point_Facet|Access Point]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n <br />
| [[#License_Facet|License]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State]]<br />
| E.g. Deprecated, Active, Obsolete<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Abstract_Service | Abstract Service]] that is ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#E-Service | E-Service]] that is running this Software<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Hosting Node|Hosting Node]] that is ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26088
Facet Based Resource Model
2016-07-22T15:32:58Z
<p>Pasquale.pagano: /* Hosting Node */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link '''TBD'''<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facets Specification ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Functionality Related Facet ====<br />
<br />
The goal of this facet is to capture what are the facilities supported ('''Challenging because of the different audiences''')<br />
Something very "poor" ... we can have a look at WPS spec <br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| ishasPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|}<br />
<br />
==== Peripheral Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is the base class for all facets described by a value and the schema of the value<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
The following specializations of [[#isRelatedTo|isRelatedTo]] relation have been identified and defined:<br />
<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png]]<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
====== isPartOf ======<br />
<br />
{|class="wikitable"<br />
|+ isPartOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|}<br />
<br />
The following relations (extending the '''consistsOf''') have been identified and defined:<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== Coverage Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Coverage Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Memory Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Memory Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Memory_Relation|Memory Relation]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|}<br />
<br />
==== Contact Relation ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Contact Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facets|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isRelatedTo | isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource | Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ Actor Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#consistsOf|ConsistsOf]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
|<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| The software enabling the E-Service capabilities<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software]]<br />
| Software available in the E-Service environment that characterizes the specific E-Service instance<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Container_State_Facet|Container State]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| E.g. Environment Variables<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Schema ====<br />
<br />
'''TBD'''<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| '''TBD'''<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#License_Facet|License]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Abstract_Service | Abstract Service]] that is ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#E-Service | E-Service]] that is running this Software<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Hosting Node|Hosting Node]] that is ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26087
Facet Based Resource Model
2016-07-22T15:32:25Z
<p>Pasquale.pagano: /* Hosting Node */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link '''TBD'''<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facets Specification ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Functionality Related Facet ====<br />
<br />
The goal of this facet is to capture what are the facilities supported ('''Challenging because of the different audiences''')<br />
Something very "poor" ... we can have a look at WPS spec <br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| ishasPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|}<br />
<br />
==== Peripheral Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is the base class for all facets described by a value and the schema of the value<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
The following specializations of [[#isRelatedTo|isRelatedTo]] relation have been identified and defined:<br />
<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png]]<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
====== isPartOf ======<br />
<br />
{|class="wikitable"<br />
|+ isPartOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|}<br />
<br />
The following relations (extending the '''consistsOf''') have been identified and defined:<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== Coverage Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Coverage Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Memory Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Memory Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Memory_Relation|Memory Relation]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|}<br />
<br />
==== Contact Relation ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Contact Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facets|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isRelatedTo | isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource | Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ Actor Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#consistsOf|ConsistsOf]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
|<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| The software enabling the E-Service capabilities<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software]]<br />
| Software available in the E-Service environment that characterizes the specific E-Service instance<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Container_State_Facet|Container State]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| E.g. Environment Variables<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Schema ====<br />
<br />
'''TBD'''<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| '''TBD'''<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#License_Facet|License]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Abstract_Service | Abstract Service]] that is ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#E-Service | E-Service]] that is running this Software<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Hosting Node|Hosting Node]] that is ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26086
Facet Based Resource Model
2016-07-22T15:31:51Z
<p>Pasquale.pagano: /* Hosting Node */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link '''TBD'''<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facets Specification ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Functionality Related Facet ====<br />
<br />
The goal of this facet is to capture what are the facilities supported ('''Challenging because of the different audiences''')<br />
Something very "poor" ... we can have a look at WPS spec <br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| ishasPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|}<br />
<br />
==== Peripheral Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is the base class for all facets described by a value and the schema of the value<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
The following specializations of [[#isRelatedTo|isRelatedTo]] relation have been identified and defined:<br />
<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png]]<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
====== isPartOf ======<br />
<br />
{|class="wikitable"<br />
|+ isPartOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|}<br />
<br />
The following relations (extending the '''consistsOf''') have been identified and defined:<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== Coverage Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Coverage Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Memory Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Memory Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Memory_Relation|Memory Relation]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|}<br />
<br />
==== Contact Relation ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Contact Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facets|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isRelatedTo | isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource | Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ Actor Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#consistsOf|ConsistsOf]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
|<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| The software enabling the E-Service capabilities<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software]]<br />
| Software available in the E-Service environment that characterizes the specific E-Service instance<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Container_State_Facet|Container State]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| E.g. Environment Variables<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Schema ====<br />
<br />
'''TBD'''<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| '''TBD'''<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#License_Facet|License]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Abstract_Service | Abstract Service]] that is ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#E-Service | E-Service]] that is running this Software<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Hosting Node|Hosting Node]] that is ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26085
Facet Based Resource Model
2016-07-22T15:20:54Z
<p>Pasquale.pagano: /* E-Service */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link '''TBD'''<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facets Specification ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Functionality Related Facet ====<br />
<br />
The goal of this facet is to capture what are the facilities supported ('''Challenging because of the different audiences''')<br />
Something very "poor" ... we can have a look at WPS spec <br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| ishasPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|}<br />
<br />
==== Peripheral Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is the base class for all facets described by a value and the schema of the value<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
The following specializations of [[#isRelatedTo|isRelatedTo]] relation have been identified and defined:<br />
<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png]]<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
====== isPartOf ======<br />
<br />
{|class="wikitable"<br />
|+ isPartOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|}<br />
<br />
The following relations (extending the '''consistsOf''') have been identified and defined:<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== Coverage Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Coverage Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Memory Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Memory Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Memory_Relation|Memory Relation]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|}<br />
<br />
==== Contact Relation ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Contact Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facets|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isRelatedTo | isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource | Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ Actor Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#consistsOf|ConsistsOf]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
|<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| The software enabling the E-Service capabilities<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software]]<br />
| Software available in the E-Service environment that characterizes the specific E-Service instance<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Container_State_Facet|Container State]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| E.g. Environment Variables<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Schema ====<br />
<br />
'''TBD'''<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| '''TBD'''<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#License_Facet|License]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Abstract_Service | Abstract Service]] that is ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#E-Service | E-Service]] that is running this Software<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Hosting Node|Hosting Node]] that is ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26084
Facet Based Resource Model
2016-07-22T15:20:36Z
<p>Pasquale.pagano: /* E-Service */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link '''TBD'''<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facets Specification ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Functionality Related Facet ====<br />
<br />
The goal of this facet is to capture what are the facilities supported ('''Challenging because of the different audiences''')<br />
Something very "poor" ... we can have a look at WPS spec <br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| ishasPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|}<br />
<br />
==== Peripheral Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is the base class for all facets described by a value and the schema of the value<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
The following specializations of [[#isRelatedTo|isRelatedTo]] relation have been identified and defined:<br />
<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png]]<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
====== isPartOf ======<br />
<br />
{|class="wikitable"<br />
|+ isPartOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|}<br />
<br />
The following relations (extending the '''consistsOf''') have been identified and defined:<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== Coverage Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Coverage Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Memory Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Memory Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Memory_Relation|Memory Relation]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|}<br />
<br />
==== Contact Relation ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Contact Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facets|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isRelatedTo | isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource | Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ Actor Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#consistsOf|ConsistsOf]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
|<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| The software enabling the E-Service capabilities<br />
-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#Software_Facet|Software]]<br />
| Software available in the E-Service environment that characterizes the specific E-Service instance<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Container_State_Facet|Container State]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| E.g. Environment Variables<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Schema ====<br />
<br />
'''TBD'''<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| '''TBD'''<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#License_Facet|License]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Abstract_Service | Abstract Service]] that is ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#E-Service | E-Service]] that is running this Software<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Hosting Node|Hosting Node]] that is ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26083
Facet Based Resource Model
2016-07-22T15:16:57Z
<p>Pasquale.pagano: /* E-Service */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link '''TBD'''<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facets Specification ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Functionality Related Facet ====<br />
<br />
The goal of this facet is to capture what are the facilities supported ('''Challenging because of the different audiences''')<br />
Something very "poor" ... we can have a look at WPS spec <br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| ishasPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|}<br />
<br />
==== Peripheral Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is the base class for all facets described by a value and the schema of the value<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
The following specializations of [[#isRelatedTo|isRelatedTo]] relation have been identified and defined:<br />
<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png]]<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
====== isPartOf ======<br />
<br />
{|class="wikitable"<br />
|+ isPartOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|}<br />
<br />
The following relations (extending the '''consistsOf''') have been identified and defined:<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== Coverage Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Coverage Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Memory Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Memory Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Memory_Relation|Memory Relation]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|}<br />
<br />
==== Contact Relation ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Contact Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facets|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isRelatedTo | isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource | Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ Actor Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#consistsOf|ConsistsOf]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
|<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n<br />
| [[#License_Facet|License]]<br />
| The specific terms of use for programmatic access to the service<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Container_State_Facet|Container State]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| E.g. Environment Variables<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Schema ====<br />
<br />
'''TBD'''<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| '''TBD'''<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#License_Facet|License]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Abstract_Service | Abstract Service]] that is ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#E-Service | E-Service]] that is running this Software<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Hosting Node|Hosting Node]] that is ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26082
Facet Based Resource Model
2016-07-22T15:11:08Z
<p>Pasquale.pagano: /* E-Service */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link '''TBD'''<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facets Specification ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Functionality Related Facet ====<br />
<br />
The goal of this facet is to capture what are the facilities supported ('''Challenging because of the different audiences''')<br />
Something very "poor" ... we can have a look at WPS spec <br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| ishasPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|}<br />
<br />
==== Peripheral Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is the base class for all facets described by a value and the schema of the value<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
The following specializations of [[#isRelatedTo|isRelatedTo]] relation have been identified and defined:<br />
<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png]]<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
====== isPartOf ======<br />
<br />
{|class="wikitable"<br />
|+ isPartOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|}<br />
<br />
The following relations (extending the '''consistsOf''') have been identified and defined:<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== Coverage Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Coverage Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Memory Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Memory Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Memory_Relation|Memory Relation]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|}<br />
<br />
==== Contact Relation ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Contact Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facets|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isRelatedTo | isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource | Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ Actor Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#consistsOf|ConsistsOf]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
|<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| E.g. ActivationTime, DeploymentTime<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Container_State_Facet|Container State]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| E.g. Environment Variables<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Schema ====<br />
<br />
'''TBD'''<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| '''TBD'''<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#License_Facet|License]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Abstract_Service | Abstract Service]] that is ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#E-Service | E-Service]] that is running this Software<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Hosting Node|Hosting Node]] that is ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26081
Facet Based Resource Model
2016-07-22T15:10:44Z
<p>Pasquale.pagano: /* E-Service */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link '''TBD'''<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facets Specification ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Functionality Related Facet ====<br />
<br />
The goal of this facet is to capture what are the facilities supported ('''Challenging because of the different audiences''')<br />
Something very "poor" ... we can have a look at WPS spec <br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| ishasPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|}<br />
<br />
==== Peripheral Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is the base class for all facets described by a value and the schema of the value<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
The following specializations of [[#isRelatedTo|isRelatedTo]] relation have been identified and defined:<br />
<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png]]<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
====== isPartOf ======<br />
<br />
{|class="wikitable"<br />
|+ isPartOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|}<br />
<br />
The following relations (extending the '''consistsOf''') have been identified and defined:<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== Coverage Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Coverage Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Memory Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Memory Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Memory_Relation|Memory Relation]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|}<br />
<br />
==== Contact Relation ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Contact Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facets|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isRelatedTo | isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource | Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ Actor Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#consistsOf|ConsistsOf]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
|<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| E.g. ActivationTime, DeploymenTime<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Container_State_Facet|Container State]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| E.g. Environment Variables<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Schema ====<br />
<br />
'''TBD'''<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| '''TBD'''<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#License_Facet|License]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Abstract_Service | Abstract Service]] that is ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#E-Service | E-Service]] that is running this Software<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Hosting Node|Hosting Node]] that is ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26080
Facet Based Resource Model
2016-07-22T15:09:59Z
<p>Pasquale.pagano: /* Service */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link '''TBD'''<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facets Specification ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Functionality Related Facet ====<br />
<br />
The goal of this facet is to capture what are the facilities supported ('''Challenging because of the different audiences''')<br />
Something very "poor" ... we can have a look at WPS spec <br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| ishasPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|}<br />
<br />
==== Peripheral Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is the base class for all facets described by a value and the schema of the value<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
The following specializations of [[#isRelatedTo|isRelatedTo]] relation have been identified and defined:<br />
<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png]]<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
====== isPartOf ======<br />
<br />
{|class="wikitable"<br />
|+ isPartOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|}<br />
<br />
The following relations (extending the '''consistsOf''') have been identified and defined:<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== Coverage Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Coverage Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Memory Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Memory Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Memory_Relation|Memory Relation]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|}<br />
<br />
==== Contact Relation ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Contact Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facets|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isRelatedTo | isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource | Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ Actor Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#consistsOf|ConsistsOf]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
|<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| E.g. ActivationTime,DeploymenTime)<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Container_State_Facet|Container State]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| E.g. Environment Variables<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Schema ====<br />
<br />
'''TBD'''<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| '''TBD'''<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#License_Facet|License]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Abstract_Service | Abstract Service]] that is ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#E-Service | E-Service]] that is running this Software<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Hosting Node|Hosting Node]] that is ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26079
Facet Based Resource Model
2016-07-22T15:06:41Z
<p>Pasquale.pagano: /* Software */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link '''TBD'''<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facets Specification ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Functionality Related Facet ====<br />
<br />
The goal of this facet is to capture what are the facilities supported ('''Challenging because of the different audiences''')<br />
Something very "poor" ... we can have a look at WPS spec <br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| ishasPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|}<br />
<br />
==== Peripheral Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is the base class for all facets described by a value and the schema of the value<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
The following specializations of [[#isRelatedTo|isRelatedTo]] relation have been identified and defined:<br />
<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png]]<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
====== isPartOf ======<br />
<br />
{|class="wikitable"<br />
|+ isPartOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|}<br />
<br />
The following relations (extending the '''consistsOf''') have been identified and defined:<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== Coverage Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Coverage Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Memory Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Memory Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Memory_Relation|Memory Relation]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|}<br />
<br />
==== Contact Relation ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Contact Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facets|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isRelatedTo | isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource | Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ Actor Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#consistsOf|ConsistsOf]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
|<br />
|-<br />
| [[#Service|Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| E.g. ActivationTime,DeploymenTime)<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Container_State_Facet|Container State]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| E.g. Environment Variables<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Schema ====<br />
<br />
'''TBD'''<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| '''TBD'''<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#License_Facet|License]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Abstract_Service | Abstract Service]] that is ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#E-Service | E-Service]] that is running this Software<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Hosting Node|Hosting Node]] that is ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26078
Facet Based Resource Model
2016-07-22T15:06:07Z
<p>Pasquale.pagano: /* Resource */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link '''TBD'''<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facets Specification ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Functionality Related Facet ====<br />
<br />
The goal of this facet is to capture what are the facilities supported ('''Challenging because of the different audiences''')<br />
Something very "poor" ... we can have a look at WPS spec <br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| ishasPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|}<br />
<br />
==== Peripheral Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is the base class for all facets described by a value and the schema of the value<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
The following specializations of [[#isRelatedTo|isRelatedTo]] relation have been identified and defined:<br />
<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png]]<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
====== isPartOf ======<br />
<br />
{|class="wikitable"<br />
|+ isPartOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|}<br />
<br />
The following relations (extending the '''consistsOf''') have been identified and defined:<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== Coverage Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Coverage Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Memory Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Memory Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Memory_Relation|Memory Relation]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|}<br />
<br />
==== Contact Relation ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Contact Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facets|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isRelatedTo | isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource | Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ Actor Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#consistsOf|ConsistsOf]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
|<br />
|-<br />
| [[#Service|Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| E.g. ActivationTime,DeploymenTime)<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Container_State_Facet|Container State]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| E.g. Environment Variables<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Schema ====<br />
<br />
'''TBD'''<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| '''TBD'''<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#License_Facet|License]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Abstract_Service|Abstract Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Abstract_Service | Abstract Service]] that is ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#E-Service | E-Service]] that is running this Software<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Hosting Node|Hosting Node]] that is ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano
https://wiki.gcube-system.org/index.php?title=Facet_Based_Resource_Model&diff=26077
Facet Based Resource Model
2016-07-22T15:05:07Z
<p>Pasquale.pagano: /* demands */</p>
<hr />
<div><!-- CATEGORIES --> <br />
<!-- [[Category: gCube Features]] --><br />
<!-- CATEGORIES --><br />
{| align="right"<br />
||__TOC__<br />
|}<br />
<br />
== Basic Concepts ==<br />
<br />
* Two typologies of '''entities''' are envisaged: <br />
** '''[[#Resources | Resources]]''', i.e. entities representing a description of "thing" to be managed; <br />
*** Every Resource is characterised by a number of [[#Facets | Facets]].<br />
** '''[[#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; <br />
*** Every facet is characterised by a number of [[#Property| properties]]; <br />
<br />
* Two typologies of '''[[#Relations|relations]]''' are envisaged:<br />
** '''[[#isRelatedTo | isRelatedTo]]''', i.e. a relation linking any two [[#Resources | Resources]]. <br />
** '''[[#consistsOf | consistsOf]]''', i.e. a relation connecting each [[#Resources | Resource]] with one of the [[#Facets | Facets]] characterizing it;<br />
<br />
* Entities and relations can be '''specialized'''. <br />
** 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; <br />
** 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.<br />
<br />
* On relations:<br />
** 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;<br />
** It is not permitted to define a Relation having a Facet as "source". In other words:<br />
*** It is not permitted to define a Relation connecting a Facet with another one;<br />
*** It is not permitted to define a Relation connecting a Facet with a Resource (as target); <br />
** A Facet instance can be linked (by [[#consistsOf | consistsOf]] or any specialization of it) from different Resources.<br />
<br />
[[File:Is-model.png]]<br />
<br />
=== Property ===<br />
<br />
Any Property can be enriched with the following attributes:<br />
<br />
* '''Name''' : Property Name<br />
* '''Type''' : The Type of the Property (e.g. String, Integer, ...). See [[#Property_Type|Property Type]]<br />
* '''Description''' : The description of the Property. <code>default=null</code>.<br />
* '''Mandatory''' ('''M'''): Indicate if the Property is mandatory. <code>default=false</code>.<br />
* '''ReadOnly''' ('''RO'''): The Property cannot change its value. <code>default=false</code>.<br />
* '''NotNull''' ('''NN'''): <code>default=false</code><br />
* '''Max''' ('''Max'''): <code>default=null</code><br />
* '''Min''' ('''Min'''): <code>default=null</code><br />
* '''Regexpr''' ('''Reg''')): A [https://en.wikipedia.org/wiki/Regular_expression Regular Expression] to validate the property value.<code>default=null</code><br />
<br />
==== Property Type ====<br />
<br />
===== Basic Property Type =====<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Boolean<br />
| Handles only the values <em>True</em> or <em>False</em><br />
| <code>java.lang.Boolean</code> or <code>boolean</code><br />
|-<br />
| Integer<br />
| 32-bit signed Integers<br />
| <code>java.lang.Integer</code> or <code>int</code><br />
|-<br />
| Short<br />
| Small 16-bit signed integers<br />
| <code>java.lang.Short</code> or <code>short</code><br />
|-<br />
| Long<br />
| Big 64-bit signed integers<br />
| <code>java.lang.Long</code> or <code>long</code><br />
|-<br />
| Float<br />
| Decimal numbers<br />
| <code>java.lang.Float</code> or <code>float</code><br />
|-<br />
| Double<br />
| Decimal numbers with high precision<br />
| <code>java.lang.Double</code> or <code>double</code><br />
|-<br />
| Datetime<br />
| Any date with the precision up to milliseconds.<br />
| <code>java.util.Date</code><br />
|-<br />
| String<br />
| Any string as alphanumeric sequence of chars<br />
| <code>java.lang.String</code><br />
|-<br />
| Embedded<br />
| This is an Object contained inside the owner Entity and has no [[#Header|Header]]. It is reachable only by navigating the owner Entity.<br />
| <code>org.gcube.informationsystem.model.embedded.Embedded</code><br />
|-<br />
| Embedded list<br />
| List of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>List&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded set<br />
| Set (no duplicates) of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Set&lt;? extends Embedded&gt;</code><br />
|-<br />
| Embedded map<br />
| Map of Objects contained inside the owner Entity and have no [[#Header|Header]]. They are reachable only by navigating the owner Entity.<br />
| <code>Map&lt;String, ? extends Embedded&gt;</code><br />
|-<br />
| Link '''TBD'''<br />
| Link to another Entity.<br />
| <code>...</code><br />
|-<br />
| Byte<br />
| Single byte. usesful to store small 8-bit signed integers<br />
| <code>java.lang.Byte</code> or <code>byte</code><br />
|-<br />
| Binary<br />
| Can contain any value as byte array<br />
| <code>java.lang.Byte[]</code> or <code>byte[]</code><br />
|-<br />
| Any<br />
| Not determinated type, used to specify Collections of mixed type, and null<br />
| <code>java.lang.Object</code><br />
|}<br />
<br />
===== Derived Property Type =====<br />
<br />
The following are obtained using a String as real type and adding a validation regex.<br />
<br />
{|class="wikitable"<br />
! Type <br />
! Description <br />
! Java type <br />
|-<br />
| Enum<br />
| 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 <code>Regexpr</code> property. The Regular Expression is auto-generated and it will be something like '''<code>(FIRST-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>SECOND-ENUM-STRING_REPRESENTATION<nowiki>|</nowiki>...<nowiki>|</nowiki>LAST_ENUM_STRING_REPRESENTATION)</code>'''.<br />
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 <code>Max</code> and <code>Min</code> properties. <br />
| <code>java.lang.Enum</code> or <code>enum</code><br />
|-<br />
| UUID<br />
| String representation of the UUID. The check is obtained using the regular expression '''<code>([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}</code>'''<br />
| <code>java.util.UUID</code><br />
|-<br />
| URL<br />
| String representation of the URL. The check is obtained using a regex available at https://mathiasbynens.be/demo/url-regex (see diegoperini one).<br />
| <code>java.net.URL</code><br />
|-<br />
| URI<br />
| String representation of the URI. The check is obtained using .<br />
| <code>java.net.URI</code><br />
|}<br />
<br />
=== Header ===<br />
<br />
Every Entity and Relation has an Header automatically filled by the System. The Header has the following properties:<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| uuid<br />
| UUID<br />
| This uuid can be used to univocally identify the Entity or the Relation<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creator<br />
| String<br />
| Filled at creation time. The creator is retrieved using the authorization token<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| creationTime<br />
| Datetime<br />
| Creation time in milliseconds. Represent the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>ReadOnly=true</code><br />
|-<br />
| lastUpdateTime<br />
| Datetime<br />
| Last Update time in milliseconds. Represent the difference, measured in milliseconds, between the last update time and midnight, January 1, 1970 UTC<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Facets ==<br />
<br />
Early ideas and thinking on facets were documented at [[Resource_Model_(2nd_generation)#Facets | 2nd Generation Resource Model : Facets]]<br />
<br />
=== Facets Specification ===<br />
<br />
Every Facet has:<br />
* An [[#Header|Header]]<br />
* Zero or more [[#Property|properties]]. Some of the properties are predefined, but any other [[#Property|property]] can be added.<br />
<br />
==== Access Point Facet ====<br />
<br />
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.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| entryName<br />
| String<br />
| An unique identifier<br />
| <br />
|-<br />
| endpoint<br />
| URI<br />
| The URI which identify the endpoint of a resource<br />
| <code>Mandatory=true</code> <code>ReadOnly=true</code> <code>NotNull=true</code><br />
|-<br />
| protocol<br />
| String<br />
| The high-level protocol used by the access point. The String could contains the version if needed. <br />
E.g. WMS not http which is already contained in URI.<br />
|<br />
|-<br />
| description<br />
| String<br />
| .....<br />
| <br />
|-<br />
| authorization<br />
| String<br />
| 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 <br />
|<br />
|-<br />
| authorizationSchema<br />
| URI<br />
| ....<br />
|<br />
|-<br />
| properties<br />
| String <br />
| This can be an arbitrarily complex element whose "structure" is defined by the associated schema<br />
|<br />
|-<br />
| propertiesSchema<br />
| URI<br />
| ....<br />
|<br />
|}<br />
<br />
==== Contact Facet ====<br />
<br />
The goal of this facet is expected to capture contact information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| title<br />
| String<br />
| e.g. Dr, Mrs, Mr, ...<br />
| <code>Mandatory=false</code> <br />
|-<br />
| name<br />
| String<br />
| First Name<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| middleName<br />
| String<br />
| Middle Name<br />
| <code>Mandatory=false</code> <br />
|-<br />
| surname<br />
| String<br />
| Surname<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| eMail<br />
| Email<br />
| An RFC‑822 compliant email address. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex see http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html</code><br />
|-<br />
| website<br />
| URL<br />
| The main website<br />
| <br />
|-<br />
| address<br />
| String<br />
| A physical address<br />
| <br />
|-<br />
| phone<br />
| String<br />
| A phone number<br />
|<br />
|}<br />
<br />
==== Coverage Facet ====<br />
<br />
The goal of this facet is to collect any ''extent''-related information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|}<br />
<br />
==== CPU Facet ====<br />
<br />
The goal of this facet is to describe CPU information.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| clockSpeed<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Descriptive Metadata Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| Inherited. E.g. XML Blob<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Event Facet ====<br />
<br />
The goal of this facet is to collect any descriptive metadata about the resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Functionality Related Facet ====<br />
<br />
The goal of this facet is to capture what are the facilities supported ('''Challenging because of the different audiences''')<br />
Something very "poor" ... we can have a look at WPS spec <br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
|<br />
|-<br />
| description<br />
| String<br />
| ...<br />
|<br />
|-<br />
| input<br />
| String<br />
| ...<br />
|<br />
|-<br />
| output<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Identifier Facet ====<br />
<br />
The goal of this facet is to collect information on Identifiers that can be attached to a resource.<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The identifier. E.g. http://fr.dbpedia.org/resource/Thunnus de305d54-75b4-431b-adb2-eb6b9e546014<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| type<br />
| Enumeration<br />
| The typology of identifier. I.e. URI, DOI, IRI, URL, URN, UUID;<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <br />
|-<br />
| ishasPersistent<br />
| boolean<br />
| To indicate if the Identifier is persistent or not. <br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Location Facet ====<br />
<br />
The goal of this facet is to collect information about Location<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| Country<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Location<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Latitude<br />
| String<br />
| ...<br />
| <br />
|-<br />
| Longitude<br />
| String<br />
| ...<br />
| <br />
|}<br />
<br />
==== Network Address Facet ====<br />
<br />
The goal of this facet is to capture IP information<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| hostName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| domainName<br />
| String<br />
| ...<br />
|<br />
|-<br />
| IPAddress<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| mask<br />
| String<br />
| ...<br />
|<br />
|-<br />
| broadcastAddress<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
Regular expression to validate different IPv4 addresses are available at:<br />
<br />
http://www.regextester.com/22<br />
<br />
https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html<br />
<br />
Both IPv4 and IPv6:<br />
http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses<br />
<br />
==== License Facet ====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| E.g. EUPL 1.1, GPLv2, BSD, ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| text<br />
| URL<br />
| Licence URL<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Memory Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| size<br />
| Long<br />
| Total amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| used<br />
| Long<br />
| usesd amount of memory.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| unit<br />
| Enum<br />
| 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)<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(Byte<nowiki>|</nowiki>kB,<nowiki>|</nowiki>MB<nowiki>|</nowiki>GB<nowiki>|</nowiki>TB<nowiki>|</nowiki>PB<nowiki>|</nowiki>EB<nowiki>|</nowiki>ZB<nowiki>|</nowiki>YB)<br />
|}<br />
<br />
==== Peripheral Facet ====<br />
<br />
The goal of this facet is to .....<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| model<br />
| String<br />
| ...<br />
|<br />
|-<br />
| vendor<br />
| String<br />
| ...<br />
|<br />
|}<br />
<br />
==== Provenance Facet ====<br />
<br />
The goal of this facet is to collect information related with resource lineage/provenance<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| relationship<br />
| Enum<br />
| .... E.g. wasDerivedFrom | wasGeneratedBy | ... <br />
|<br />
|-<br />
| reference <br />
| String<br />
| resourceID (a reference to the "originator" Resource associated to the resource the facet is attached to by the relationship)<br />
|<br />
|-<br />
| provenanceDocument<br />
| String<br />
| ... E.g. the xml format<br />
|<br />
|-<br />
| provenanceDocumentSchema<br />
| String<br />
| ... E.g. a reference to the format<br />
|<br />
|}<br />
<br />
==== Simple Property Facet ====<br />
<br />
The goal of this facet is the base class for all facets described by a value and the schema of the value<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| value<br />
| String<br />
| ...<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
==== Software Facet ====<br />
<br />
The goal of this facet is to capture SW related features"<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| name<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| group<br />
| String<br />
| 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.<br />
|<br />
|-<br />
| version<br />
| String<br />
| 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'''.<br />
|<br />
|-<br />
| description<br />
| String<br />
| A human oriented description of the software artefact being described.<br />
|<br />
|-<br />
| qualifier<br />
| String<br />
| E.g. packaging or scope in maven, scope level or sharable level in gCube software, target architecture for retail software x86 or amd64.<br />
|<br />
|-<br />
| optional<br />
| Boolean<br />
| .... usesd in maven and in gcube<br />
|<br />
|}<br />
<br />
==== State Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
===== Service State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(STARTED<nowiki>|</nowiki>ready<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
===== Container State Facet =====<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state<br />
| <code>Mandatory=true</code> <code>NotNull=true</code> <code>Regex=(started<nowiki>|</nowiki>ready<nowiki>|</nowiki>certified<nowiki>|</nowiki>down<nowiki>|</nowiki>failed)</code><br />
|}<br />
<br />
==== Subject Facet ====<br />
<br />
The goal of this facet is to ...<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
! Attributes<br />
|-<br />
| value<br />
| String<br />
| The value of the state. Must be compliant with schema.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|-<br />
| schema<br />
| URI<br />
| The URI of the schema. It is only an informative field. It is not used for validation from IS part.<br />
| <code>Mandatory=true</code> <code>NotNull=true</code><br />
|}<br />
<br />
== Relations ==<br />
<br />
Every relation has:<br />
* An [[#Header | Header]]<br />
* A [[#Relation_Property|Relation Property]]<br />
* Zero or More [[#Property|properties]] (not necessarily predefined, similarly to [[#Facets|Facets]]).<br />
<br />
=== Relation Property ===<br />
<br />
{|class="wikitable"<br />
! Name<br />
! Type<br />
! Description<br />
|-<br />
| referentialIntegrity<br />
| Enum<br />
| I.e. onDeleteCascadeWhenOrphan, onDeleteCascade, onDeleteKeep. The meaning is related to the relation direction.<br />
|-<br />
| accessPolicy<br />
| Embedded (i.e. AccessPolicy)<br />
| A policy is characterized by a name, a description, and the period ([start], [end]) when the policies apply<br />
|-<br />
| expiryTime<br />
| Long<br />
| 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 <br />
|}<br />
<br />
=== isRelatedTo ===<br />
<br />
{|class="wikitable"<br />
|+ isRelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resources|Resource]]<br />
| <br />
|}<br />
<br />
The following specializations of [[#isRelatedTo|isRelatedTo]] relation have been identified and defined:<br />
<br />
<br />
[[File:Gcube-reources-and-isrelatedto-relations.png]]<br />
<br />
==== callsFor ====<br />
<br />
{|class="wikitable"<br />
|+ callsFor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== demands ====<br />
<br />
{|class="wikitable"<br />
|+ demands<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== dependsOn ====<br />
<br />
{|class="wikitable"<br />
|+ dependsOn<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== discovers ====<br />
<br />
{|class="wikitable"<br />
|+ discovers<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== hosts ====<br />
<br />
{|class="wikitable"<br />
|+ hosts<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
==== isConfiguredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isConfiguredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isCorrelatedTo ====<br />
<br />
{|class="wikitable"<br />
|+ isCorrelatedTo<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
====== isPartOf ======<br />
<br />
{|class="wikitable"<br />
|+ isPartOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== isCustomizedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isCustomizedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| <br />
|}<br />
<br />
==== isManagedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isManagedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| <br />
|}<br />
<br />
==== isPluginOf ====<br />
<br />
{|class="wikitable"<br />
|+ isPluginOf<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center | 1..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== isPoweredBy ====<br />
<br />
{|class="wikitable"<br />
|+ isPoweredBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Hosting Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== manages ====<br />
<br />
{|class="wikitable"<br />
|+ manages<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| <br />
|}<br />
<br />
==== requires ====<br />
<br />
{|class="wikitable"<br />
|+ requires<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| <br />
|}<br />
<br />
==== runs ====<br />
<br />
{|class="wikitable"<br />
|+ runs<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| <br />
|}<br />
<br />
==== uses ====<br />
<br />
{|class="wikitable"<br />
|+ uses<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| <br />
|}<br />
<br />
=== consistsOf ===<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|}<br />
<br />
The following relations (extending the '''consistsOf''') have been identified and defined:<br />
<br />
==== isIdentifiedBy ====<br />
<br />
{|class="wikitable"<br />
|+ isIdentifiedBy<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| <br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| <br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|}<br />
<br />
==== Coverage Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Coverage Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasTemporal =====<br />
<br />
{|class="wikitable"<br />
|+ hasTemporal<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasSpatial =====<br />
<br />
{|class="wikitable"<br />
|+ hasSpatial<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Memory Relation ====<br />
<br />
{|class="wikitable"<br />
|+ <code>Abstract</code> Memory Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#Memory_Relation|Memory Relation]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== hasPersistent =====<br />
<br />
{|class="wikitable"<br />
|+ hasPersistent<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|}<br />
<br />
===== hasVolatile =====<br />
<br />
{|class="wikitable"<br />
|+ hasVolatile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity<br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resources]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center | 0..n<br />
| [[#Memory_Facet|Memory]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|}<br />
<br />
==== Contact Relation ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Contact Relation<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|}<br />
<br />
<br />
===== hasContributor =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|}<br />
<br />
===== hasCreator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|}<br />
<br />
===== hasCurator =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|}<br />
<br />
===== hasDeveloper =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasDeveloper|hasDeveloper]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasMaintainer =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|}<br />
<br />
===== hasManager =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasManager|hasManager]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
|}<br />
<br />
===== hasOwner =====<br />
<br />
{| class="wikitable"<br />
|+ hasContributor<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Definition<br />
|-<br />
| [[#Resources|Resource]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| <br />
|-<br />
! colspan=5 | Known Usage<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|}<br />
<br />
== Resources ==<br />
<br />
Every Resource has:<br />
* An [[#Header|Header]]<br />
* One or More relation with [[#Facets|Facets]]<br />
* Zero or More relation with other [[#Resources|Resources]]<br />
<br />
A class can be identified as <code>Abstract</code>. This means that cannot be instantiated. uses specialization instead. <br />
It is not required that an Abstract class establish an [[#isIdentifiedBy|isIdentifiedBy]] relation with a [[#Facets|Facet]].<br />
<br />
=== Resource ===<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Resource Profile<br />
|-<br />
| colspan=5 | This entity is conceived to describe every "main thing" to be registered and discovered by the Information System. <br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
| Any Resource has at least one Facet which in some way allow to identify the Resource per se.<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Facets|Facet]]<br />
| Any Resource consist of zero or more Facets which describes the different aspects of the facet.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Resource | Resource]]<br />
| [[#isRelatedTo | isRelatedTo]]<br />
| align=center | 0..n<br />
| [[#Resource | Resource]]<br />
| Any Resource can be related to any other resource.<br />
|}<br />
<br />
The following Resources have been identified:<br />
<br />
* [[#Actor|Actor]]<br />
* [[#Configuration|Configuration]]<br />
* [[#Dataset|Dataset]]<br />
** [[#Concrete_Dataset|Concrete Dataset]]<br />
* [[#Service|Service]]<br />
** [[#Abstract_Service|Abstract Service]]<br />
** [[#E-Service|E-Service]]<br />
** [[#Hosting_Node|Hosting Node]]<br />
* [[#Software|Software]]<br />
<br />
==== Actor ====<br />
<br />
{| class="wikitable"<br />
|+ Actor Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor has at least a Contact Facet which permit to identify the Actor per se.<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#consistsOf|ConsistsOf]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact]]<br />
| An Actor can have other Contact Facets which provide secondary contact information.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Actor|Actor]]<br />
| [[#isRelatedTo|isRelatedTo]]<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Configuration ====<br />
<br />
{| class="wikitable"<br />
|+ Configuration Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Configuration|Configuration]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Dataset ====<br />
<br />
{| class="wikitable"<br />
|+ Dataset Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Contact_Relation|Contact Relation]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| ...<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasContributor|hasContributor]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the contributor<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCreator|hasCreator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the creator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasCurator|hasCurator]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the curator<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasOwner|hasOwner]]<br />
| align=center|0..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the owner<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#License_Facet|License]]<br />
| The duration of license if any can can be modeled through the expiry date defined in the consistsOf relation<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Provenance_Facet|Provenance]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#Coverage_Relation|Coverage Relation]]<br />
| align=center | 1..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasTemporal|hasTemporal]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#hasSpatial|hasSpatial]]<br />
| align=center | 0..n<br />
| [[#Coverage_Facet|Coverage]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Descriptive_Metadata_Facet|Descriptive Metadata]]<br />
| '''TBD'''<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Subject_Facet|Subject]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Dataset|Dataset]]<br />
| [[#isCorrelatedTo|isCorrelatedTo]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Concrete Dataset =====<br />
<br />
{| class="wikitable"<br />
|+ Concrete Dataset Profile <code>''extends''</code> [[#Dataset | Dataset]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identifier_Facet|Identifier]]<br />
|<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#hasMaintainer|hasMaintainer]]<br />
| align=center|1..n<br />
| [[#Contact_Facet|Contact]]<br />
| Is he the maintainer<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| The embargoState can be modeled through the access policy defined in the consistsOf relation<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Concrete_Dataset|Concrete Dataset]]<br />
| [[#isPartOf|isPartOf]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
|}<br />
<br />
==== Service ====<br />
<br />
{| class="wikitable"<br />
|+ <code>Abstract</code> Service Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Facets|Facet]]<br />
|<br />
|-<br />
| [[#Service|Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 0..n<br />
| [[#Contact_Facet|Contact]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Service|Service]]<br />
| [[#callsFor|callsFor]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#isCustomizedBy|isCustomizedBy]]<br />
| align=center | 0..n<br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Service|Service]]<br />
| [[#manages|manages]]<br />
| align=center | 0..n<br />
| [[#Dataset|Dataset]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center | 0..n<br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Virtual Service =====<br />
<br />
{| class="wikitable"<br />
|+ Virtual Service Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Virtual_Service|Virtual Service]]<br />
| [[#demands|demands]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== E-Service =====<br />
<br />
{| class="wikitable"<br />
|+ E-Service Profile <code>''extends''</code> [[#Service|Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..1<br />
| [[#Software_Facet|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Identify the endpoints of the E-Service<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| E.g. ActivationTime,DeploymenTime)<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..1<br />
| [[#Service_State_Facet|Service State]]<br />
| I.e. STARTED, ready, down, failed<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#discovers|discovers]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is discovering through query on IS.<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#uses|uses]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any other E-Service, the E-Service instance is invoking.<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| '''TBD'''<br />
|}<br />
<br />
===== Hosting Node =====<br />
<br />
{| class="wikitable"<br />
|+ Hosting Node Profile <code>''extends''</code> [[#Service | Service]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#CPU_Facet|CPU]]<br />
| CPU Information<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasPersistent|hasPersistent]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| Disk Space<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hasVolatile|hasVolatile]]<br />
| align=center|1..n<br />
| [[#Memory_Facet|Memory]]<br />
| RAM<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Event_Facet|Event]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Container_State_Facet|Container State]]<br />
| I.e. started, ready, certified, down, failed<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Simple_Property_Facet|Simple Property]]<br />
| E.g. Environment Variables<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#hosts|hosts]]<br />
| align=center | 0..n<br />
| [[#E-Service|E-Service]]<br />
| A reference to any E-Service instance, the Hosting Node instance is hosting. <br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center | 0..n<br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Schema ====<br />
<br />
'''TBD'''<br />
<br />
{| class="wikitable"<br />
|+ Schema Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Schema|Schema]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Schema|Schema]]<br />
| '''TBD'''<br />
| align=center | 0..n<br />
| '''TBD'''<br />
| '''TBD'''<br />
|}<br />
<br />
==== Site ====<br />
<br />
{| class="wikitable"<br />
|+ Site Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Site|Site]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center | 1..n<br />
| [[#Identification_Facet|Identification]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Contact_Facet|Contact]]<br />
| '''TBD'''<br />
|-<br />
| [[#Site|Site]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center | 1..n<br />
| [[#Location_Facet|Location]]<br />
| '''TBD'''<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Network_Address_Facet|Network Address]]<br />
| Network address '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isManagedBy|isManagedBy]]<br />
| align=center | 0..n<br />
| [[#Site|Site]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Software ====<br />
<br />
{| class="wikitable"<br />
|+ Software Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Software per se.<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Apart the one connected with [[#isIdentifiedBy|isIdentifiedBy]] relation (gCube coordinates) the others identify the sw in other way e.g. (Maven coordinates)<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#Access_Point_Facet|Access Point]]<br />
| Links to maven artifact on nexus, javadoc, wiki, svn ...<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|0..n '''TBD'''<br />
| [[#License_Facet|License]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#consistsOf|consistsOf]]<br />
| align=center|1..n<br />
| [[#State_Facet|State]]<br />
| '''TBD'''<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Software|Software]]<br />
| [[#dependsOn|dependsOn]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#isConfiguredBy|isConfiguredBy]]<br />
| align=center|0..n <br />
| [[#Configuration|Configuration]]<br />
| '''TBD'''<br />
|-<br />
| [[#Software|Software]]<br />
| [[#requires|requires]]<br />
| align=center|0..n <br />
| [[#Service|Service]]<br />
| '''TBD'''<br />
|-<br />
| [[#Abstract_Service|Abstract Service]]<br />
| [[#demands|demands]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Abstract_Service | Abstract Service]] that is ...<br />
|-<br />
| [[#E-Service|E-Service]]<br />
| [[#runs|runs]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#E-Service | E-Service]] that is running this Software<br />
|-<br />
| [[#Hosting_Node|Hosting Node]]<br />
| [[#isPoweredBy|isPoweredBy]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| An inverse reference stemming from the [[#Hosting Node|Hosting Node]] that is ...<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|0..n <br />
| [[#Software|Software]]<br />
| '''TBD'''<br />
|}<br />
<br />
==== Plugin ====<br />
<br />
{| class="wikitable"<br />
|+ Plugin Profile <code>''extends''</code> [[#Software|Software]] Profile<br />
|-<br />
! Source<br />
! Relation<br />
! Multiplicity <br />
! Target<br />
! Description<br />
|-<br />
! colspan=5 | Facets<br />
|-<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isIdentifiedBy|isIdentifiedBy]]<br />
| align=center|1..n<br />
| [[#Software_Facet|Software]]<br />
| Software coordinates which identify the Plugin per se.<br />
|-<br />
! colspan=5 | Resources<br />
|-<br />
| [[#Plugin|Plugin]]<br />
| [[#isPluginOf|isPluginOf]]<br />
| align=center|1..n <br />
| [[#Software|Software]]<br />
| A reference to the [[#Software|Software]] this [[#Plugin|Plugin]] extends capabilities.<br />
|}<br />
<br />
== Best practices and guidelines ==<br />
<br />
* On Facet instances "reuse" across Resource Profiles:<br />
** 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; <br />
** This MUST be done only when a change in a facet instance MUST affect a change in all Resources connected to such a Facet.<br />
<br />
== Internal Entity and Relation ==<br />
<br />
For internal use only are defined the following entity and relation:<br />
<br />
* [[#Context|Context]]<br />
* [[#isParentOf|isParentOf]]<br />
<br />
=== Context ===<br />
<br />
Model a Context (aka scope)<br />
<br />
=== isParentOf ===<br />
<br />
{|class="wikitable"<br />
!Source<br />
!Target<br />
!Description<br />
|-<br />
| [[#Context|Context]]<br />
| [[#Context|Context]]<br />
| <br />
|}</div>
Pasquale.pagano