Sasquatch - A DSL for the Talis Platform

Sasquatch makes it easy to add/delete/replace resources and triples on the Talis Platform using RDF.rb.

Example:

store = Sasquatch::Store.new(storename, {:username=>u, :password=>p}) # authentication is optional

resource = store.describe("http://example.org/1")
=> #<RDF::Graph:0x81467e78(<>)>

resources = store.describe_multi(['http://example.org/1', 'http://example.org/2'])
=> #<RDF::Graph:0x8100fd58(<>)>

store.delete_uri('http://example.org/1')

=> true

store.delete_uris(['http://example.org/2', 'http://example.org/3'])

=> true

Because ChangeSets are somewhat cumbersome, there are methods to replace triples or resources wholesale:

store.replace(resources) # where 'resources' is an RDF::Graph, array of RDF::Statements or RDF::RDFObjects::Resource

This will replace all of the subjects with what is sent.  Pass a boolean true to make it a versioned changeset.

There is also:

store.replace_triple(old_triple, new_triple)

where old_triple and new_triple are RDF::Statements

and

store.replace_triples

which takes a Hash where the keys are the old triples and the values are the new triples.

search = store.search("italy")
=> [#<RDF::URI:0x80f92484(http://id.loc.gov/authorities/sh89006665#concept)>, #<RDF::URI:0x80f90df0(http://lcsubjects.org/subjects/sh89006665#concept)>, #<RDF::URI:0x80f9042c(http://id.loc.gov/authorities/sh2004008861#concept)>, #<RDF::URI:0x80f8f5e0(http://id.loc.gov/authorities/sh2006002475#concept)>, #<RDF::URI:0x80f8e974(http://id.loc.gov/authorities/sh86005484#concept)>, #<RDF::URI:0x80f8d31c(http://lcsubjects.org/subjects/sh2004008861#concept)>, #<RDF::URI:0x80f8c548(http://lcsubjects.org/subjects/sh2006002475#concept)>, #<RDF::URI:0x80f8b29c(http://lcsubjects.org/subjects/sh86005484#concept)>, #<RDF::URI:0x80f8a48c(http://id.loc.gov/authorities/sh85069035#concept)>, #<RDF::URI:0x80f88f38(http://lcsubjects.org/subjects/sh85069035#concept)>]

#search returns a Sasquatch::SearchResult, which is sort of a glorified array.

To get the next page of search results, use SearchResult#next, to get the previous, use SearchResult#previous

You can access the search result graph at SearchResult#graph

Because it is really an array of URIs, you can chain it into other Store methods:

store.delete_uris(store.search('italy'))

=> true

etc.