在生物门户网站上使用SPARQL查询图的问题

时间:2019-06-22 12:29:33

标签: sparql

我正在查询Bioportal endpoint上的本体。本体(NIF)作为图形存储,因此我按照端点指示将其放在FROM子句中。

SELECT DISTINCT ?p
FROM <http://bioportal.bioontology.org/ontologies/NIF>
WHERE{ 
   ?p a rdf:Property
}
limit 100

但是,如下所示,结果又回来了,几乎没有显示与NIF相关的属性,而向其他称为SKOS(简单知识组织系统)的本体提供了其他属性。 enter image description here

在Bioportal文档中,据说将某些属性映射到SKOS属性,所以我认为结果可能不错。

但是,我必须测试是否查询了正确的图形。因此,我使用下面的代码来计算节点数,因为我知道NIF大约有360万个三元组!

SELECT (count (*) as ?nodes)
FROM <http://bioportal.bioontology.org/ontologies/NIF>
WHERE{ 
   ?s ?p ?o
}

这导致有和没有FROM子句的7984个节点!因此,我猜我应该错误地使用“计数”!

因此,我想知道如何确保只查询NIF本体。另外,如何计算节点数?

谢谢:)

1 个答案:

答案 0 :(得分:0)

尝试使用SERVICE关键字。

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT (count (*) as ?nodes)
WHERE
{ 
   SERVICE <http://bioportal.bioontology.org/ontologies/NIF>
   {
      ?s ?p ?o
   }
}

如果失败,则可能是您连接的服务不正确或已启动。 请尝试以下连接到DBpedia的示例:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT (count (*) as ?nodes)
WHERE
{ 
   SERVICE <http://DBpedia.org/sparql>
   {
      ?s ?p ?o
   }
}

顺便说一句,我无法访问URL http://bioportal.bioontology.org/ontologies/NIF。似乎不可用或已关闭。