URI在SPARQL查询中起作用,但名称空间不起作用

时间:2019-07-01 05:33:46

标签: namespaces uri sparql

我正在查询NIFSTD本体。我已将其加载到本地三元存储/ sparql服务器Fuseki中。

在查询“海马”的同义词时,带有命名空间的以下代码不会返回任何答案:

prefix nifstdr: <http://uri.neuinfo.org/nif/nifstd/readable>
prefix rdf: <...>
.
.   
SELECT distinct ?s ?synonyms
    {?s rdfs:label "Hippocampus" ;
        nifstd:synonym ?synonyms .}

使用URI可以正常工作并返回正确答案:

prefix rdfs: ...    
prefix rdf: ...

SELECT distinct ?s ?synonyms
    {?s rdfs:label "Hippocampus" ;
        <http://uri.neuinfo.org/nif/nifstd/readable/synonym> ?synonyms .}

另一个与此类似(但相反)的实例是当我在本地图上查询以下概念的ID时:

PREFIX oboInOwl: <http://www.geneontology.org/formats/oboInOwl#>
select distinct ?id
where{
  graph <http://localhost:3030/myDataset/data/nif>{
  ?s oboInOwl:id ?id.  
  }
}
limit 100

此代码返回结果。

但是,在下面的代码中使用URI,根本没有返回结果!

select distinct ?id
where{
  graph <http://localhost:3030/myDataset/data/nif>{
  ?s <http://www.geneontology.org/formats/oboInOwl/id> ?id.  
  }
}
limit 100

所以这次是另一回事了!

我认为这可能是因为本地三元存储在缓存中有一个以前用于此数据集的URI,所以我给它起了一个不同的名称,但问题仍然存在。

为什么会这样?

1 个答案:

答案 0 :(得分:1)

在更新的问题中,

查询中的完整URI为http://www.geneontology.org/formats/oboInOwl/id 但是oboInOwl:id扩展为其他URI:http://www.geneontology.org/formats/oboInOwl#id

区别是#-/

nifstd:synonym变成http://uri.neuinfo.org/nif/nifstd/readablesynomyn而不是.../readable/synomyn