我有两个疑问:SPARQL UNION - 结果集不完整
查询1:
SELECT DISTINCT ?o COUNT(?o)
WHERE
{ ?s1 ?somep1 <predicate_one-uri>. ?s1 ?p ?o}
查询2:
SELECT DISTINCT ?o COUNT(?o)
WHERE
{?s2 ?somep2 <predicate_two-uri>.?s2 ?p ?o.}
每个查询都带给我不同的结果集(如预期) 。我需要让这两组的联合,从我的理解下面的查询应该给我一套我想:
SELECT DISTINCT ?o COUNT(?o)
WHERE
{
{ ?s1 ?somep1 <predicate_one-uri>.?s1 ?p1 ?o}
UNION
{?s2 ?somep2 <predicate_two-uri>.?s2 ?p2 ?o.}
}
的问题是,从查询1一些成果没有在工会组和副-versa查询2.联合工作不正常,因为它没有包含查询1和查询2的所有结果。请告知正确的sparql查询结构以实现所需的结果集。
但如果我提出以下查询(只是删除COUNT函数):
SELECT DISTINCT ?o
WHERE
{
{ ?s1 ?somep1 <predicate_one-uri>.?s1 ?p ?o}
UNION {?s2 ?somep2 <predicate_two-uri>.?s2 ?p ?o.}
}
我得到相应的结果集。但我也需要有变量?o
的频率。
感谢您的反馈。我使用OpenVirtuoso,我相信它使用Jena,允许我使用COUNT聚合函数。我在这里得到了一个参考:http://stackoverflow.com/questions/1223472/sparql-query-and-distinct-count。 据我所知,联合返回的行数可能小于两个查询的总和,因为联合。我的问题是,有些值甚至不会显示在查询1中存在的联合查询中。 对不起,我还是SPARQL和RDF的新手,我相信三重商店是RDF/XML(这是否有意义?)。 再次感谢, JPL – levacjeep 2010-05-05 14:59:41