基于构造子查询中定义的新属性的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作为开始限制。