Como posso dar um argumento como um arquivo externo para enrolar com codificação de url?

1

Eu tento solicitar o query.wikidata.org usando o curl.

A seguinte linha de comando funciona perfeitamente:

$ curl -G https://query.wikidata.org/bigdata/namespace/wdq/sparql --data-urlencode query='PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX p: <http://www.wikidata.org/prop/>
PREFIX ps: <http://www.wikidata.org/prop/statement/>
PREFIX pq: <http://www.wikidata.org/prop/qualifier/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT ?item ?itemLabel
WHERE {
?item wdt:P31 wd:Q146 . 
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}' -H 'Accept: text/csv'

Como a parte SPARQL da consulta é longa e complexa, eu gostaria de armazená-la em um arquivo externo (digamos, cats.sparql) e chamar o arquivo na linha de comando curl.

Isso seria cats.sparql:

PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX p: <http://www.wikidata.org/prop/>
PREFIX ps: <http://www.wikidata.org/prop/statement/>
PREFIX pq: <http://www.wikidata.org/prop/qualifier/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?item ?itemLabel
WHERE {
?item wdt:P31 wd:Q146 .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}

Agora, a seguinte linha de comando retorna um erro:

 $ curl -G https://query.wikidata.org/bigdata/namespace/wdq/sparql --data-urlencode query=cats.sparql -H 'Accept: text/csv'curl -G https://query.wikidata.org/bigdata/namespace/wdq/sparql --data-urlencode query=cats.sparql -H 'Accept: text/csv'

Aqui está o começo do erro:

java.util.concurrent.ExecutionException: org.openrdf.query.MalformedQueryException: Lexical error at line 1, column 12.  Encountered: <EOF> after : "cats.sparql"
    
por PAC 17.03.2016 / 15:33

1 resposta

1

Ok, finalmente encontrei uma solução para esse problema = 1 "> pergunta

$ curl -G https://query.wikidata.org/bigdata/namespace/wdq/sparql --data-urlencode query="$(< cats.sparql)" -H 'Accept: text/csv' > wikidata_cats.csv
    
por 17.03.2016 / 16:05

Tags