On 4/12/11 10:03 AM, Rob Vesse wrote:
Hi Glenn
Interjecting into your email thread re Danny's SPARQL puzzle in case
you hadn't seen my tweets to him today on this topic
On Tue, 12 Apr 2011 09:33:05 -0400, glenn mcdonald <[email protected]>
wrote:
Which is what I was talking about in Boundedness: does the data
have the properties you need to extract the subset you want. E.g.,
Danny Ayers yesterday was trying to make a SPARQL query for
Wordnet that found the planets in the solar system that aren't
named after Roman gods. But neither he nor I could find any way in
the data to distinguish actual planets in the list of solar
bodies, so we couldn't quite make it right. That was a data
problem, not a tool problem. But the difficulty of figuring this
out, /using/ the tools, was a tool problem.
Here is a query that answers Danny's question (also online at
http://pastebin.com/8juVLmCT). You'll need a SPARQL 1.1 engine to run
this, if you don't have a local one to hand (or it doesn't support all
the features I've used in the query since some are only in the editors
drafts currently) then you can run this online at
http://www.dotnetrdf.org/demos/leviathan/
AFAIK this should also run under Jena's ARQ (you may need the latest
snapshot) and should be runnable on sparql.org except that the site
appears to be down at the moment
The query is a tad clunky because the RKB Explorer endpoints are
SPARQL 1.0 only so has to be split into several sections because the
local SPARQL engine has to do the MINUS bit. Once it has done the
Wordnet bit it constructs a DBPedia Resource URI and then uses an
EXISTS filter over a SERVICE call to DBPedia to ensure that the
resource is a Planet
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX wn: <http://www.w3.org/2006/03/wn/wn20/schema/>
SELECT DISTINCT ?label WHERE
{
SERVICE <http://wordnet.rkbexplorer.com/sparql/>
{
?s1 wn:memberMeronymOf
<http://wordnet.rkbexplorer.com/id/synset-solar_system-noun-1> .
?s1 rdfs:label ?label.
}
MINUS
{
SERVICE <http://wordnet.rkbexplorer.com/sparql/>
{
?s2 wn:hyponymOf
<http://wordnet.rkbexplorer.com/id/synset-Roman_deity-noun-1> .
?s2 rdfs:label ?label.
}
}
BIND(URI(CONCAT("http://dbpedia.org/resource/", ?label)) AS ?dbpResource)
FILTER(EXISTS
{
SERVICE <http://dbpedia.org/sparql>
{
?dbpResource a <http://dbpedia.org/ontology/Planet> .
}
})
}
Regards,
Rob Vesse
--
PhD Student
IAM Group
Bay 20, Room 4027, Building 32
Electronics& Computer Science
University of Southampton
Rob,
Nice!
And you change that into a SPARQL construct query and you have a
linkeset that can be contributed back to DBpedia :-)
--
Regards,
Kingsley Idehen
President& CEO
OpenLink Software
Web: http://www.openlinksw.com
Weblog: http://www.openlinksw.com/blog/~kidehen
Twitter/Identi.ca: kidehen