Source: https://stockage.univ-valenciennes.fr/TonarelliInteroperabilite20070601/coursPDF/unite5.pdf