擅长:python、mysql、java
<p>另一个工具是<code>roqet</code>一个打包在<a href="http://librdf.org/rasqal/" rel="nofollow">rasqal</a>中的工具。它是一个命令行工具,返回已解析的树。例如:</p>
<p><code>roqet -i laqrs -d structure -n -e "SELECT * WHERE {?x a ?y OPTIONAL {?x a ?z}}"</code></p>
<p>会输出。。在</p>
<pre><code>Query:
query verb: SELECT
query bound variables (3): x, y, z
query Group graph pattern[0] {
sub-graph patterns (2) {
Basic graph pattern[1] #0 {
triples {
triple #0 { triple(variable(x), uri<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>, variable(y)) }
}
}
Optional graph pattern[2] #1 {
sub-graph patterns (1) {
Basic graph pattern[3] #0 {
triples {
triple #0 { triple(variable(x), uri<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>, variable(z)) }
}
}
}
}
}
}
</code></pre>
<p>看看你在另一个答案中的评论,我不认为这是你需要的。我不认为你会在SPARQL解析器中找到答案。查询中的对象(或三重模式)求值发生在<code>Query Engines</code>内部,在设计良好的系统中,它与查询解析分离。在</p>
<p>例如,在4store中,您可以查看带有选项<code>4s-query</code>的<code>4s-query</code>(非常详细)的命令,在那里可以看到查询是如何执行的以及如何为每个三重模式求值执行替换的输出。在</p>