使用ABox和TBox图表进行SPARQL查询

时间:2014-05-28 13:09:23

标签: sparql sesame

我尝试在Sesame中运行以下SPARQL查询:

SELECT ?s ?p 
FROM <http://namespace#ABox> 
FROM <http://namespace#TBox> 
WHERE { ?s ?p <http://namespace#Sensor> }

根据:run a sparql query against two graphs?

以下rdf语句存储在Sesame中:

subject:   <http://namespace#Sensor2014>  
predicate: <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>  
object:    <http://namespace#TempSensor>  
context:   <http://namespace#ABox> 

subject:   <http://namespace#TempSensor>  
predicate: <http://www.w3.org/2000/01/rdf-schema#subClassOf>  
object:    <http://namespace#Sensor>  
context:   <http://namespace#TBox>

我在Java中使用了setIncludeInferred(true)选项

仅显示以下语句:

subject:   <http://namespace#TempSensor>  
predicate: <http://www.w3.org/2000/01/rdf-schema#subClassOf>

实际上我希望得到Sensor2014。

我认为问题可能是OWLSubClassOfAxiom

更新

我尝试了以下查询:

首先查询:

SELECT ?s ?p  WHERE {?s ?p <http://namespace#Sensor>}

结果:

subject:   <http://namespace#Sensor2015>
predicate: <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>

结果是预期的

第二次查询:

SELECT ?s ?p FROM <http://namespace#TAbox>  WHERE {?s ?p <http://namespace#Sensor>}

没有结果

结果不是预期的结果

ABox和TBox现在都在同一个子图中。 子图的内容:

subject:   <http://namespace#Sensor2015>
predicate: <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
object:    <http://namespace#TempSensor>    
context:   <http://namespace:TAbox>

subject:   <http://namespace#TempSensor>  
predicate: <http://www.w3.org/2000/01/rdf-schema#subClassOf>  
object:    <http://namespace#Sensor>  
context:   <http://namespace:TAbox>

支持推理 - 在第一次查询中证明。 最后,我通过尝试查询,一旦使用子图,推理就不再起作用了。

1 个答案:

答案 0 :(得分:1)

您的SPARQL WHERE子句查找将<http://namespace#Sensor>作为对象的所有主题和所有谓词。仅查看您的数据,第二个三元组符合此模式。第一个三元组<http://namespace#TempSensor>有一个对象。

您尚未指定是否使用了带有推理的存储库,因此假设存在标准的非推理内存或本机存储库,您的结果对我来说是正常的。