= Fedora Resource Index = The Fedora Resource Index service is described in http://www.fedora-commons.org/confluence/display/FCR30/Resource+Index == iTQL == The resource index is queried by iTQL (interactive Tucana Query Language?), which is largely similar to SQL (Structured Query Language). A guide to iTQL can be found on http://docs.mulgara.org/itqlcommands/select.html This has a graphical user interface, which it very helpful to users, but not programmatically useful. The interface is described here: http://www.fedora-commons.org/confluence/display/FCR30/Resource+Index+Search We have prepared a number of useful iTQL queries, that can serve as examples. These can be tested on the doms testbed in http://localhost:8080/fedora/risearch Find all direct subclasses of doms:!ContentModel_File in the Base collection {{{ select $object from <#ri> where $object and $object }}} Find the ancestors of doms:!ContentModel_!AudioPreservationFile {{{ select $object from <#ri> where walk( $object and $subject $object ) }}} Find all objects that relate to doms:!ContentModel_DOMS via a series of extendsModel relations. {{{ select $subject from <#ri> where walk( $subject and $subject $obbject ); }}} Same as above, but with more expressive output, namely the relation-chain. {{{ select $subject $object from <#ri> where walk( $subject and $subject $object ); }}} Anylevel children of !ContentModel_DOMS in the base collection {{{ select $subject from <#ri> where walk( $subject and $subject $object ) and $subject }}} Any objects relating to Root collection through a series of "isPartOfCollection" relations. {{{ select $subject '' $object from <#ri> where walk( $subject and $subject $object ) }}} All Templates of content models in the base collection {{{ select $defbject from <#ri> where walk( $subject and $subject $object ) and $defbject $subject and $defbject }}} == Interacting with the Resource index == For programs, there are two interfaces. === REST interface === The first is the REST-based interface defined in http://www.fedora-commons.org/confluence/display/FCR30/Resource+Index+Search#ResourceIndexSearch-ApplicationInterface === Java interface === The second is the Fedora client, which has a method {{{getTuples()}}}. See http://www.fedora-commons.org/documentation/3.0/javadocs/index.html?fedora/client/FedoraClient.html. The method {{{getTuples()}}} has the following javadoc {{{ /** * Get tuples from the remote resource index. The map contains * String values for parameters that should be passed to the * service. Two parameters are required: 1) lang 2) query Two parameters to * the risearch service are implied: 1) type = tuples 2) format = sparql See * http://www.fedora.info/download/2.0/userdocs/server/webservices/risearch/#app.tuples */ }}} which is unfortunately outdated, but still largely correct. The method returns an {{{org.trippi.TupleIterator}}} which parses the sparql result. The javadoc for this can be found on http://trippi.sourceforge.net/api/org/trippi/TupleIterator.html, which is for 1.1.2 Note that the page is not updated either. The releaseses can be found in the svn, and has reached version 1.4. Fedora uses 1.3.2, which is unknown, but 1.3.1 can be checked out. Look at http://sourceforge.net/svn/?group_id=123675 to do this. The result consist of a list of maps. The iterator iterates through this list, returning maps. The iterator has a method, names(), giving the keys to each map. The values in the maps are of type Node, see http://jrdf.sourceforge.net/0.3.4/doc/javadoc/org/jrdf/graph/Node.html In practice each node will always be a Literal node or a URI reference Node or a Blank node, see the following * http://jrdf.sourceforge.net/0.3.4/doc/javadoc/org/jrdf/graph/Literal.html, * http://jrdf.sourceforge.net/0.3.4/doc/javadoc/org/jrdf/graph/URIReference.html, * http://jrdf.sourceforge.net/0.3.4/doc/javadoc/org/jrdf/graph/BlankNode.html