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>"
My online lifestream:
- bengee: RT @patrickgmj: Finalist in Mozilla JetPack for Learning Design Challenge #Rubrick is powered by #ARC http://bit.ly/bG8uLn // congrats! :)
- bengee: RT @patrickgmj: Finalist in Mozilla JetPack for Learning Design Challenge #Rubrick is powered by #ARC http://bit.ly/bG8uLn // congrats! :)
- bengee: @garethj the query infos are in the trigger's $this->a['query_infos']. The calling store is $this->caller. #arc2
- bengee: @garethj the query infos are in the trigger's $this->a['query_infos']. The calling store is $this->caller. #arc2
- bengee: @fanhubz #b00l9zs3 featured recipe: http://bit.ly/bpYbVj
- bengee: If you get #301 messages from the #twitter #search #api: you can't connect to an explicit port 80 any more..
- bengee: @fanhubz #drwho is about http://en.wikipedia.org/wiki/Extraterrestrial_life
- bengee: @crunchbase first (tiny) service of new semantic #crunchbase: an Atom feed w/ recently accepted revisions. (http://cb.semsol.org/)
(S)mashups here we come :)


Comments and Trackbacks