我尝试在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>
支持推理 - 在第一次查询中证明。 最后,我通过尝试查询,一旦使用子图,推理就不再起作用了。
答案 0 :(得分:1)
您的SPARQL WHERE子句查找将<http://namespace#Sensor>
作为对象的所有主题和所有谓词。仅查看您的数据,第二个三元组符合此模式。第一个三元组<http://namespace#TempSensor>
有一个对象。
您尚未指定是否使用了带有推理的存储库,因此假设存在标准的非推理内存或本机存储库,您的结果对我来说是正常的。