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