Почему я не могу создать график с запросом на вставку набора данных Jena

Я использовал запрос на вставку SPARQL, например:

PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX ns: <http://example.org/ns#>

INSERT DATA
{
   GRAPH <http://example/test> { <http://example/book2>  ns:price  42 }
   GRAPH <http://example/test> { <http://example/book3>  ns:price  55 }
}

Когда я использую набор данных в TDB, этот запрос был успешным. Но когда я использую набор данных памяти, Jena выдает эту ошибку.

com.hp.hpl.jena.shared.JenaException: No such graph: http://example/test

Используя набор данных памяти, нельзя ли создать график с запросом на вставку? И почему?

P.S.

Я использовал v2.10.0. И я создал набор данных следующим образом:

Dataset dataset = DatasetFactory.create(other_dataset);

Поэтому я меняю версию Jena и использую 'DatasetFactory.createMem()'.

Работал без проблем.

Спасибо.


person Community    schedule 22.05.2013    source источник


Ответы (2)


Какая версия? В настоящее время v2.10.1 и несколько ранее набор данных в памяти автоматически добавляет новые графики, если вы не запросили фиксированный.

DatasetFactory.createMem() против DatasetFactory.createMemFixed().

person AndyS    schedule 23.05.2013
comment
Ага! Я думал, что это должно существовать сейчас. - person user205512; 23.05.2013

Набор данных памяти по умолчанию (как вы обнаружили) просто фиксированный набор моделей (графиков). Он не умеет создавать графики по требованию. (TDB делает - графики дешевы в магазинах квадроциклов)

Я не вижу подходящего набора данных в jena (хотя он вполне может быть там), но написать его несложно:

// This makes graphs on demand
DatasetGraphFactory.GraphMaker maker = new DatasetGraphFactory.GraphMaker() {
    public Graph create() {
        return new GraphMem();
    }
};

// Make a datasetgraph which creates graphs when required, and wrap it as an API dataset
Dataset onDemand = DatasetImpl.wrap(new DatasetGraphMaker(maker));
person user205512    schedule 22.05.2013
comment
Я решил проблему благодаря вам. И, спасибо, кто переработал вопрос. - person ; 23.05.2013
comment
Без проблем. Я проверю, существует ли он уже в Йене. кашель нажмите принять ответ кашель - person user205512; 23.05.2013