Research Article

Semantic Consistency Checking in Building Ontology from Heterogeneous Sources

Algorithm 2

--  SMV  program  for  consistency  checking
MODULE  main
VAR
  state:{n1,n2,n3,n4,n5,n6,n7,n8,teaches,inv_teaches,attends,
   inv_attends,age,inv_age,name,inv_name,cName,inv_cName,tao};
  label:{Teacher,Course,Student,Database,Smith,37,40};
ASSIGN
  init(state)  :=  n1;
  next(state)  :=  case
   state  =  n1  ∣  state  =  n2  :  {teaches,age};
   state  =  teaches  :  n3;
   state  =  age  :  {n5,n6};
   state  =  n3:{inv_attends,inv_teaches,cName};
   state  =  inv_attends  :  n4;
   state  =  inv_teaches  :  {n1,n2};
   state  =  cName  :  n7;
   state  =  n4  :  {attends,name};
   state  =  attends  :  n3;
   state  =  name  :  n8;
   state  =  n5  :  {inv_age,tao};
   state  =  inv_age  :  {n1,n2};
   state  =  tao  :  {n5,n6,n7,n8};
   state  =  n6  :  {inv_age,tao};
   state  =  n7  :  {inv_cName,tao};
   state  =  inv_cName  :  n3;
   state  =  n8  :  {inv_name,tao};
   state  =  inv_name  :  n4;
   TRUE  :  state;
  esac;
DEFINE
  nl  :=  case
   state  =  n1  ∣  state  =  n2  :  Teacher;
   state  =  n3  :  Course;
   state  =  n4  :  Student;
   state  =  n5  :  37;
   state  =  n6  :  40;
   state  =  n7  :  Database;
   state  =  n8  :  Smith;
   TRUE  :  state;  
  esac;
--  concept  redundancy  checking
CTLSPEC  (nl=Teacher)  &  EX(state=age)  &  
     EX(state=teaches  &  EX(nl=Course))
--  relationship  inconsistency  checking
--  need  to  be  changed  to  init(state)  :=  n4;
CTLSPEC  (nl=Student)  &  EX(state=attends  &  EX(nl=Course))
--  attribute  inconsistency  checking
CTLSPEC  (nl=Teacher)  &  EX(state=age  &  EX(nl=40))
--  fact  inconsistency  checking
CTLSPEC  (nl=Teacher)  &  EX(state=age&EX(nl=37))  &  
     EX(state=teaches  &  EX(nl=Course  &  
     EX(state=cName  &  EX(nl=Database))))