Rdf SPARQL查询结果中的列和行

Rdf SPARQL查询结果中的列和行,rdf,sparql,semantic-web,dbpedia,linked-data,Rdf,Sparql,Semantic Web,Dbpedia,Linked Data,我这里有一个问题,看起来很简单,但因为我不太熟悉Sparal查询,所以找不到解决方案 PREFIX onto: <http://dbpedia.org/ontology/> PREFIX resu: <http://dbpedia.org/resource/> PREFIX yago: <http://dbpedia.org/class/yago/> SELECT count(?MontrealC) as ?Montrea count(?TorontoC

我这里有一个问题,看起来很简单,但因为我不太熟悉Sparal查询,所以找不到解决方案

PREFIX onto: <http://dbpedia.org/ontology/>
PREFIX resu: <http://dbpedia.org/resource/>
PREFIX yago: <http://dbpedia.org/class/yago/>

SELECT 

count(?MontrealC) as ?Montrea
count(?TorontoC) as ?Toronto
count(?OttawaC) as ?Ottawa
count(?VancouverC) as ?Vancouver


WHERE
{
{?MontrealC rdf:type yago:HotelsInMontreal} UNION
{?TorontoC rdf:type yago:HotelsInToronto} UNION
{?OttawaC rdf:type yago:HotelsInOttawa} UNION
{?VancouverC a onto:Hotel .
{?VancouverC onto:location resu:Vancouver} UNION
{?VancouverC onto:location ?street .
?street a yago:StreetsInVancouver}} UNION
{?VancouverC a yago:HotelsInBritishColumbia .
{?VancouverC onto:location resu:Vancouver} UNION
{?VancouverC onto:location ?street.
?street a yago:StreetsInVancouver}
}}
问题是,我需要它们分为两列和四行,如下所示:

Montreal    Toronto     Ottawa    Vancouver
8           28          5         10
Montreal    Toronto
8           28 
Ottawa    Vancouver
5         10

这在SPARQL查询中是可能的吗

这在一个SPARQL查询中是不可能的。然而,这不应该是一个大问题,因为您已经获得了正确的数据,并且您只希望它有一个不同的表示形式。您能否提供更多的上下文,说明为什么您需要这种方式的数据,您询问了多少查询,以及您是手动还是嵌入到某个程序中(如果是,您使用哪种编程语言)

如果确实希望这样做,请将其拆分为两个查询并附加结果:

问题1
这在一个SPARQL查询中是不可能的。然而,这不应该是一个大问题,因为您已经获得了正确的数据,并且您只希望它有一个不同的表示形式。您能否提供更多的上下文,说明为什么您需要这种方式的数据,您询问了多少查询,以及您是手动还是嵌入到某个程序中(如果是,您使用哪种编程语言)

如果确实希望这样做,请将其拆分为两个查询并附加结果:

问题1
您说您想要四行,但您在那里发布的内容只有一行。很抱歉,这可能是个问题。我在哪里得到了一个答案,其他地方说这在SPARQL中是不可能发生的。你想通过所有这些联盟实现什么?你能解释一下你的疑问是什么吗?几乎可以肯定有一种更简洁的方式来编写它……而且,尽管Virtuoso(DBpedia使用的SPARQL端点)可能会接受这个查询,但它并不是合法的SPARQL。通过sparql.org上的验证程序运行您的查询是值得的。您说您想要四行,但您在那里发布的内容只有一行。很抱歉,这可能是个问题。我在哪里得到了一个答案,其他地方说这在SPARQL中是不可能发生的。你想通过所有这些联盟实现什么?你能解释一下你的疑问是什么吗?几乎可以肯定有一种更简洁的方式来编写它……而且,尽管Virtuoso(DBpedia使用的SPARQL端点)可能会接受这个查询,但它并不是合法的SPARQL。通过sparql.org上的验证程序运行查询是值得的。
PREFIX onto: <http://dbpedia.org/ontology/>
PREFIX resu: <http://dbpedia.org/resource/>
PREFIX yago: <http://dbpedia.org/class/yago/>

SELECT 

count(?MontrealC) as ?Montreal
count(?TorontoC) as ?Toronto

WHERE
{
{?MontrealC rdf:type yago:HotelsInMontreal} UNION
{?TorontoC rdf:type yago:HotelsInToronto}
}
PREFIX onto: <http://dbpedia.org/ontology/>
PREFIX resu: <http://dbpedia.org/resource/>
PREFIX yago: <http://dbpedia.org/class/yago/>

SELECT 

count(?OttawaC) as ?Ottawa
count(?VancouverC) as ?Vancouver

WHERE
{
{?OttawaC rdf:type yago:HotelsInOttawa} UNION
{?VancouverC a onto:Hotel .
{?VancouverC onto:location resu:Vancouver} UNION
{?VancouverC onto:location ?street .
?street a yago:StreetsInVancouver}} UNION
{?VancouverC a yago:HotelsInBritishColumbia .
{?VancouverC onto:location resu:Vancouver} UNION
{?VancouverC onto:location ?street.
?street a yago:StreetsInVancouver}
}}
$ cat query1.csv query2.csv
"Montrea","Toronto"
8,28
"Ottawa","Vancouver"
5,10