library Ontology/Examples/Biblio logic OWL spec Biblio_OWL = Prefix: xsd: Ontology: DataProperty: impactFactor DataProperty: name DataProperty: title ObjectProperty: author ObjectProperty: hasJournal Class: Researcher SubClassOf: name some xsd:string ObjectProperty: hasArticle InverseOf: hasJournal Class: Article SubClassOf: author some owl:Thing, title some xsd:string, hasJournal some Journal Class: Journal SubClassOf: name some xsd:string, hasArticle some owl:Thing, impactFactor some xsd:integer end logic RelScheme spec Biblio_RS = Tables person(key id:pointer, name:string) author_of(person, paper:pointer) paper(key id:pointer,title:string,published_in:pointer) journal(key id:pointer,name:string,impact_factor:integer) Relationships author_of[person] -> person[id] one_to_many author_of[paper] -> paper[id] one_to_many paper[published_in] -> journal[id] one_to_many end logic CASL spec BiblioV = {Biblio_OWL with logic OWL -> CASL} and {Biblio_RS with logic RelScheme -> CASL} with pointer |-> Thing then sort string < DATA sort integer < DATA forall p, a, j:Thing; n:string; i:integer . person (p, n) => Researcher(p) /\ name(p, n) %(person_impl)% . author_of(p, a) => Researcher(p) /\ Article(a) /\ %(author_of_impl)% author(a,p) /\ exists j:Thing . (Journal(j) /\ hasArticle(j,a)) . paper(a, n, j) => Article(a) /\ title(a, n) /\ Journal(j) /\ hasJournal(a,j) %(paper_def)% . journal (j,n,i) => Journal(j) /\ name(j,n) /\ impactFactor(j,i) %(journal_def)% end