tbloader vs SPARQL INSERT - Почему отличается поведение с именованными графами?
При подключении инструментов командной строки ARQ, TDB и Named Graphs наблюдается странное поведение. При импорте данных через tdbloader в именованный граф их нельзя запросить с помощью предложения GRAPH в запросе SPARQL SELECT. Однако этот запрос возможен при вставке данных в один и тот же график с помощью SPARQL INSERT.
У меня есть следующий файл описания ассемблераtdb.ttl:
@prefix rdfs: .
@prefix rdf: .
@prefix ja: .
@prefix tdb: .
[] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .
tdb:DatasetTDB rdfs:subClassOf ja:RDFDataset .
tdb:GraphTDB rdfs:subClassOf ja:Model .
[] rdf:type tdb:DatasetTDB ;
tdb:location "DB" ;
.
В файле есть набор данныхdata.ttl:
<a> .
</a>
tdbloader --desc tdb.ttl --graph data data.ttl
update --desc tdb.ttl "INSERT DATA {GRAPH { .}}"
Теперь данные могут быть запрошены с помощью SPARQL через:
$arq --desc tdb.ttl "SELECT * WHERE{ GRAPH ?g {?s ?p ?o.}}" ---------------------------- | s | p | o | g | ============================ |
<a> | | | | | | | | | ---------------------------- </a>
Все кажется идеальным. Но теперь я хочу запросить только этот конкретный по имени графданные:
$ arq --desc tdb.ttl "SELECT * WHERE{ GRAPH {?s ?p ?o.}}"
-------------------
| s | p | o |
===================
| | | |
-------------------