RDF和SPARQL:如何请求作为子类的属性的对象

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

我正在学习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://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.           
 }