基于构造子查询中定义的新属性的SPARQL属性路径

基于构造子查询中定义的新属性的SPARQL属性路径,sparql,rdf,Sparql,Rdf,根据以下模式,可以很容易地看到“驾驶员-乘客”血统: tp:trip a owl:Class ; rdfs:label "trip"@en ; rdfs:comment "an 'asymmetric encounter' where someone is driving another person."@en . tp:driver a owl:ObjectProperty ; rdfs:label "driver&q

根据以下模式,可以很容易地看到“驾驶员-乘客”血统:

tp:trip a owl:Class ;
    rdfs:label "trip"@en ;
    rdfs:comment "an 'asymmetric encounter' where someone is driving another person."@en .

tp:driver a owl:ObjectProperty ;
    rdfs:label "driver"@en ;
    rdfs:comment "has keys."@en ;
    rdfs:domain tp:trip ;
    rdfs:range tp:person .

tp:passenger a owl:ObjectProperty ;
    rdfs:label "passenger"@en ;
    rdfs:comment "has drinks."@en ;
    rdfs:domain tp:trip ;
    rdfs:range tp:person .

考虑以下数据:

<alice> a tp:person .
<grace> a tp:person .
<tim> a tp:person .
<ruth> a tp:person .

<trip1> a tp:trip ;
    tp:participants   <alice> , <grace> ;
    tp:driver         <alice> ;
    tp:passenger         <grace> .

<trip2> a tp:trip ;
    tp:participants   <alice> , <tim> ;
    tp:driver         <alice> ;
    tp:passenger         <tim> .

<trip3> a tp:trip ;
    tp:participants   <tim> , <grace> ;
    tp:driver         <tim> ;
    tp:passenger         <grace> .

<trip4> a tp:trip ;
    tp:participants   <grace> , <ruth> ;
    tp:driver         <grace> ;
    tp:passenger         <ruth> .

<trip5> a tp:trip ;
    tp:participants   <grace> , <tim> ;
    tp:driver         <grace> ;
    tp:passenger         <tim> .
尝试2: 我试图创建属性路径,将祖先表示为乘客的司机,但我认为我没有正确理解这是如何工作的:

(tp:driver/^tp:passenger)+

关于MWE:是否存在某种RDF沙箱,允许我通过定义一个简单的本体(如上面的
tp
)以及一些示例数据来创建MWE?以下“游乐场”可用,但它们似乎都不支持定义玩具本体:


有关内容的说明:

这个问题与SPARQL 1.1不直接支持的特性直接相关,但不再需要保存路径本身


Joshua Taylor的著作似乎很有意义,但并未涉及特定类型路径的识别,例如上面定义的谱系。

这本书似乎起到了关键作用:

select ?driver ?passenger where {
?driver (^tp:driver/tp:passenger)+ ?passenger .
filter( ?driver != ?passenger)
}

如果您还想查看指向同一个人的关系,则可以删除筛选条件。

此条件似乎可以实现以下目的:

select ?driver ?passenger where {
?driver (^tp:driver/tp:passenger)+ ?passenger .
filter( ?driver != ?passenger)
}

如果您还想查看指向同一个人的关系,则可以删除筛选条件。

谢谢!然而,在使用实际数据进行查询时,Virtuoso抱怨缺乏资源。我尝试了以下修改(仍然得到42000):1)限制10个结果,2)在子查询中包装初始选择,3)为子查询的“驱动程序”指定单个IRI,而不是使用值。你能试着把内存限制提高到4G吗?您也可以使用100作为开始限制。谢谢!然而,在使用实际数据进行查询时,Virtuoso抱怨缺乏资源。我尝试了以下修改(仍然得到42000):1)限制10个结果,2)在子查询中包装初始选择,3)为子查询的“驱动程序”指定单个IRI,而不是使用值。你能试着把内存限制提高到4G吗?您也可以使用100作为开始限制。