是否可以CONSTRUCT使用下图中包含节点A,B,C,E,F(但没有D,G,H)的RDF子图(使用符号主题 - 谓词 - 对象,总共7个语句)单个SPARQL查询:
A-p-B
A-q-C
A-r-D
A-s-E E-t-F
A-u-G G-v-H
Run Code Online (Sandbox Code Playgroud)
我知道如何制定一个返回{ApB,AqC}的SPARQL查询(即每个包含1个语句的两个路径)和一个返回{AsE EtF}的路径(即一个包含2个语句的路径).但它可以将两者都折叠成单个SPARQL CONSTRUCT查询,如果是这样,那么它看起来如何?
如果您在合法的RDF序列化中提供数据,则使用数据会更容易,这样我们就可以轻松地对其进行查询.以下是我们可以实际查询的表单中的数据:
@prefix : <http://stackoverflow.com/q/20840883/1281433/> .
:A :p :B .
:A :q :C .
:A :r :D .
:A :s :E . :E :t :F .
:A :u :G . :G :v :H .
Run Code Online (Sandbox Code Playgroud)
如果您只想要节点A,B,C,E和F引起的子图,您可以简单地询问所有三元组,其中主题和对象都是从该集合中获取的.例如:
prefix : <http://stackoverflow.com/q/20840883/1281433/>
construct {
?s ?p ?o
}
where {
values ?s { :A :B :C :E :F }
values ?o { :A :B :C :E :F }
?s ?p ?o
}
Run Code Online (Sandbox Code Playgroud)
这会产生以下结果(在您的符号中,在N3中和在RDF/XML中):
A-p-B
A-q-C
A-s-E E-t-F
Run Code Online (Sandbox Code Playgroud)
@prefix : <http://stackoverflow.com/q/20840883/1281433/> .
:E :t :F .
:A :p :B ;
:q :C ;
:s :E .
Run Code Online (Sandbox Code Playgroud)
<rdf:RDF
xmlns="http://stackoverflow.com/q/20840883/1281433/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about="http://stackoverflow.com/q/20840883/1281433/A">
<s>
<rdf:Description rdf:about="http://stackoverflow.com/q/20840883/1281433/E">
<t rdf:resource="http://stackoverflow.com/q/20840883/1281433/F"/>
</rdf:Description>
</s>
<q rdf:resource="http://stackoverflow.com/q/20840883/1281433/C"/>
<p rdf:resource="http://stackoverflow.com/q/20840883/1281433/B"/>
</rdf:Description>
</rdf:RDF>
Run Code Online (Sandbox Code Playgroud)