Столбцы и строки в результате запроса SPARQL - PullRequest
0 голосов
/ 20 марта 2012

У меня есть проблема, она выглядит просто, но, поскольку я не очень хорошо знаком с запросами 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}
}}

Как только вы примените этот запрос в любой конечной точке dbpedia, вы получите результат, показанный в строках буксировки и в четырех столбцах следующим образом:

Montreal    Toronto     Ottawa    Vancouver
8           28          5         10

Проблема в том, что мне нужно, чтобы они были на буксире. Столбцы и четыре ряда такие же, как показано ниже:

Montreal    Toronto
8           28 
Ottawa    Vancouver
5         10

Возможно ли это в запросах SPARQL?

1 Ответ

3 голосов
/ 04 апреля 2012

Это невозможно с одним запросом SPARQL.Это не должно быть большой проблемой, так как вы уже получаете правильные данные и просто хотите иметь другое представление о них.Можете ли вы дать больше информации о том, зачем вам нужны данные таким образом, сколько из этих запросов вы запрашиваете, и если вы делаете это вручную или встраиваете в какую-либо программу (если да, какой язык программирования вы используете)?

Если вы действительно хотите это таким образом, разбейте его на два запроса и добавьте результаты:

Запрос 1

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}
}

Запрос 2

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}
}}

Слияние

  • сохранить результаты как query1.csv и query2.csv
  • в терминале, набрать "cat query1.csv query2.csv> query.csv"

    $ cat query1.csv query2.csv
    "Montrea","Toronto"
    8,28
    "Ottawa","Vancouver"
    5,10
    
...