URL 인코딩으로 컬링하기 위해 매개변수를 외부 파일로 제공하는 방법은 무엇입니까?

URL 인코딩으로 컬링하기 위해 매개변수를 외부 파일로 제공하는 방법은 무엇입니까?

query.wikidata.org를 요청하기 위해 컬을 사용하려고 합니다.

다음 명령줄은 완벽하게 작동합니다.

$ 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'

쿼리의 SPARQL 부분은 길고 복잡하기 때문에 이를 외부 파일(예: cats.sparql)에 저장하고 컬 명령줄에서 해당 파일을 호출하고 싶습니다.

이것은 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" }
}

이제 다음 명령줄은 오류를 반환합니다.

 $ 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'

이것은 잘못된 시작입니다.

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

답변1

알았어 드디어 해결책을 찾았어질문

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

관련 정보