So, what is it actually good for?
Mid-term-ish, I'm dreaming of an alternative to increasingly non-RDFy specs such as RIF and OWL2 (there is definitely some need for them, they just don't seem to really work for me and my Web stuff). Things like crawling, smushing, or custom inference tasks based on wild mixtures of RDFS, OWL, and SKOS should be doable with SPARQLScript.Simple agents are another use case, as SPARQLScript simplifies task federation across multiple endpoints and RDF sources.
What's working already today is the creation of simple mashups and widgets. Below is a script that integrates status notices from my twitter and identi.ca feeds, and then creates an HTML "lifestream" snippet. The (live!) result is embedded at the bottom of this post.
# global prefix declarations PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX rss: <http://purl.org/rss/1.0/> # the target store ENDPOINT <http://arc.semsol.org/demos/endpoint/> # refresh feeds every 30 minutes $up2date = ASK FROM <script-infos> WHERE { <script-infos> dc:date ?date . FILTER (?date > "${NOW-30min}") } IF (!$up2date) { # load feeds LOAD <http://twitter.com/statuses/user_timeline/9516642.rss> LOAD <http://identi.ca/bengee/rss> # remember the update time INSERT INTO <script-infos> { <script-infos> dc:date "${NOW}" } } # retrieve items $items = SELECT * WHERE { ?item a rss:item ; rss:title ?title ; dc:date ?date . } ORDER BY DESC(?date) LIMIT 8; # output template """<h4>My online lifestream:</h4> <ul>""" FOR ($item in $items) { """<li><a href="${item.item}">${item.title}</a></li>""" } "</ul>"
(S)mashups here we come :)
Comments and Trackbacks