2014-12-04 2 views
1

DBpedia Sparql 끝 점이 만드는 .csv 파일을 사용하여 프로젝트를 만들고 있습니다.SPARQL 쿼리 : 각 결과에 대해 새로운 "null"요소를 갖는 방법

내가하고 싶습니다 ... (추상 .thumblink - - 아트 워크 박물관)

SELECT ?museum, ?artwork, ?abstract, ?thumbnail WHERE { 
?museum <http://dbpedia.org/ontology/address> ?address. 
?artwork <http://dbpedia.org/ontology/location> ?museum. 
?artwork <http://dbpedia.org/ontology/abstract> ?abstract. 
?artwork <http://dbpedia.org/ontology/thumbnail> ?thumbnail. 
FILTER contains(?address, "Roma") 
} 

하고 테이블을 생성 : 일반 쿼리 은 결과를 위해 나는이 하나를 사용, 아무 문제가 없다 (- 작품 - 추상 - thumblink - personal_element_code 박물관)

모든 새로운 요소가 null의 경우 좋은 ...

0 그것은 요소가

처럼 추가로

테이블이 동일한 테이블을 가질 수 있는지 알고 사전에

감사

UPDATE 내가 쿼리의

SELECT ?museum ?artwork ?abstract ('null' as ?beacon_code) WHERE { 

?museum <http://dbpedia.org/ontology/address> ?address. 
?artwork <http://dbpedia.org/ontology/location> ?museum. 
?artwork <http://dbpedia.org/ontology/abstract> ?abstract. 

FILTER contains(?address, "Firenze") 
} 

메모를이 "종류"를 사용하여 poit를했습니다

는 :하지 깃발을 "무효의 엄격한 검사를 변수 " 일종의 야만적이지만 작동합니다

답변

1

작성한대로 쿼리는 ' 실제로 합법적 인 SPARQL. 투영 변수 사이에는 쉼표가 있어서는 안됩니다. DBpedia의 엔드 포인트 인 Virtuoso는 비표준 구문을 허용하는 것으로 유명합니다. 클라이언트이 먼저 쿼리를 구문 분석해야하므로 DBpedia 웹 서비스에서 직접 시도하는 것이 클라이언트 라이브러리에서 작동하지 않을 수 있기 때문에 특히 실망 스럽습니다. sparql.org's query validator에서 검색어를 확인할 수 있습니다.

SPARQL에서 쿼리에 나타나지 않는 변수를 선택할 수 있으며 정렬에는 null 값이 있어야합니다. 즉 당신은 간단하게 할 수 있어야한다 :

SELECT ?museum ?artwork ?abstract ?thumbnail ?personal_element_code WHERE { 

그러나, 실제로 DBpedia 엔드 포인트 (다시, 거장의 이상한)에서 작동하지 않습니다. 다음 쿼리를 시도하는 경우, 예를 들어, 다음과 같은 오류를 얻을 :

select ?person ?x where { 
    ?person a dbpedia-owl:Person 
} 
limit 10 

Virtuoso 37000 Error SP031: SPARQL compiler: Variable 'x' is used in the query result set but not assigned

그러나, 당신은 너무 많은 문제없이이 문제를 해결 할 수 있습니다. 쿼리 본문에 개의 값? x {undef} 만 사용하면됩니다. 예 :

"person","x" 
"http://dbpedia.org/resource/%C3%81ngel_Gim%C3%A9nez", 
"http://dbpedia.org/resource/Aaron_Lines", 
"http://dbpedia.org/resource/Abel_Lafleur", 
"http://dbpedia.org/resource/Ada_Maimon", 
"http://dbpedia.org/resource/Adam_Krikorian", 
"http://dbpedia.org/resource/Albert_Constable", 
"http://dbpedia.org/resource/Alex_Reid_(actress)", 
"http://dbpedia.org/resource/Alex_Reid_(art_dealer)", 
"http://dbpedia.org/resource/Alex_Reid_(fighter)", 
"http://dbpedia.org/resource/Alex_Reid_(footballer)", 

당신 경우 : 당신이 그것에 대해 CSV를 요청하면

select ?person ?x where { 
    values ?x { undef } 
    ?person a dbpedia-owl:Person 
} 
limit 10 

SPARQL results

, 당신은 당신이 찾고있는 빈 열이 다음을 다시 얻을 것이다 실제로 문자열 null을 원한다면, 이것은 훨씬 더 쉽습니다. ('null'로? x) 할 수 있습니다. 예 ::

select ?person ('null' as ?x) where { 
    values ?x { undef } 
    ?person a dbpedia-owl:Person 
} 
limit 10 

SPARQL results

"person","x" 
"http://dbpedia.org/resource/%C3%81ngel_Gim%C3%A9nez","null" 
"http://dbpedia.org/resource/Aaron_Lines","null" 
"http://dbpedia.org/resource/Abel_Lafleur","null" 
"http://dbpedia.org/resource/Ada_Maimon","null" 
"http://dbpedia.org/resource/Adam_Krikorian","null" 
"http://dbpedia.org/resource/Albert_Constable","null" 
"http://dbpedia.org/resource/Alex_Reid_(actress)","null" 
"http://dbpedia.org/resource/Alex_Reid_(art_dealer)","null" 
"http://dbpedia.org/resource/Alex_Reid_(fighter)","null" 
"http://dbpedia.org/resource/Alex_Reid_(footballer)","null" 
0

존재 또는 않을 수도있다 데이터 항목을 처리하는 방법은, 선택적으로 사용한다.

SELECT ?museum ?artwork ?abstract ?thumbnail WHERE { 
    ?museum <http://dbpedia.org/ontology/address> ?address. 
    ?artwork <http://dbpedia.org/ontology/location> ?museum. 
    FILTER contains(?address, "Roma") 
    OPTIONAL{?artwork <http://dbpedia.org/ontology/abstract> ?abstract.} 
    OPTIONAL{?artwork <http://dbpedia.org/ontology/thumbnail> ?thumbnail.} 
    } 
+0

나는 OP는 옵션 값을 찾고되지 않은 인상을 가지고 있지만, CSV는 "빈 열"을 가지도록 설정 결과에 빈 열을 소개하는 방법을 (아마도 몇 가지를 일치 일부 열이 예상되는 처리). –