SPARQL如何与个人获得所有三元组?



我刚刚开始学习SPARQL。我不确定错误在哪里。我是在测试推理器时发现这个错误的。

我用星狗作为数据库,推理器肯定是开着的。

我有一个简单的模型,有两个类:Building和Room,每个类有1个个体:building001和room001。

我有两个ObjectProperties hasLocation和isLocationOf。

三个:Building001 hasLocation Room001我已经预定义,推理器实际上应该识别三个Room001 isLocationOf Building001本身。

我现在想输出所有属于个体的三元组。所以我应该得到刚才描述的两个三元组。

与查询:

select * where {
?subject ?property ?object.
?subject a owl:NamedIndividual.
?property a owl:ObjectProperty.
?object a owl:NamedIndividual.
}

我只得到三个Building001 hasLocation Room001作为结果。

与查询:

select * where {
?subject ?property ?object
}

我得到以下三元组作为结果:

Building001 hasLocation Room001
Room001 isLocationOf Building001
Building001 rdf:type Building
Building001 rdf:type owl:Thing
Room001 rdf:type Room
Room001 rdf:type owl:Thing

我如何得到所有属于个体的三元组?没有得到rdf:类型的结果?

提前感谢!!

可以直接过滤掉rdf:type:

SELECT * {
?s ?p ?o
FILTER (?p != rdf:type)
}

您将注意到,当您对与模式关联的三元组进行推理时,不会返回,但会返回rdf:type三元组。这是因为这些三元组被认为是单个断言的一部分,而不是模式的一部分。

相关内容

  • 没有找到相关文章

最新更新