|
TRI-DEDALO Triples, Deduction, Data and Logic |
Frequently Asked Questions
1. What is a deductive database?
A deductive database is a database that, besides its traditional part, i.e., the explicitly inserted tuples or facts, has a set of deductive rules that allows to infer new facts based on the explicitly stored facts.
2. What is RDF?
The Resource Description Framework (RDF) is a W3C standard for representing information about resources in the World Wide Web. More information can be found here.
3. What is TRI-DEDALO
TRI-DEDALO (Triples, Deduction, Data and Logic) is a deductive database that allows to query and update relational databases and RDF based knowledge sources. TRI-DEDALO is an evolution of the DEDALO Deductive Database System, created by Fabiane Bizinella Nardon during her work in the Intelligent Databases Group of the Federal University of Rio Grande do Sul. It adds the ability of querying RDF statements (or triples). TRI-DEDALO supports disjunction, negation, aggregate functions, ordering of the resulting tuples, fuzzy reasoning and updates of derived relations. TRI-DEDALO sentences are translated to SQL, so any relational database can be used to store the facts and the knowledge base.
4. How does a TRI-DEDALO query looks like?
The BNF of TRI-DEDALO can be found here.
A few sample of queries:
query(patient?x)
:- statement(subject?x,
predicate?<http://www.samplehospital.com.br#assignedDoctor>,
object?<mailto:joao@samplehospital.com.br>).
Note: "x" is a variable bound to a field ("subject"). This means that the resulting derived relation ("query") will contain all possible values for the field "subject" where the value of the field "predicate" is <http://www.samplehospital.com.br#assignedDoctor> and the value of the field "object" is <mailto:joao@samplehospital.com.br>. In TRI-DEDALO, all variables in the head of the rule/query must occur at least once in the body.
patientsWithCancer(patient?x)
:- statement(subject?x,
predicate?<http://www.samplehospital.com.br#diagnosis>,
object?<http://www.samplehospital.com.br#cancer>).
Note: If in the knowledge base there is an ontology stating that "lung cancer" is a subclass of "cancer", and if in the database there is a tuple stating that a particular patient was diagnosed with "lung cancer", TRI-DEDALO would return this particular patient, since it is capable of infer information from the ontologies loaded in it. Currently, TRI-DEDALO supports any DAML+OIL ontology.
patientsOlderThan18(patient?x) :- patients(name?x, age?y) , y > 18.
query(numberOfPatients?count(x))
:- statement(subject?x,
predicate?<http://www.samplehospital.com.br#assignedDoctor>,
object?<mailto:joao@samplehospital.com.br>).
query(name?y) :- stm(s?x,
p?<http://www.samplehospital.com.br#assignedDoctor>,
o?<mailto:joao@samplehospital.com.br>)
,
stm(s?x,
p?<http://www.samplehospital.com.br#name>, o?y),
not(patientsOlderThan18(patient?y)).
Note: in TRI-DEDALO, "stm" and "statement" are reserved words and synonymous. The same occurs with "subject" and "s", "predicate" and "p", and "object" and "o". Also, the subject, predicate and object in a statement can be implicit (for example, stm(x,y,z) means that the variable x is the subject, y is the predicate and z is object). Note also that the derived relation "patientsOlderThan18" can be used in the body of the rule as a traditional database relation.
bp(name?x, abp?(y+2*z)/3) :- patients(name?x, systolicbp?y, diastolicbp?z).
xmlns:rdf=<http://purl.org/rss/1.0/>.
xmlns:rdf=<http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
latestArticles(title?x, link?y) :- stm(item, rss:title, x), stm(item, rss:link,
y), stm(item, rdf:type, rss:item).
Note: TRI-DEDALO supports namespace declarations also, as can be seen in the first two lines.
ins patients(name?"Angela", age?20).
5. What is a typical TRI-DEDALO application?
TRI-DEDALO was created to solve complex queries and semantic interoperability among heterogeneous knowledge sources in healthcare. However, it is flexible enough to be used in any other domain. Typical web semantic applications could use TRI-DEDALO.
6. How is TRI-DEDALO implemented?
TRI-DEDALO was implemented in Java. It has a JDBC driver that intercepts TRI-DEDALO statements and transform them to SQL statements and then submit them to the underlying database.
7. How can I test TRI-DEDALO?
TRI-DEDALO will be available for download soon. It is going to be delivered with LGPL license.
9. Who did TRI-DEDALO?
TRI-DEDALO is the result of a PhD thesis done in the University of Sao Paulo by Fabiane Bizinella Nardon, under the advisory of Dr. Lincoln de Assis Moura Jr. The first version of the language parser was implemented by Pablo Jorge Madril.
10. Why TRI-DEDALO has this name?
The original software was called DEDALO, which is an abbreviation for DEduction,
DAta and LOgic. DEDALO also means labyrinth in Italian. When the original software
was expanded to support RDF triples, it became TRI-DEDALO, with the "TRI"
being an abbreviation for TRIple. Also, "tri" is a slang used in the
Rio Grande do Sul state, in the south of Brazil:
From the Babylon dictionary:
tri: 1.muito,extremamente. excelente, muito bom. A origem desse termo é
o tri-campeonato brasileiro de futebol conquistado pelo Internacional
no ano de 1979. Na época a torcida colorada costumava falar: "Estou
tri feliz."; "tri bom." e a clássica: "Tri legal".
Com o tempo, a expressão foi incorporada em definitivo ao vocabulário
da capital gaúcha.
(in english: tri: 1. excelent, very good. The origin of this term is from 1979,
when the Internacional
soccer team won for the third time the Brazilian soccer championship. In that
time, Internacional fans used to say "I'm tri-happy", "tri-good",
and the classic "tri-cool!". With the time, this expression was permanentely
incorporated to the vocabulary of the capital of Rio Grande do Sul)