Traduzione Vincoli non esprimibili direttamente Come accennato anche in precedenza alcuni vincoli che possiamo esprimere direttamente sullo schema E/R non possono essere espressi nelle ontologie in DlLite. In particolare la traduzione del “complete” nelle generalizzazioni e le molteplicità sulle relazioni diverse da quelle illustrate ovver 0..n, 1..n, 0..1, 1..1. Per tradurre questi vincoli e quindi fornire una maniera per verificare che le asserzioni nell’ontologia siano coerenti con questi vincoli, si devono scrivere delle query booleane a verifica di questi. L’obiettivo è verificare che tutti le iscrizioni individuali e di gruppo formino l'insieme delle iscrizioni e viceversa. Quindi una maniera per implementare questo è verificare che la differenza insiemistica tra Iscrizione/ (Gruppo U Individuo) sia vuota. La query sparSQL booleana è la seguente: VERIFY not exists( SELECT iscr.x FROM sparqltable( SELECT ?x WHERE { ?x rdf:type 'Iscrizione'. } )iscr WHERE iscr.x not in ( SELECT grp.x FROM sparqltable( SELECT ?x WHERE{ ?x rdf:type 'Gruppo'. } )grp UNION SELECT ind.x FROM sparqltable( SELECT ?x WHERE{ ?x rdf:type 'Individuo'. } )ind )) )