Q & A – Callimachus: Semantic Web Apps Made Easy

Q&A Session for “Callimachus: Semantic Web Apps Made Easy”

Q: Was Callimachus arguing against a “single inheritance” hierarchy or arguing against a universal “Thing” which is the superclass of all things?

A: Callimachus, the Greek poet, could easily justify placing many of his scrolls (of short poems) in multiple bins. He argued that some things have multiple categories (or types) and could not be arranged in single hierarchy.

Q: Can I use html 5 with this?

A: Callimachus serves the constructed pages using an HTML serialization with no doctype and a content type of text/html. Because of the missing doctype and HTML serialization Callimachus cannot serve standard HTML5 documents.

Q: Is Callimachus able to draw on the ontology, for example, to create a pull-down menu based on an enumerated class?

A: Callimachus will read the ontology into the RDF store for querying when placed in the webapps directory. However, Callimachus cannot query rdf:List (used for OWL enumerations) for drop downs. If however, these enumerations have a unique rdf:type relationship, they they can be populated in a drop down.

Q: I am wondering if there is a way for the form which creates a new resource to accept dynamic content from the user instead of having predefined entities in the xml file? Also, where are the new resources stored?

A: Using client side JavaScript, the RDF in the create/copy page can take on many dynamic forms. However, only triples that are about the target resource and match a basic graph pattern in the RDFa template can be created using the copy operation. New resources are stored in the embedded RDF store by default.

Q: Is it possible to have essentially a wild card for Delete you don’t have to specify all the properties?

A: Not in the current version of Callimachus, but this may change in subsequent versions.

Q: Any thoughts of an IDS sort of interface for creating Callimachus templates rather than crafting raw XML? (such as pick a property from a dropdown and enter the specific parameter)

A: There is no UI builder in the current version of Callimachus, although such a feature is desirable in future versions.

Q: So, my understanding is that each of the templates has to be hand-written, is this correct?

A: The templates must either by hand written or generated from an XSLT. You can, for example, use XSLT to generate RDFa templates from a particular RDF/XML encoded ontology.

Q: Is it possible to share code between the templates? for example to have a footer or header on every page?

A: Callimachus provides a common header, footer, and navigation menu for templates that use the XSL stylesheet “/layout/template.xsl”. This is a fairly simple XSLT file that can be found in the layout.war file. RDFa templates are free to use alternate XSLT files to include common sections. The XSLT is applied to the RDFa template before the RDFa is parsed.

Q: I thought a strength of RDF was to be able to add schema and data at runtime. Does the templating in Callimachus force the schema to become static? (i.e. if schema changes, Callimachus can’t take advantage of it)

A: The schema is defined in the HTML. By changing the HTML Callimachus will start to use the new version right away.

Q: How complex can the RDFa schemas get and still be useable by the simple(?) query language that operates over them?

A: The RDFa template syntax is not as expressive as SPARQL. There is no way to express the type of join, there are no filters, or limit. For complex queries, SPARQL is still better. Callimachus can serve named sparql queries that are defined in a Turtle file within the webapps directory. Open the layout.war and take a look at the menu.ttl for a simple example and lookup.ttl for an example using SPARQL+XSLT.

Q: What size RDF files can Callimachus handle?

A: On startup Callimachus will crawl the webapps directory and upload any .rdf and .ttl files into the RDF store. Too many or too large .rdf and .ttl files can slow this down. Instead, bulk RDF can be loaded into Callimachus using an authenticated PUT request. See the page on RDF Import for details.

Q: What exactly are the .war files?

A: The .war files are a compressed (zipped) directory with the .zip extension renamed to .war. These files should not be confused with J2EE webapps.

Q: Is Callimachus a runtime environment, a development environment, or both?

A: Callimachus watches the webapps directory and “uploads” any changes to an internal data store. Callimachus will queue and lock the data store to allow uninterrupted service while changes are being made to the webapps directory. Watch the log files for parse errors that occur during the upload.

Q: Can we use this with Java?

A: Callimachus uses OpenRDF AliBaba for RDF-object mapping and object server. These libraries provide an interface for triggers written in Java and ways to intercept HTTP requests. Post any further questions on this to the discussion group.

Q: Can Callimachus be used to create applications outside of the Callimachus container (i.e. Spring Framework)? If not out of the box, does it have an API which can be used to accomplish this?

A: Callimachus does not publish an API for external use, although that could change in the future.

Q: How big can the repository be?

A: This of course depends on the hardware. Using commodity hardware with default configuration things may slow down at 100 million triples.

Q: Where is the repository being queried specified?

A: Callimachus uses an embedded RDF store by default that is specified in the Java resource META-INF/templates/callimachus-config.ttl.

Q: Is there any inference engine available, other than what is available through SPARQL?

A: Callimachus uses the Sesame API and can use any inference engine or store available through a Sesame interface.

Q: What is the SPARQL edit /submission tool you’re using?

A: The browser plugin used in the demo is available in Firefox and Chrome as “HTTP Response Browser”.