gpt4 book ai didi

sparql - ARQ 从头开始​​查询

转载 作者:行者123 更新时间:2023-12-04 20:52:59 25 4
gpt4 key购买 nike

我在基于语法或代数从头开始构建查询时遇到问题
https://jena.apache.org/documentation/query/manipulating_sparql_using_arq.html

例如我有以下查询

 SELECT  (count(?instance) AS ?count)
WHERE
{ ?instance <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
<http://data.linkedmdb.org/resource/movie/film> }


(project (?count)
(extend ((?count ?.0))
(group () ((?.0 (count ?instance)))
(bgp (triple ?instance <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://data.linkedmdb.org/resource/movie/film>)))))

任何人都可以用如何从头开始构建上述查询的示例代码来指导我吗?
我试图建立它 语法 但不知道如何为上面的聚合设置别名。

如果有人至少可以指导我在投影中包含聚合及其别名,那将是非常棒的。

最佳答案

我通常不会通过代码构建查询,因为我可以只解析查询字符串,或使用参数化的 SPARQL 查询,但这里是使用 API 重构您的查询。我在这里使用的大多数方法都是通过探索 Eclipse 中的自动完成选项和查看 Javadoc 找到的。

import com.hp.hpl.jena.graph.Node;
import com.hp.hpl.jena.graph.Triple;
import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.query.QueryFactory;
import com.hp.hpl.jena.sparql.core.Var;
import com.hp.hpl.jena.sparql.expr.ExprAggregator;
import com.hp.hpl.jena.sparql.expr.ExprVar;
import com.hp.hpl.jena.sparql.expr.aggregate.AggCountVar;
import com.hp.hpl.jena.sparql.syntax.ElementTriplesBlock;
import com.hp.hpl.jena.vocabulary.RDF;

public class QueryBuilding {
public static void main(String[] args) {
// Create the query and make it a SELECT query.
final Query query = QueryFactory.create();
query.setQuerySelectType();

// Set the projection expression.
final ExprVar instance = new ExprVar( "instance" );
query.getProject().add( Var.alloc( "count" ), new ExprAggregator( instance.asVar(), new AggCountVar( instance )));

// Construct the triples pattern and add it.
final ElementTriplesBlock triples = new ElementTriplesBlock();
final Node film = Node.createURI( "http://data.linkedmdb.org/resource/movie/film" );
triples.addTriple( new Triple( instance.getAsNode(), RDF.type.asNode(), film ));
query.setQueryPattern( triples );

// Show the query
System.out.println( query );
}
}

输出(即打印的查询)如下。它与您的查询相同,以一些空白位置和换行符为模。

SELECT  (count(?instance) AS ?count)
WHERE
{ ?instance <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://data.linkedmdb.org/resource/movie/film> .}

关于sparql - ARQ 从头开始​​查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8206319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com