簡體   English   中英

如何使用 Apache Jena Java API 創建 Fuseki SPARQL 服務器?

[英]How do you create a Fuseki SPARQL server using the Apache Jena Java API?

我正在嘗試在我的機器上創建一個 Fuseki SPARQL 服務器。 Jena 網站上的文檔描述了如何從命令行創建這樣的服務器,此處為: http://jena.apache.org/documentation/serving_data/ 我正在尋找一種僅使用 Jena Java API 來創建和初始化此類服務器的方法。 我查看了 Jena API,但在確定如何進行方面沒有任何進展。 有沒有人這樣做過?

如果你使用

<dependency>
  <groupId>org.apache.jena</groupId>
  <artifactId>apache-jena-libs</artifactId>
  <type>pom</type>
  <version>2.11.2-SNAPSHOT</version>
</dependency>

<dependency>
  <groupId>org.apache.jena</groupId>
  <artifactId>jena-fuseki</artifactId>
  <version>1.0.2-SNAPSHOT</version>
</dependency>

您可以啟動嵌入式服務器。

Dataset dataset = TDBFactory.createDataset(MagicStrings.TDBLocation);
dataset.begin(ReadWrite.WRITE);
Model tdb = dataset.getDefaultModel();
EmbeddedFusekiServer server = EmbeddedFusekiServer.
create(3030,getDataset().asDatasetGraph(), "comp");

是的,這是可能的,但這不是 Fuseki 的設計方式,因此您需要自擔風險。

您需要通過 maven 將 Fuseki 作為依賴項引入,如下所示:

<dependency>
  <groupId>org.apache.jena</groupId>
  <artifactId>jena-fuseki</artifactId>
  <version>0.2.7</version>
</dependency>

然后,您可以使用SPARQLServer class 創建服務器並調用start()來實際運行服務器,完成后調用stop() (這位於org.apache.jena.fuseki.server包中)

重要的是要注意,如果您這樣做,則服務器嵌入在您啟動它的 JVM 中,當 JVM 關閉時,服務器將關閉。 這可能是您的意圖,但可能不是。

順便說一句,您的問題不清楚您為什么要這樣做? 如果您進一步解釋您的目標,可能有其他方法可以在不嵌入 Fuseki 的情況下實現您的目標

這里的答案已經很老了,我擔心他們會在更新版本的耶拿 API 中產生結果。

//Creating a persistent triple store (Jena TDB)
String directory = "C:\\Users\\..."; // Directory where you want to create the triplestore
Dataset dataset = TDBFactory.createDataset(directory);

//Loading an ontology stored on the disk
String ontPath = "C:\\Users... ...product.owl"; //Directory of your RDF/OWL file
Model KB = RDFDataMgr.loadModel(ontPath);
KB.write(System.out, "RDF/XML"); // (optional) checking what you have loaded in the console
dataset.addNamedModel("https://joedavid91.github.io/ontologies/camo/product",KB);

// Starting the fuseki server
FusekiServer fusekiServer = FusekiServer.create()
            .port(3001)
            .add("/ds", dataset, true)
            .build();

fusekiServer.start();

現在讓我們嘗試使用 REST 客戶端(例如 POSTMAN)獲取一些結果,看看這是否有效。 你可以看到確實如此。 確保您遵循 REST 請求的SPARQL 協議

Jena Fuseki 通過 POSTMAN 獲得的結果

暫無
暫無

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

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