从图形数据库

时间:2016-09-13 15:29:46

标签: namespaces sparql prefix

由于我的图形数据存储区中有很多具有不同命名空间和前缀的本体,并且这些命名空间随着时间的推移而更改或更新,我想从给定的存储库中检索所有使用的命名空间及其前缀,以便创建前缀 - 我自动查询的一部分。

典型的查询可能是:

PREFIX dc: <http://purl.org/dc/elements/1.1/> 
PREFIX app: <uri....> 
PREFIX geo: <uri....> 
PREFIX org: <uri....> 
PREFIX owl: <http://www.w3.org/2002/07/owl#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX xml: <http://www.w3.org/XML/1998/namespace> 
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
PREFIX meta: <uri....> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX person: <uri....> 
PREFIX dcterms: <http://purl.org/dc/terms/> 
PREFIX incident: <uri....> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/>

SELECT ?something
WHERE {...}

我想摆脱这个长前缀列表,并在另一个本体中管理它,或者找到另一种方法来检索每个查询的所有现有前缀及其URI。

1 个答案:

答案 0 :(得分:2)

简短而正式的答案:前缀不是RDF图的一部分,而是一些序列化语言的语法糖,使其更紧凑。可读。一些三元组商店管理前缀,但这实际上取决于三重商店。

我通常做的事情(通过使用一些Java + Jena&#34; magic&#34;):

  1. 对于SPARQL查询中的每个URI u
  2. n中提取namspace u并从prefix.cc查找服务获取其最常用的前缀p
  3. 将前缀映射p -> n添加到查询
  4. 打印查询
  5. 希望这有帮助。