![](/img/trans.png)
[英]How to change request type from GET to POST while using VIRTUOSO sparql service
[英]How to get the prefix and namespace list from Virtuoso, using Sesame
如何在Virtuoso中獲取詞匯表(或Graph)的前綴和名稱空間列表,就像我們在Sesame中一樣:
在Sesame中,我們能夠使用RepositoryConnection
對象檢索詞匯表(存儲庫)的前綴和名稱空間列表,
RepositoryResult<Namespace> nameSpaces = connection.getNamespaces();
但是將詞匯表上傳到Virtuoso時,如何獲得相同的詞匯表。
VirtGraph
提供默認的前綴和名稱空間列表,但不提供上傳詞匯表中的前綴和名稱空間列表。
您最初提出的問題的措詞表明您可能認為“詞匯”,“圖”和“存儲庫”都是同義詞。 他們不是! “存儲庫”(也稱為數據存儲)可以容納一個或多個“圖”,其中一個或多個可能包含“詞匯表”(或更常見的是在RDF中使用“本體論”),它們描述了用於描述實體的某些類的術語,帶有或不帶有“實例數據”(有時稱為“記錄”,是這些類的某些實際實例的實際描述)。
也就是說@prefix
-Turtle,RDF-N3和類似文件中的PREFIX
(或@prefix
)語句實際上不是數據的一部分; 它們是序列化的一部分。 因此,它們不會自動作為Virtuoso數據存儲區中的前綴或名稱空間保留。
Virtuoso Conductor提供了一個用於定義名稱空間的部分( http:// {virtuoso-host-fqdn}:{port} / conductor / → 鏈接數據 → 命名空間 )。 我們通常建議通過該接口進行操作,但是專家也可以直接使用相關的SQL表DB.DBA.SYS_XML_PERSISTENT_NS_DECL
。 當Virtuoso以支持CURIE (a / k / a緊湊URI)的格式生成序列化輸出時,以及當Virtuoso在SPARQL查詢和其他地方解釋CURIE時,將使用此處定義的命名空間。
您可以通過內置頁面http:// {virtuoso-host-fqdn}:{port} / sparql?help = nsdecl來查看當前定義的名稱空間,這可以在DBpedia上看到 ,也可以通過任何SQL連接(iSQL ,ODBC,JDBC等)-
SELECT NS_PREFIX,
NS_URL
FROM DB.DBA.SYS_XML_PERSISTENT_NS_DECL
ORDER BY LOWER(NS_PREFIX) ;
您還可以使用Sesame(現在為RDF4J)方法來獲取這些方法,如本摘自我們提供的文檔和示例代碼中的片段所示:
// test getNamespace
Namespace testns = null;
RepositoryResult<Namespace> namespaces = null;
boolean hasNamespaces = false;
try {
namespaces = con.getNamespaces();
hasNamespaces = namespaces.hasNext();
while (namespaces.hasNext()) {
Namespace ns = namespaces.next();
// LOG("Namespace found: (" + ns.getName() + " " + ns.getPrefix() + ")");
testns = ns;
}
}
catch (Exception e) {
log("Error[" + e + "]");
e.printStackTrace();
ok = false;
}
我們的提供程序還具有用於刪除和更新注冊名稱空間的方法,該方法在VirtuosoRepositoryConnection
類中實現,如每個提供程序的API文檔中所討論的( RDF4J , Sesame 4 , Sesame 2 )。
(聲明: OpenLink Software生產Virtuoso並雇用了我。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.