RDF和SPARQL:如何请求作为子类的属性的对象
我正在学习RDF建模,在应用子类的属性时遇到了困难。我想在RDF中对一组人员及其能力进行建模,然后查询人员。例如,给定以下RDF内容:RDF和SPARQL:如何请求作为子类的属性的对象,sparql,rdf,modeling,rdfs,Sparql,Rdf,Modeling,Rdfs,我正在学习RDF建模,在应用子类的属性时遇到了困难。我想在RDF中对一组人员及其能力进行建模,然后查询人员。例如,给定以下RDF内容: prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> prefix d: <http://mytest.de/data#> prefix s: <http
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix d: <http://mytest.de/data#>
prefix s: <http://mytest.de/types#>
d:runningFast rdfs:subClassOf d:running .
d:myPerson s:does d:runningFast .
s:does rdfs:domain s:Person.
s:does rdfs:range s:Capability.
但是,随着示例变得越来越复杂,我希望不通过?o
进行间接操作。我想这样做:
select ?person {
?person s:does d:running.
}
我错过了什么?我怀疑这是s:does所必需的一些附加信息,因为我可以让示例使用rdf:type
而不是s:does
我原以为
?person s:d:running
也能工作,因为d:runningFast是d:running的一个子类。你说的“我想这样做”是什么意思?如果数据是以当前形式给出的,那么你必须像在第一次查询中那样做。唯一更简洁的方法是?person s:does/rdfs:subassof*d:running代码>谢谢你的评论。我原以为?person s:d:running
也可以工作,因为d:runningFast是d:running.ehm的一个子类,但它应该如何工作,为什么工作?SPARQL是三元组的精确匹配,除此之外的任何推理都必须由所用的三元组存储支持和启用。此外,任何标准的推理概要文件都不会涵盖您所期望的内容
select ?person {
?person s:does d:running.
}