The DIG Interface is a standardised XML interface to Description Logics systems developed by the DL Implementation Group (DIG).
This project provides:
There are currently two XML schemas for DIG:
http://dl.kr.org/dig/langhttp://dl.kr.org/dig/2003/02/langVersion 1.1 allows for multiple knowledge bases.
The DIG XMLBeans Java APIs are automatically derived from the DIG XML schemas using Apache Foundation's XMLBeans. They provide a very elegant and efficient way of parsing, creating, and manipulating XML documents.
Java API for communicating with DIG compliant reasoners, such as Racer and FaCT++. It relies on the DIG XMLBeans.
You can download from our SourceForge download site:
A DIG users mailing list is available: subscribe.
// Connect to a DIG HTTP reasoner, eg Racer, running on localhost:8080
HTTPReasoner racer = new HTTPReasoner(new URL("http://localhost:8080"));
// Wrap it in a TBox reasoner
TReasoner reasoner = new TReasoner(racer);
// Ask the reasoner to create a new knowledge base
URI kbURI = reasoner.newKB();
String kb = kbURI.toString();
//Parse a DIG ontology into a TellsDocument xmlbean.
File myDigOntology = new File("myDigOntology.xml");
TellsDocument tells = TellsDocument.Factory.parse(myDigOntology);
// Load the ontology into the knowledge base kb.
tells.getTells().setUri(kb);
ResponseDocument response = reasoner.tells(tells);
// check the response is valid against DIG schema
boolean isValid = response.validate();
// check the response is ok
boolean isOk = response.getResponse().isSetOk());
// Create an instance of the ConceptId xmlbean to be used to ask a query.
ConceptId top = ConceptId.Factory.newInstance();
// add the top concept to it
top.addNewTop();
// set its id to qTop
top.setId("qTop");
// retrieve the descendants of top
Set descendants = reasoner.descendantsNames(top, kbURI);
// retrieve the concepts equivalent to some(r,b)
ConceptId some = ConceptId.Factory.newInstance();
some.setId("qSome");
RoleConceptPair rcPair = some.addNewSome();
rcPair.addNewRatom().setName("r");
rcPair.addNewCatom().setName("b");
Set equivalents = reasoner.equivalentsNames(some, kbURI);
// retrieve the children of concept name "driver"
ConceptId driver = ConceptId.Factory.newInstance();
Named d = driver.addNewCatom();
driver.setId("qDri");
d.setName("driver");
Set equivalents = reasoner.childrenNames(driver, kbURI);
See tests in cvs for more examples.
S. Bechhofer, The DIG Description Logic Interface: DIG/1.1, Proceedings of DL2003 Workshop, Rome, June 2003.
I. Dickinson, Implementation experience with the DIG 1.1 specification, Tech report HPL-2004-85, Hewlett-Packard, May 2004.