簡體   English   中英

如何使用Sesame從Virtuoso獲取前綴和名稱空間列表

[英]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文檔中所討論的( RDF4JSesame 4Sesame 2 )。

(聲明: OpenLink Software生產Virtuoso並雇用了我。)

暫無
暫無

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

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