ITSMO User's Guide (discontinued. See https://purl.org/itsmo/v2)

Ontology documentation

A guide to use IT Service Management Ontology, a standardized vocabulary for describing IT Services

Reference URI:
http://ontology.it/itsmo/v1/userguide - use it to link this document [+]
Author:
Enrico Fagnoni - enrico at linkeddata.center
Status:

RETIRED - This project imigrated to https://purl.org/itsmo/v2 . The version at ontology.it site is deprecated and will not be updated. Contact author for more info

WARNING: the new ITSMO ontology home is now https://w3id.org/itsmo . This URL is old and deprecated.

Abstract

IT Service Management Ontology (ITSMO) is a powerful vocabulary for describing all of the detail of IT Services in a way friendly to search engines, inventory applications, and browser extensions.

ITSMO is for everyone that wants to describe or publish an IT Service Catalog according with ITIL best practices, ISO 20000 standards and LinkedData W3C principles.

By adding few extra tags to your service description, you make sure that potential customers realize all the benefits of doing business with you, because their computers can find, explore and present your IT Service Catalog with ease.

ITSMO it is based on open Semantic Web technologies; this enable computers to help you in managing IT service architectures: you can use semantic web tools to show the hidden dependency between services and between their components (processes, documents, software, hardware, people, etc.).

ITSMO is tolerant with incomplete, missing and even wrong data. It helps you to get the best from what you have, helping you to manage risks and allowing to incrementally increase the quality of your data. It works with any mix of structured and unstructured data source, from expensive repository tools (CMDB) to uncontrolled sparse files.

ITSMO is free, easy to extend and works together with other public vocabularies, like Dublin Core, GoodRelations, FOAF and with the forthcoming USDL to provide you a complete semantic framework for IT Service Providing business.

Index

Overview

IT Service Management Ontology (ITSMO) provides a formal vocabulary (also known as "schema", "data dictionary", or "ontology") for describing resources related to IT Service Management best practices.

The goals of ISTMO can be summarized in following points:

  1. Supporting IT Service Providers with a formal and shared vocabulary to describe their assets consistently with the ITIL, and ISO 20000 glossaries.
  2. Enabling IT service providers to distribute the knowledge about their assets; still maintaining the full control over them.
  3. Being methodology agnostic.
  4. Being fully compatible with W3C Semantic Web standards.
  5. Being tolerant with partial, duplicate and missing information: get the best from what you have.
  6. Being independent from tools and vendors: you are free to choose different level of control for your assets, mixing technologies and tools in a pragmatic strategy.
  7. To use the power of open semantic web technologies to automatically infer useful things about your IT services infrastructure, just reading the service descriptions.
  8. Being a building block for vertical applications supporting automatic impact analysis and risk management in service providing.

Last but not least ...be as simple as it can be, but not simpler. (A.Einstein)

ITSMO define a vocabulary of less than 100 terms. The most important are:

The following diagram illustrates the interplay between some of the main ITSMO language elements. Please note that this diagram is VERY partial and shows just few of the terms defined in ITSMO vocabulary.

itsmo_uml

The full ITSMO formal language specification is available at http://ontology.it/itsmo/v1 under Creative Commons Attribution-ShareAlike 3.0 Unported License.

The full specification of ITSMO is expressed with Web Ontology Language (OWL-DL). This means that ITSMO language specification is readable and understandable both for humans and for machines (i.e. tools).

Usage examples: how it works

NDR: this section needs improvements

Use ITSMO vocabulary to enrich your asset descriptions (i.e. the description of your processes, services, systems, etc) with additional information about your data. Such extra information is called metadata.

The task of adding metadata is called "annotation" and usually consists in tagging a data (i.e. a number, a link, a field, a sentence, etc) with one or more properties. ITSMO provides you terms to annotate data about IT services and related concepts.

ITSMO uses the standard Resource Description Framework (RDF) to represent metadata, this means that you can use lots of existing technologies and tools to annotate your resources with ITSMO terms. Depending form the physical format of the resource you can use: attribute fields (like in Word , Excel, DBMS), RDFa or microformats (in HTML). If a resource does not support embedded metadata annotations, you can add them with external xml files.

Because ITSMO is a formal vocabulary, annotated resources can be understood by a software agent that builds automatically its knowledge navigating your resources and making deductions in order to answer queries and solving problems, exactly like a human reader.

Here are two HTML documents annotated with ITSMO vocabulary:

In both examples, all meta data are embedded into HTML using RDFa standard; no other information source is required. These web pages can be understood by a human reader and/or by a machine reader (i.e. software agent). The reader could be able to make deductions (inferences), find relations between elements and start navigating the links to enrich his/her/its knowledge about selected topic.

Configuration Items

Configuration Item is a core concept: it is the base class for many ITSMO important terms.

You can think to a itsmo:ConfigurationItem at least from four points of view:

You are free to adopt the most appropriate point of view according your need.

Baseline and Snapshot

Configuration items are changing things. A baseline is a snapshot of a Configuration Item that is used as a reference point. Many snapshots may be taken and recorded over time but only some will be used as baselines. For example:

A snapshot can be used to rebuild a Configuration Item.

A Configuration item can declare a specific baseline as a Reference Baseline. This means that the CI has a reference configuration snapshot that can be used as a contractual base.

Normally a Reference Baseline,if assigned, never change. If you need to change the reference baseline you shoud create another version of the whole CI.

If the Reference Baseline is not assigned, the CI is an evolving concept. If you reference an evolving concept you must know that its properties (i.e. its semantic) can change with time.

I need a tool to manage Configuration Items?

Configuration Management needs to store configuration data and meta-data somewhere.

The easy way to do it is to use a Version Control System like subversion or a proprietary CMDB System or one of available on-line repository.

This article shows how easy is to integrate Subversion with ITSMO.

But you are free to use just a file system and store CI configuration as a simple directory (i.e. the file system is your CMDB). In this case you will have to carefully implement change management using snapshots of the configuration directory. Many articles, like this show how to implement fast snapshots of a directory using Hard links and rsync.

File system based CMDB could be useful when your configuration is composed mainly by binary files and for items with a low change rate.

Version? Configuration? Revision? Snapshots? Baselines? Dumps? What a mess!!!

One big source of confusion is related to the common misuse of terms "version" and "revision" applied to Configuration Item, Configuration and Baseline such as: Configuration Item Version, Configuration Version, Configuration Revision, Snapshot Version, Baseline Version.

First of all you should not confuse Configuration Item with Configuration. Remember that in ITSMO, a Configuration Item is an indirect reference to changing Configuration.

For this reason Configuration Item Version and Configuration Version are NOT synonyms.

Configuration Item Version

In ITSMO a Configuration Item Version is a reference to another, newer or older, itsmo:ConfigurationItem. They are two distinct Configuration Items with different URI.

In other words, Configuration Item Version denotes a relation between two Configuration Items that should be expressed with Dublin Core vocabulary as in this example:


	sc:Apache2_hosting_service dcterms:replaces sc:Apache_hosting_service .
	sc:Apache_hosting_service dcterms:isReplacedBy sc:Apache2_hosting_service .
	sc:Apache_hosting_service dcterms:hasVersion sc:Apache2_hosting_service .
	sc:Apache2_hosting_service dcterms:isVersionOf sc:Apache_hosting_service .
	

In plain English this means that Apache2_hosting_service is the new edition of Apache_hosting_service.

Configuration Revision or Configuration version

These locutions are common used to indicate the dump of a Configuration Snapshot: that is a tar/zip file, or a tag that label a set of resources in a CMDB.

In other words: a Configuration Item (i.e. a concept) can be related to a Snapshot (i.e another concept) that represents its frozen configuration in a defined time. The Snapshot has a "configuration dump" that phisically is a tag (i.e. a label) in a Version Control System (or the URL of a dump file) that groups the forzen version of the phisical resources refernced in the configuration.

As a matter of facts, Configuration Revision or Configuration version are often used to indicate such dump.

Configuration dump is not a term defined in ITSMO vocabulary but you can annotate a Snapshot with the itsmo:hasConfigurationDump datatype property.

Unfortunately the locution Configuration version is also frequently used to denote a relation between a configuration and its dump (i.e. a_dump isVersionOf a_configuration). This could be confusing and shoud be avoided.

Version relations between configurations and between dumps should be expressed using Dublin Core vocabulary. Let's see some examples from real world:


	sc:Apache2_hosting_service itsmo:hasConfiguration CMDB:v1 .
	CMDB:trunk dcterm:hasVersion CMDB:v1.
	

Previous statements assert that the current configuration of Apache2_hosting_service is CMDB:v1; that is derived from the CMDB:trunk . In subversion specific terminology we can translate this in: Apache2_hosting_service source tree is archived the repository under v1 branch of the trunk path.


	sc:Apache2_hosting_service itsmo:referenceBaseline _n:;
	_n itsmo:hasConfigurationDump 35.
	

Previous statements assert that Apache2_hosting_service has a baseline (unnamed) derived from a configuration that has a dump tagged as "35" in CMDB. Note that in this case 35 is a literal (not an URI).

In general, you are encouraged to use Dublin Core to assert version relation between ITSMO resources of compatible classes.

It is a confusing practice to use Dublin Core relations between different ITSMO classes. For instance do NOT use sc:Apache2_hosting_service dcterms:hasVersion sc:a_baseline, instead use sc:Apache2_hosting_service itsmo:hasBaseline sc:a_baseline. For the same reason do NOT use sc:a_baseline dcterms:hasVersion '35', instead use sc:a_baseline itsmo:hasConfigurationDump '35'.

See also Dublin Core chapter for more info.

Why so complicated?

Yes, this is a good question. A possible answer is that the lexical complexity resembles the complexity of Configuration Management. Configuration management is not an easy knowledge domain: think to have to control the changes in a running DB, in a log file or to describe a "man" in terms of all his evolving cells. IT is up to you to decide if it is more convenient to consider a db (or a man) as an individual or as a "configuration" to manage.

ITSMO decided to consider an IT Service as indirect references to a "configuration" to allow you to designing an easy-to-maintain service architecture. This because, when some changes happens to your service, you have the option to:

  • Release another Service version (and this usually means to review/update the service architecture);
  • change just the configuration (i.e. change the branch on the same Service), keeping the same Service URI;
  • Create a new baseline or
  • just take a snapshot of old configuration before changing it;

For instance, you could decide to change service URI only when mayor architectural change happens. For minor changes you can create new configuration branch and a new reference baseline. For bug fix, just commit a new configuration revision and let the Version Control System take care of it.

But there is another, more philosophical answer.

Configuration management is an old discipline, much older than the Web and the Internet. Many sage men say that Configuration Management is important to control your assets.

The Web architecture is based on hypertext model and, in general, the only thing that you can manage in web is a resource (i.e. a web document).

As a matter of fact, in the web all documents are related (i.e. linked) so, in the general model, there is no easy way to do web configuration management like we usually do, for example, in software engineering. This because the web perimeter has a fractal nature.

OK, this is the general rule. But very often in the real world, we need to manage things composed by some parts that, more or less, are under our direct control. Some of the general principles of the web architecture and of configuration management could be safely relaxed. For example this document is composed by:

  • An index php document (this file)
  • Some example files that are integral part of the guide
  • A css file that I link from another project.
  • A library to get subversion info.

Probably in the future, the index file will be split in some files or I will provide a pdf version.

So, what is this manual? The answer is that it is a Configuration Item, because I want to consider it as a whole while, at the same time, I want to manage changes on its important parts (i.e. this file and the example directory).

And the css and library files? I decided to not care about it. This because it is acceptable for me to lose its direct control due I know that such files are managed as part of another trusted Configuration Item (the project homepage).

This is the key: you do not need always a perfect solution; you just need a good enough one.

This is particularly true when you have to manage conceptual, complex, immaterial, high dynamic things like processes and services.

The Semantic Web is perfect for describing such things, and istmo:ConfigurationItem is a way to relate these abstract things with physical objects (i.e. files and data) with a free level of detail and control. Using Semantic Web technologies, you can use or extend istmo:ConfigurationItem classes to capture just enough of your needed system dynamic.

Anyway ISMO ontology gives enough formal semantic to the day-by-day IT Service provider language for supporting IT Service Management best practice.

IT services

The distinguishing attributes for IT services are:

All these concepts conform to ITIL definition. Note that Utility, Warranties and Options can be typed resources or just literals (i.e. small sentences).

Together with Processes and Systems, IT services are defined as Runnable Resources: they are Configuration Items that need an operation environment to be executed.

Dependency relations

One important goal for ITSMO is to describe the dependencies between IT Services and their components (mainly software applications, process and systems) in order to enable a reasoner to find all hidden relations between them. To an ITSMO reasoner you could ask questions like these:

  • What happens to my catalog if I stop this IT Service?
  • What services needs a non regression testing if I change the DB release?
  • What is the coupling and cohesion index of Services in my Catalog?
  • What is the structural complexity of my IT service architecture
  • What is my current Service Catalog

This is done by means of:

  • The class itsmo:Dependency that states a very general concept
  • the property itsmo:hasDependency. Every subject can declare to have one or more dependencies with other things.

itsmo:Dependency is an artifact to describe N-ary relations because RDF allow just binary relations. It is also a tool for the reification of all dependency properties.

The dependency class is specialized with two sub-classes (that you can extend for your needs):

You can describe the dependency strength level by means of the class using a class itsmo:DependencyStrength and two predefined individuals to state a dependancy strength value (that you can extend):

  • itsmo:weakDependency to assert a weak dependency between two configuration items (i.e. an optional function call )
  • itsmo:strongDependency to assert a strong dependency between two configuration items(i.e. a shared library)

The property itsmo:hasDependencyStrength states the relation between a Dependency and the strengh value.

The property datatype itsmo:hasDependencyDistance is designed to distinguish a direct dependency( where itsmo:hasDependencyDistance =1 ) from indirect dependency (i.e. itsmo:hasDependencyDistance > 1 or undefined)

The indirect dependency and direct dependency are modeled taking into account W3C suggestion in "Simple part-whole relations in OWL Ontologies" but with some distinction.

In particular, you could think itsmo:hasDependency as a pseudo transitive property through this axiom (exprexed as a SPARQL construct):


CONSTRUCT {
	?A itsmo:hasDependency _:C.
	_:C a itsmo:Dependency;
		itsmo:hasDependencyStrength ?strength;
		itsmo:hasDependencyDistance op:numeric-ad(?distance,1);
		ismo:hasDependentObject ?C.	
} WHERE {
	?A a itsmo:ConfigurationItem;
		itsmo:hasDependency ?depenencyToB.
	?depenencyToB a itsmo:Dependency;
		itsmo:hasDependentObject ?B.

	?B a itsmo:ConfigurationItem;
		itsmo:hasDependency ?depenencyToC.
	?depenencyToC a itsmo:Dependency;
		itsmo:hasDependentObject ?C;
		itsmo:hasDependencyStrength ?strength;
		itsmo:hasDependencyDistance ?distance.
}

I sed before that itsmo:Dependency is a reification of a dependency property. This means that you can define shortcuts for common dependency patterns. In ITSMO ar defined:

  • itsmo:uses to state a direct runtime strong dependency between runnable items.
  • itsmo:requires to assert a direct strong structural dependency.
  • itsmo:links to assert a direct runtime weak dependency between runnable items.
  • itsmo:directReportOf to assert a direct strong structural (i.e. hierarchical) dependency between people (ie. identities).
  • itsmo:hasConsole this property states two symmetric dependencies: a direct weak runtime dependency between an IT Services from its console, and a weak runtime dependency between the console and the service it manage.

Note that, because all these shortcuts describe direct dependencies, they are not transitive properties.

Another interesting property related to dependency is itsmo:isOptionFor. Note that this relation IS NOT a dependency, but it states a potential dependency in the sense that could exist a dependency between referenced and annotated resource.

This property is useful to annotate an optional service, an optional piece of hardware or a requirement choice.

These SPARQL constructs translate shortcuts to dependency.

Extending ITSMO

ITSMO can be extended to support specific IT services vocabulary. Here are some examples of modules that extend ITSMO (NDR: not yet published, please mail author for details):

Companion vocabularies

ITSMO should be used together with other ontologies: the most useful are Goodrelations, Dublin Core and FOAF

ITSMO will be strictly related to Unified Service Description Language (USDL) as soon as this will became a W3C recomendation. In this chaper I'll anticipate some ideas to integrate ITSMO with USDL.

Goodrelations

Goodrelations is an upper ontology written by Martin Heep for describing an offering of generic product and services and related subject. Goodrelations define gr:ProductOrService class that has a strong relations with itsmo:ITService.

You are encouraged to describing IT services using Goodrelations properties to address a commercial point of view and using ITSMO to address a Service Management (ITIL) point of view. Doing so your ITIL compliant service catalog will be also e-commerce ready.

Example (turtle):

@prefix gr: <http://purl.org/goodrelations/v1#> .
@prefix itsmo: <http://ontology.it/itsmo/v1#> .
@prefix example: <http://www.example.com/#> .

example:catalog:SSN10001234 a itsmo:ITService, gr:individual;
	rdfs:label "Service Serial Number ITS10001234";
	rdfs:comment "Specific ERP SaaS for BigCustomer";
	gr:serialNumber "SSN10001234";
	itsmo:hasAgreement  example:SLA:SSN10001234;
	itsmo:hasCustomer 	<http://www.bigcustomer.com/#company>;
	gr:hasMakeAndModel sc:catalog:ERPSaaS:v1;
			   
sc:catalog:ERPSaaS:v1 a itsmo:ITService, gr:ProductOrServiceModel;
    itsmo:hasProvider example:company;
	gr:hasMPN "ERP-v1";
	rdfs:label "ERP service";
	rdfs:comment "Access to a private istance of the ERP application hosted on Amazon EC2";
	itsmo:uses <http://aws.amazon.com/ec2#ITservice>;
	itsmo:hasOperationProcess [
	a itsmo:Process;
	 itsmo:hasAccountable example:department:IT;
	 itsmo:hasResponsable example:department:IT:operations;
	]
	itsmo:hasConfigurationManagement [
	 a itsmo:ConfigurationManagement;
	 itsmo:hasAccountable example:department:IT;
	 itsmo:hasResponsable example:department:IT:cm;
	]

Hint: during service strategy/design, model your core services as subclasses of both itsmo:ITService and gr:ProductOrServiceModel.

Some overlapping concepts

These are some similar concepts treated differently in Goodrelations and ITSMO:

  • gr:hasManufacturer and itsmo:hasProvider: when referred to an IT Service these two properties share a very similar semantic. It is safe in 90% of the cases to map itsmo:hasProvider as a refine of gr:hasManufacturer
  • gr:BusinessEntity and itsmo:Identity: share a very similar semantic. It is safe in 90% of the cases to map itsmo:Identity as a sub-property of gr:BusinessEntity
  • gr:isAccessoryOrSparePartFor and itsmo:isOptionFor: they share the same meaning when they annotate and/or reference ITServices.

The GoodITSMO ontology

Here you can find GoodITSMO ontology is an example of a bridge ontology that integrate Goodrelations and ITSMO, could be used a reference to build your domain specific ontology.

This example simple bridge ontology:

  • Imports both Goodrelations and ITSMO.
  • Makes itsmo:QualitativeValue a subclass of gr:QualitativeValue.
  • Makes itsmo:Identity a subclass of gr:BusinessEntity.
  • Makes itsmo:qualitativeServiceProperty a subclass of gr:qualitativeProductOrServiceProperty.
  • Enriches to the predefined itsmo individuals.

As an alternative you can create bridge RDF triple just running a set of simple SPARQL construct. This solution frees you to the necessity of an OWL-DL reasoner.

After doing this mapping, it should be safe to run also useful Goodrelations Rules, Axioms and mappings.

For more information about the method used for the integration with Goodrelations Ontology see recipe "Creating Domain-specific Products and Services Ontologies for Goodrelations" [NDR: this section must enhanced]

Dublin Core

ITSMO is inter-operable at Level 2 with Dublin Core Initiative Meta data Terms.

You can use all dcterms terms to annotate ITSMO objects. There are few overlapping between dcterms and ITSMO vocabulary:

  • You can think to some dependency relations in Dublin Core ( conformsTo,hasPart,isPartOf, isReferencedBy, relation, requires etc.) as shortcuts to itsmo:dependancy. In this file you can find some useful axioms to map those concepts.
  • dcterm:publisher could overlap with itsmo:Provider or with the responsible (or accountable) of the publishing process attached to a itsmo:Document. Use both or use itsmo definition, you could need a mapping role

See also goodrelation axiom documentation.

FOAF

FOAF ontology can be used to enrich annotation of ITSMO objects (i.e. foaf:depiction of a service architecture).

See also goodrelation axiom documentation.

Unified Service Description Language (USDL)

USDL is a language for describing general and generic parts of technical and business services to allow services to become tradable and consumable.

USDL is an upper ontology that covers a lot of service aspects. Unfortunatelly it is not yet an OWL ontology; USDL was originally modelled in eCore and integrates a number of different per- spectives over services (e.g., organisations, Web services, resources, etc). So, at today, it is not possible a direct integration with ITSMO. But....

A W3C incubator Activity investigate how to integrate USDL in W3C standards and in October 2011 the USDL W3C Incubator Group has come to the conclusions described in the XG final report

This document seems very interesting because the chaper 2.5 designs a strategy toward LinkedData that is aligned with ITSMO vision.

Even if USDL OWL is not yet available, it is already possible to imagine some integration areas:

  • USDL defines a general usdl:Service class; itsmo:ITService could be mapped as a subclass of usdl:Service to extend USDL with some terms related to IT Service Management.
  • usdl:hasPart, usdl:hasOptionalPart, usdl:hasMandatoryPart, usdl:hasOptionalPartTransitive, usdl:hasMandatoryPartTransitive, usdl:includes, usdl:requires, usdl:mirrors and usdl:dependsOn could be easlily modelled as shortcuts of a specialization of ITSMO:Dependency see ITSMO User Manual Dependency relations chapter for more details.
  • Some concepts in USDL seam overlap with goodrelations (i.e.usdl:enhances, usdl:ServiceModel, etc). But it should be easy to map these concepts with the goodrelations one.
  • Both USDL and ITSMO should remain OWL-DL in order to be compatible with Goodrelations.
  • USDL could reuse the ITSMO approach to service life cycle importing itsmo:LifeCycleStage class and itsmo:hasStatus.

Mapping life cycles

One goal of ITSMO is to be methodology agnostic. This means that ITSMO does not endorse any life cycle in designing service architecture.

But you can do it extending ITSMO, and it is quite simple. In a nutshell you have to:

  1. Create a new subclass of itsmo:LifeCycleStage for each Stage of your Life Cycle Stage.
  2. Create some individuals for the new classes to describe the life cycle stages.
  3. Use the property itsmo:hasStatus to assign a stage in a life cycle to a Configuration Item.

This is an example of how easy could be mapping ITIL framework to ITSMO.

Acknowledgements

I would like to acknowledge Marco Gherbi, Francesco Frau, Gianluca Marchini, Graziano Ferrari, Roberto Grassi, Stefano Inelli, Martina Ascoli, Robert Cachia and Martin Hepp toward this requirements, tools and inspiration. We would also like to acknowledge the many helpful suggestions from members of the E-Artspace labs, and all the community of Business Ontology Toolkit (BOTK) to help us to test in real word this ontology.