如何在Virtuoso中获取词汇表(或图表)的前缀和名称空间列表,就像我们在Sesame中一样:
在Sesame中,我们可以使用RepositoryConnection
对象检索词汇表(存储库)的前缀和命名空间列表,
RepositoryResult<Namespace> nameSpaces = connection.getNamespaces();
但是当我们将词汇表上传到Virtuoso时,我们如何得到相同的词汇表。
VirtGraph
提供默认前缀和名称空间列表,但不会从上传的词汇表中提供前缀和名称空间列表。
答案 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文档中所述(RDF4J,Sesame 4,{ {3}})。
(ObDisclaimer:Sesame 2生成OpenLink Software,雇用我。)