On 13/10/11 14:01, Paolo Castagna wrote:
Hi Chris
Chris Clarke wrote:
I'm trying to load some data into named graphs in TDB and then query back with
Fuseki. Perhaps I am doing something ridiculously stupid here having never
worked with quads and named graphs before....
For my test case I have about 5 million quads I am trying to load into one
named graph, here is a sample of some:
<http://example.com/sections/FFF9AF7F-54DF-53A5-E2A1-E08F4F7C270F>
<http://www.w3.org/1999/02/22-rdf-syntax-ns#_8>
<http://example.com/items/6226E191-0A32-F348-8F38-AABDBC73EE83> <http://example.com/> .
<http://example.com/sections/FFF9AF7F-54DF-53A5-E2A1-E08F4F7C270F>
<http://www.w3.org/1999/02/22-rdf-syntax-ns#_9>
<http://example.com/items/0FBFA283-11EB-1A04-1F68-F8B36E03F932> <http://example.com/> .
<http://example.com/sections/FFF9AF7F-54DF-53A5-E2A1-E08F4F7C270F>
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
<http://purl.org/vocab/resourcelist/schema#Section> <http://example.com/> .
<http://example.com/sections/FFF9AF7F-54DF-53A5-E2A1-E08F4F7C270F>
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://example.com/> .
What I would expect is that each of these quads get loaded into a graph
named<http://example.com/>
Using tdbloader2, I successfully loaded these into a fresh TDB database
location.
Start Fuseki 0.2.1-snapshot using this manifest:
@prefix tdb:<http://jena.hpl.hp.com/2008/tdb#> .
@prefix rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:<http://www.w3.org/2000/01/rdf-schema#> .
@prefix ja:<http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix tdb:<http://jena.hpl.hp.com/2008/tdb#> .
[] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .
tdb:DatasetTDB rdfs:subClassOf ja:RDFDataset .
tdb:GraphTDB rdfs:subClassOf ja:Model .
<#dataset> rdf:type tdb:DatasetTDB ;
tdb:location "/tmp/DBQ-test" ;
.
I try and submit this test query via the Fueski web interface
(http://myfusekiserver:3030/sparql.jsp):
select count(?s)
from named<http://example.com/>
where {?s ?p ?o}
Fuseki says:
Error 400: Query may not include a dataset description (FROM/FROM NAMED)
We have recently seen Tim asking a similar question (with a similar error).
This is the relevant thread: http://markmail.org/message/igbs7uxlx5xtooyz
As a work around, you could use this as an alternative:
SELECT COUNT(?s)
{
GRAPH<http://example.com/
{
?s ?p ?o
}
}
Does this work for you?
It's not a workaround. That's how, in SPARQL, you access a named graph.
The email referred to above is about changing the dataset the query runs
over to a subset of the graphs in the store. See the TDB wiki about
dynamic datasets.
http://www.openjena.org/wiki/TDB/DynamicDatasets
Using GRAPH is better for access to a specific graph. Only if you want to
1/ Have a default graph that is the union of a set of other graphs
2/ restrict the visible named graphs
do you need FROM/FROM NAMED with TDB. It's a specialized use.
Fuseki currently does pass through the FROM/FROM NAMED.
Andy
Fuseki - version 0.2.1-SNAPSHOT (Date: 2011-09-08T16:38:26+0000)
Aside: I ran tdbstats on the location where I loaded the quads, I got the
results I would expect in the stats.opt file:
(stats
(meta
(timestamp
"2011-10-13T10:22:47.351+00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime>)
(run@ "2011/10/13 10:22:47 UTC")
(count 5669532))
(<http://purl.org/vocab/resourcelist/schema#created> 5037)
(<http://purl.org/vocab/resourcelist/schema#uri> 21071)
(<http://lists.talis.com/schema/appConfig#feedbackFunction> 1)
(<http://purl.org/dc/terms/created> 144982)
....
Thus I would assume my TDB dataset has the correct data in it... Perhaps my
manifest file is not correct?
I don't think that is the problem.
Paolo
Thanks,
Chris