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 i collaudi su pista e su banco formino tutti i collaudi presenti nel concetto collaudo e viceversa. Quindi una maniera per implementare questo è verificare che la differenza insiemistica tra Collaudo / (SuPista U SuBanco) sia vuota. La query sparSQL booleana è la seguente: VERIFY not exists( SELECT coll.x FROM sparqltable( SELECT ?x WHERE { ?x rdf:type 'Collaudo'. } )coll WHERE coll.x not in ( SELECT pista.x FROM sparqltable( SELECT ?x WHERE{ ?x rdf:type 'SuPista'. } )pista UNION SELECT banco.x FROM sparqltable( SELECT ?x WHERE{ ?x rdf:type 'SuBanco'. } )banco )) )