Запрос нескольких моделей в одном наборе данных в 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