ITSMO reasoning

what an ITSMO reasoner can do

This example show how a complete ITSMO reasoner enrich some facts.

Suppose that https://demo.polisorbis.eu/ is a public web service deployed from the release 1.0.0 of the https://gitlab.com/copernicani/polisorbis/demo.polisorbis.eu gitlab repository maintained by the ecow user.

In ITSMO you know this fact as as:

@prefix xsd:  <http://www.w3.org/2001/XMLSchema#> .
@prefix schema: <https://schema.org/> .
@prefix : <https://w3id.org/itsmo#> .

<https://demo.polisorbis.eu/#1.0.0> :versionOf <https://demo.polisorbis.eu/> ;
    :hasResponsible <https://gitlab.com/ecow> ;
    :deployedFrom <https://gitlab.com/copernicani/polisorbis/demo.polisorbis.eu/-/tree/1.0.0#deployment> ;
    :hasScope :BusinessService 
.
<https://gitlab.com/copernicani/polisorbis/demo.polisorbis.eu/-/tree/1.0.0/#deployment> :created "2025-01-12T15:23:35"^^xsd:dateTime .

A compliant ITSMO reasoner will understand:

@prefix xsd:  <http://www.w3.org/2001/XMLSchema#> .
@prefix schema: <https://schema.org/> .
@prefix itsmo: <https://w3id.org/itsmo#> .
@prefix prov: <http://www.w3.org/ns/prov#> .


<https://demo.polisorbis.eu/> a itsmo:Asset .

<https://demo.polisorbis.eu/#1.0.0> a itsmo:WebService, itsmo:ConfigurationItem, istmo:Service, istmo:ITService, schema:Service, schema:WebApi, prov:Entity;
    itsmo:versionOf <https://demo.polisorbis.eu/> ;
    itsmo:deployedFrom <https://gitlab.com/copernicani/polisorbis/demo.polisorbis.eu/-/tree/1.0.0/#deployment> ;
    itsmo:dependsOn <https://gitlab.com/copernicani/polisorbis/demo.polisorbis.eu/-/tree/1.0.0/#deployment> ;
	itsmo:created "2025-01-12T15:23:35"^^xsd:dateTime ;
    itsmo:hasScope itsmo:BusinessService ;
    itsmo:hasPriority itsmo:LowPriority ;
    itsmo:hasCriticality itsmo:LowCriticality ;
    schema:availableChannel [ schema:serviceUrl "https://demo.polisorbis.eu/" ] ;
    itsmo:versionTag "1.0.0" ;
    itsmo:hasOwner <https://gitlab.com/copernicani> ;
    itsmo:hasResponsible <https://gitlab.com/ecow> ;
    prov:wasDerivedFrom <https://gitlab.com/copernicani/polisorbis/demo.polisorbis.eu/-/tree/1.0.0/#deployment> ;
    prov:wasGeneratedBy [  a prov:Activity ;
        prov:wasAssociatedWith <https://gitlab.com/ecow> ;
        prov:used <https://gitlab.com/copernicani/polisorbis/demo.polisorbis.eu/-/tree/1.0.0/#deployment> ;
        prov:qualifiedUsage [  a prov:Usage ;
            prov:entity <https://gitlab.com/copernicani/polisorbis/demo.polisorbis.eu/-/tree/1.0.0/#deployment> ;
            prov:hadRole :DeployProcessDescription ;          
        ]
    ];
    prov:wasAttributedTo  <https://gitlab.com/copernicani>, <https://gitlab.com/ecow> ;
    prov:qualifiedAttribution [ a prov:Attribution ;
        prov:agent <https://gitlab.com/copernicani> ;
        prov:hadRole itsmo:Owner ;
    ] , [ a prov:Attribution ;
        prov:agent <https://gitlab.com/ecow> ;
        prov:hadRole itsmo:Responsible 
    ]
.
<https://gitlab.com/copernicani/polisorbis/demo.polisorbis.eu/-/tree/1.0.0/#deployment> 
    a prov:Entity, itsmo:ConfigurationItem, itsmo:ConfigurationBaseline, itsmo:Software, itsmo:Deployment, itsmo:ProcessDescription ;
    itsmo:hasOwner <https://gitlab.com/copernicani> ;
	itsmo:created "2025-01-12T15:23:35"^^xsd:dateTime ;
    itsmo:versionOf <https://gitlab.com/copernicani/polisorbis/demo.polisorbis.eu> ;
    itsmo:versionTag "1.0.0" ;
    itsmo:path "/" :
    prov:wasAttributedTo  <https://gitlab.com/copernicani>;
    prov:qualifiedAttribution [ a prov:Attribution ;
        prov:agent <https://gitlab.com/copernicani> ;
        prov:hadRole itsmo:Owner ;
    ] 
.
<https://gitlab.com/copernicani/polisorbis/demo.polisorbis.eu> 
    a prov:Entity, itsmo:ObjectRepository, itsmo:GitLabProject ;
    itsmo:hasOwner <https://gitlab.com/copernicani> ;
    prov:wasAttributedTo  <https://gitlab.com/copernicani>;
    prov:qualifiedAttribution [ a prov:Attribution ;
        prov:agent <https://gitlab.com/copernicani> ;
        prov:hadRole itsmo:Owner ;
    ] 
.
<https://gitlab.com/ecow> a itsmo:Agent, prov:Agent, prov:Person, schema:Person .
<https://gitlab.com/copernicani> a itsmo:Agent, prov:Agent, prov:Organization, schema:Organization .

[] a prov:Activity, prov:Publish ;
	prov:generated <https://demo.polisorbis.eu/> ;
	prov:used <https://gitlab.com/copernicani/polisorbis/demo.polisorbis.eu/-/tree/1.0.0/#deployment> ;
	prov:startedAtTime "2025-01-12T15:23:35"^^xsd:dateTime ;
	prov:endedAtTime "2025-01-12T15:23:35"^^xsd:dateTime

Note that:

  • some fact are inferred from rdfs an OWL semantic
  • some facts are inferred by ITSMO axioms
  • some of facts are deducted by recognizing and parsing the GitLab URIs

More sophisticated reasoners, could infer other information. For example:

  • detect semantic inconsistences,
  • accessing GitLab APIs to discover the repository maintainer, the project description and the project name, dependencies, etc., etc.
  • apply euristic (e.g defining a schema:Name)
  • apply company specific rules
  • discovering other information by dereferencing the URLs,
  • etc, etc