簡體   English   中英

使用 Jena 使用自定義函數 SPARQL 查詢 GraphDB 的存儲庫

[英]Query to GraphDB's repository with custom functions SPARQL using Jena

我已經按照Property Function docs使用 Jena ARQ 實現了一些自定義函數 SPARQL。 這些函數使用模型處理本地數據集:

Model model = ModelFactory.createDefaultModel();

model.read(new FileInputStream("data/data.ttl"), null, "TTL");

Query query = QueryFactory.create(queryString) ; // the queryString contains a custom property function defined with Jena

try (QueryExecution qexec = QueryExecutionFactory.create(query, model)) {
           ...
          }

但是,我需要將這些屬性函數應用於對我的 Graphdb 存儲庫上的數據集的查詢,因此我嘗試使用 Jena 將程序連接到 GraphDB。

我試過在 Jena 中使用 GraphDB,但它似乎已經過時並且無法實現,因為 SailRepository.initialize(); 已棄用,並且不再存在 SesameDataset 來初始化我的模型。

import org.eclipse.rdf4j.repository.sail.SailRepository;
import org.eclipse.rdf4j.repository.RepositoryConnection;
import com.ontotext.jena.SesameDataset;

...
RepositoryConnection connection = repository.getConnection();

// finally, create the DatasetGraph instance
SesameDataset dataset = new SesameDataset(connection);

我也嘗試過 Jena 的 RDFConnection,但它不適用於我的自定義函數,因為沒有模型后端來應用查詢。

誰能告訴我在哪里可以找到要導入的 SesameDataset 或者是否有其他方法可以使用自定義函數查詢 GraphDB 的存儲庫?

通過使用 RDF4J 而非 Jena 與 GraphDB 進行通信,您可能會讓您的生活更輕松——這是 GraphDB 開發人員為此目的推薦的 Java API

您可以按照本教程在 RDF4J/GraphDB 中實現自定義 SPARQL 函數 - 總之,這是實現org.eclipse.rdf4j.query.algebra.evaluation.function.Function接口並確保您的實現在 GraphDB 的類路徑上的問題並注冊為 SPI 實現。

Jeen(rdf4j 的創建者)指出了如何創建自定義函數。

但是,正如 AndyS(Jena 的創建者)指出的那樣,您似乎需要魔術謂詞(自定義屬性函數)。 為此,我認為您需要創建一個插件並實現模式解釋,如下所述: http : //graphdb.ontotext.com/documentation/standard/plug-in-api.html#pattern-interpretation

大多數插件在https://github.com/Ontotext-AD 上都是開源的,所以你可以看到很多例子。 我確定https://github.com/Ontotext-AD/graphdb-geosparql-plugin使用魔術謂詞,例如

  • ?x geo:sfWithin ?y是一個謂詞,它檢查(或返回)所有?x?y
  • geof:sfWithin(?x,?y) (注意不同的命名空間)是一個檢查相同條件的函數,但必須使用綁定參數調用:它找不到滿足條件的特征。

查看此搜索,然后查看IRI GEO_SF_WITHIN ,使用GEO_SF_WITHIN搜索,您會找到 com/ontotext/trree/geosparql/GeoSparqlFunction.java 和 com/useekm/geosparql/algebra/PropertyToFunctionOptimizer.java

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM