- Versa (query language)
Versa is a
RDF query language , used to query RDF data. Versa differs from most other RDF query languages, which are typically based onSQL or specializedXML vocabularies. Although the design of Versa was inspired byXPath , its compact, functional syntax also somewhat resembles Lisp.As of 2006 , the only Versa implementation is in the Python-language, open-source4Suite XML framework.History and status
Versa's origins can be traced to 2000, when professional XML consultancy Fourthought, Inc. began developing RIL, an open, XML-based
RDF Inference Language . RIL was implemented briefly in Fourthought's 4Suite Server product, which allowed for persistent storage and querying of an RDF model and associated XML document store.In October 2001, the query portion of RIL was spun off into a separate project named Versa, with the intent that after Versa stabilized, development would resume in order to establish RIL as a formal language for working Versa query results. RIL development never resumed, however; inference capabilities in 4Suite were easily handled by XSLT extensions and did not require a separate language.
Versa initially had limitations that required the language to be redesigned. The overhaul was performed in late 2001 and early 2002 by software engineers from
Sun Microsystems and Fourthought, in order to facilitate internalknowledge management applications at Sun and to drive applications that were in development for Fourthought's other clients. 4Suite's Versa library was used as the reference implementation, and a draft specification was published.Versa development slowed in 2002, although Sun and Fourthought continued to work together to develop Versa based applications through 2004. In mid-2005, Chimezie Ogbuji and Daniel Krech began planning to fold the capabilities of 4Suite's outdated RDF libraries (4RDF), including Versa support, into
RDFLib , which offers complementary features and would allow Versa to be used independently of 4Suite. This coincided with renewed interest in refining the Versa draft specification and publishing a "1.0" version.As of 2006, the development of Versa is being coordinated primarily by Chimezie and
Uche Ogbuji of Fourthought.yntax examples
Get the URIs of all known resources: all()
Get the URIs of all known instances of type
edu:Subject
: type(edu:Subject)Get the
rdfs:label
s of alledu:Subject
s having one or morerdfs:label
: type(edu:Subject) - rdfs:label -> *Get the URIs of all
edu:Subject
s having ardfs:label
matching"Russian language"
: type(edu:Subject) |- rdfs:label -> eq("Russian language")Get the URIs of all "super-
edu:Subject
s" (transitively) of theedu:Subject
identified by"http://en.wikipedia.org/wiki/Russian_language"
: traverse(@"http://en.wikipedia.org/wiki/Russian_language", @"http://example.com/education#subTopicOf", vtrav:forward, vtrav:transitive)External links
* [http://uche.ogbuji.net/tech/rdf/versa/ Versa home page]
* [http://www-128.ibm.com/developerworks/xml/library/x-think10/ IBM developerWorks: Thinking XML: Basic XML and RDF techniques for knowledge management, Part 6]
* [http://www.xml.com/lpt/a/2005/07/20/versa.html XML.com: Versa: Path-Based RDF Query Language]
* irc://irc.freenode.net/versa ; there exists a Versa "IRC bot" [http://copia.ogbuji.net/blog/2005-07-18/Emeka] , useful for learning, experimentation, and debugging
* [http://rdfstore.sourceforge.net/2002/06/24/rdf-query/ RDF query use cases, including query language samples]
Wikimedia Foundation. 2010.