如何生成与给定查询类似的SPARQL查询?

如何生成与给定查询类似的SPARQL查询?,sparql,Sparql,我正在寻找一种能够生成类似于给定“种子”查询的SPARQL查询的工具或解析器 我的目标是创建一个查询工作负载,该工作负载具有三重模式中的重叠查询、查询实体,。。等等 例如,WatDiv基准能够通过用不同的值替换有界变量来生成基于静态查询模板的查询(因此我们有相当多的重叠查询)。但它无法控制在查询中放置或保留哪些三重模式(我们寻求包含类似查询的模式)。 WatDiv生成的示例: <http://db.uwaterloo.ca/~galuc/wsdbm/City100> <

我正在寻找一种能够生成类似于给定“种子”查询的SPARQL查询的工具或解析器

我的目标是创建一个查询工作负载,该工作负载具有三重模式中的重叠查询、查询实体,。。等等

例如,WatDiv基准能够通过用不同的值替换有界变量来生成基于静态查询模板的查询(因此我们有相当多的重叠查询)。但它无法控制在查询中放置或保留哪些三重模式(我们寻求包含类似查询的模式)。 WatDiv生成的示例:

    <http://db.uwaterloo.ca/~galuc/wsdbm/City100> <http://www.geonames.org/ontology#parentCountry> ?v1 .
    ?v2 <http://db.uwaterloo.ca/~galuc/wsdbm/likes> <http://db.uwaterloo.ca/~galuc/wsdbm/Product0> .
    ?v2 <http://schema.org/nationality> ?v1 .
}
?v1。
?v2。
?v2?v1。
}
上述查询通常类似于以下查询(唯一的区别是变量)

选择?v1?v2,其中{
?v1。
?v2。
?v2?v1。
}
我们还需要生成类似的查询,这些查询没有最后的三重模式,或者有更多的三重模式从其他查询添加到此查询

所以结果可能是这样的:

SELECT ?v1 ?v2 WHERE {
    <http://db.uwaterloo.ca/~galuc/wsdbm/City147> <http://www.geonames.org/ontology#parentCountry> ?v1 .
    ?v2 <http://db.uwaterloo.ca/~galuc/wsdbm/likes> <http://db.uwaterloo.ca/~galuc/wsdbm/Product0> .
}
选择?v1?v2,其中{
?v1。
?v2。
}
不是答案(我不认为有“答案”),只是一种可能的方式:如果您熟悉Java,在Apache Jena中至少有两种选择:1)使用带有一些/只是变量的查询模板,您可以使用-2)对于更复杂的事情,如删除/添加三重模式,您必须处理查询结构,如何解释
SELECT ?v1 ?v2 WHERE {
    <http://db.uwaterloo.ca/~galuc/wsdbm/City147> <http://www.geonames.org/ontology#parentCountry> ?v1 .
    ?v2 <http://db.uwaterloo.ca/~galuc/wsdbm/likes> <http://db.uwaterloo.ca/~galuc/wsdbm/Product0> .
}