如何使用Sesame从Virtuoso获取前缀和命名空间列表

时间:2018-02-05 12:47:19

标签: virtuoso sesame

如何在Virtuoso中获取词汇表(或图表)的前缀和名称空间列表,就像我们在Sesame中一样:

在Sesame中,我们可以使用RepositoryConnection对象检索词汇表(存储库)的前缀和命名空间列表,

RepositoryResult<Namespace> nameSpaces = connection.getNamespaces();

但是当我们将词汇表上传到Virtuoso时,我们如何得到相同的词汇表。

VirtGraph提供默认前缀和名称空间列表,但不会从上传的词汇表中提供前缀和名称空间列表。

1 个答案:

答案 0 :(得分:2)

您最初的问题的措辞表明您可能认为“词汇”,“图表”和“存储库”都是同义词。他们不是! “存储库”(也称为数据存储)可以包含一个或多个“图形”,其中一个或多个可能包含“词汇表”(或者更常见的是RDF用语,“本体”),它描述了用于描述某些实体类的术语,有或没有“实例数据”(有时称为“记录”,它们是这些类的一些实际实例的实际描述)。

那说 - RDF-Turtle,RDF-N3和类似文件中的PREFIX(或@prefix)语句实际上并不是数据的一部分;它们是序列化的一部分。因此,它们不会自动保存为Virtuoso数据存储中的前缀或名称空间。

Virtuoso Conductor提供了一个用于定义命名空间的部分(http://{virtuoso-host-fqdn}:{port}/conductor/关联数据命名空间)。我们通常建议使用该界面,但专家也可以直接使用相关的SQL表DB.DBA.SYS_XML_PERSISTENT_NS_DECL。当Virtuoso以支持CURIEs(a / k / a Compact URI)的格式生成序列化输出时,以及当Virtuoso在SPARQL查询和其他地方解释CURIE时,将使用此处定义的命名空间。

您可以通过内置页面http://{virtuoso-host-fqdn}:{port}/sparql?help=nsdecl(可能是seen on DBpedia)或通过任何SQL连接(iSQL,ODBC,JDBC等)查看当前定义的命名空间 - < / p>

  SELECT  NS_PREFIX, 
          NS_URL 
    FROM  DB.DBA.SYS_XML_PERSISTENT_NS_DECL
ORDER BY  LOWER(NS_PREFIX) ;

你也可以使用Sesame(现在的RDF4J)方法来获取这些方法,就像documentation and sample code we provide -

中的这个片段一样
// 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 4,{ {3}})。

(ObDisclaimer:Sesame 2生成OpenLink Software,雇用我。)