Запрос нескольких моделей в одном наборе данных в TDB Jena

У меня есть онтология (скажем, dgo.owl) и другой файл, содержащий лиц для той же онтологии, хранящихся в формате rdf. Я сохранил оба файла (онтологии и экземпляры / отдельный файл) в TDB под разными именованными моделями (скажем, dgo_ont и homedata).

Теперь я хочу запустить разные запросы SPARQL для комбинации этих созданных моделей. Таким образом, вопрос заключается в том, нужно ли мне создавать еще одну модель в TDB, которая будет содержать тройки существующих двух названных моделей, или в Йене существует такой механизм, что мне не нужно объединять две существующие именованные модели, и все же я получу результаты. До сих пор я пытался с помощью следующего кода:

1 static Dataset dataset;
2 static Model model;
3 public static void main(String[] args)
4 {
5   dataset = TDBFactory.createDataset("TDB_database/");
6   dataset.begin(ReadWrite.READ);
7   try{
8 model=dataset.getNamedModel("dgo_ont").add(dataset.getNamedModel("homedata"));
9   String qr=   SELECT *  Where    { ?s ?p ?o}; //for illustration
10    Query qy = QueryFactory.create(qr);
11    QueryExecution qe = QueryExecutionFactory.create(qy,model);
12    ResultSet rs= qe.execSelect();
13    ResultSetFormatter.out(System.out, rs, qy) ;
14    qe.close();
15    }
16   finally{
17      model.close();
18      dataset.end();       
19 }

Результат, полученный при запуске этой программы:

Exception in thread "main" java.lang.NullPointerException
    at ac.iiitd.sparql.SparqlQuery.main(SparqlQuery.java:56)

В основной программе строка № 56 соответствует строке № 17 приведенного выше сценария. Но я подозреваю, что строка № 8 является основной причиной. Это потому, что всякий раз, когда я меняю эту строку на код ниже, я использовал для получения желаемого результата.

         model=dataset.getNamedModel("dgo_ont");
               or
         model=dataset.getNamedModel("homedata");

Таким образом, вся проблема заключается в том, как запросить комбинацию именованных моделей в данном наборе данных.

1 ответ

Решение

Вы можете сделать граф по умолчанию объединением названных графов:

https://jena.apache.org/documentation/tdb/datasets.html

или подмножество графиков (вопросы эффективности в очень большом масштабе):

https://jena.apache.org/documentation/tdb/dynamic_datasets.html

Другие вопросы по тегам