sparql> PREFIX ab: <http://learningsparql.com/ns/addressbook#>
Executing update...
Update executed in 160 ms
sparql> SELECT ?craigEmail WHERE { ?person ab:firstName "Craig" }
Malformed query: org.eclipse.rdf4j.query.parser.sparql.ast.VisitorException:
QName 'ab:firstName' uses an undefined prefix
sparql> SELECT ?craigEmail WHERE { ?person
<http://learningsparql.com/ns/addressbook/firstName> "Craig" }
Evaluating SPARQL query...
+-----------------------------------------------------------------------------+
| craigEmail |
+-----------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
0 result(s) (64 ms)
1
A
답변
1
접두사를 쿼리와 동일한 줄에 넣어보십시오 (모든 내용이 한 줄로 표시됩니다).
1
기본적으로 RDF4J 콘솔은 단 한 줄의 SPARQL 쿼리 만 사용하므로 James는 대답에서 제안한 것처럼 쿼리를 한 줄로 입력하십시오.
다른 방법으로는 여러 모드로 들어갑니다 sparql
명령을 사용할 수 있습니다
memory> sparql
enter multi-line SPARQL query (terminate with line containing single '.')
PREFIX ab: <http://learningsparql.com/ns/addressbook#>
SELECT ?craigEmail WHERE { ?person ab:firstName "Craig" }
.
Evaluating SPARQL query...
+-----------------------------------------------------------------------------+
| craigEmail |
+-----------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
0 result(s) (93 ms)
memory>
특히 유용합니다 당신이 복사 붙여 넣기 큰 쿼리를있을 때. 여담으로
, 당신이 처음 "쿼리" '업데이트 실행'제안 이후
sparql> PREFIX ab: <http://learningsparql.com/ns/addressbook#>
Executing update...
Update executed in 160 ms
출력은 오해의 소지가, 당신은 단지 새로운 네임 스페이스 접두사를 추가했습니다. 하지만 그런 일은 일어나지 않습니다. 대신, 콘솔은 이것을 "본문"이없는 SPARQL 업데이트로 해석하고 빈 업데이트로 실행합니다. 접두사는 무시됩니다. SPARQL 구문 분석기의 오류라고 할 수 있습니다. 본문이없는 접두사 선언은 엄밀히 말하자면 합법적 인 쿼리가 아닙니다.
콘솔을 통해 RDF4J 저장소에 새 네임 스페이스 접두어를 추가하는 공식적인 방법은 없지만 사용할 수있는 트릭이 있습니다 (저장소 나 SPARQL에서 실행하는 경우에만 작동하지만 엔드 포인트는 당신이 쓰기 액세스)가하기 :
PREFIX ab: <http://learningsparql.com/ns/addressbook#> INSERT DATA {}
이 새로운 트리플을 삽입 할 SPARQL 업데이트를 실행하지만, 빈 블록 (그래서 실제 트리플가 삽입되지 않음).
memory> show n
--no namespaces found--
memory> PREFIX ab: <http://learningsparql.com/ns/addressbook#> INSERT DATA {}
Executing update...
Update executed in 3 ms
memory> show n
+----------
|ab http://learningsparql.com/ns/addressbook#
|rdf http://www.w3.org/1999/02/22-rdf-syntax-ns#
|owl http://www.w3.org/2002/07/owl#
|xsd http://www.w3.org/2001/XMLSchema#
|fn http://www.w3.org/2005/xpath-functions#
|rdfs http://www.w3.org/2000/01/rdf-schema#
|sesame http://www.openrdf.org/schema/sesame#
+----------
memory> SELECT ?craigEmail WHERE { ?person ab:firstName "Craig" }
Evaluating SPARQL query...
+-----------------------------------------------------------------------------+
| craigEmail |
+-----------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
0 result(s) (47 ms)
memory>
: 당신이 더 이상 콘솔에 입력 한 모든 쿼리를 선언 할 필요가 없습니다 그 후에 그러나이
는, 저장소에 네임 스페이스 접두사를 추가합니다