/* Vincolo epistemico 1: in una classe insegna al più 1 maestra */ /* Questo vincolo è stato inserito come epistemico perchè se fosse inserito nella TBox porterebbe la TBox fuori da DLLite_A */ /* Si poteva anche scegliere di mantenere questo vincolo nella TBox e implementare come vincolo epistemico */ EQLC(VERIFY not exists ( SELECT insegna.c2 FROM sparqltable ( SELECT ?c1 ?c2 WHERE { ?c1 rdf:type 'Maestra'. ?c1 :insegna ?c2. ?c2 rdf:type 'Classe'. } ) insegna GROUP BY (insegna.c2) HAVING COUNT(*) > 1 )) /* Vincolo epistemico 2: un bambino è assegnato al più ad una classe */ /* Questo vincolo è stato inserito come epistemico perchè se fosse inserito nella TBox porterebbe la TBox fuori da DLLite_A */ /* Si poteva anche scegliere di mantenere questo vincolo nella TBox e implementare come vincolo epistemico */ EQLC(VERIFY not exists ( SELECT assegnato.c1 FROM sparqltable ( SELECT ?c1 ?c2 WHERE { ?c1 rdf:type 'Bambino'. ?c1 :assegnato ?c2. ?c2 rdf:type 'Classe'. } ) assegnato GROUP BY (assegnato.c1) HAVING COUNT(*) > 1 )) /* Vincolo epistemico 3: i valori per eta non possono essere minori di 0 o maggiori di 5 */ EQLC(VERIFY not exists ( SELECT valore FROM sparqltable ( SELECT ?valore WHERE { ?x :eta ?valore. } ) valori_per_eta WHERE valore < 0 OR valore > 5 )) /* Vincolo epistemico 4: i valori per anzianita non possono essere minori o uguali a 0 */ EQLC(VERIFY not exists ( SELECT valore FROM sparqltable ( SELECT ?valore WHERE { ?x :anzianita ?valore. } ) valori_per_anzianita WHERE valore <= 0 ))