我刚刚开始学习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
三元组。这是因为这些三元组被认为是单个断言的一部分,而不是模式的一部分。