2017-11-10 24 views
2

SPARQL 리소스가 있는지 확인하는 좋은 방법은 무엇입니까? 예를 들어 HTTP GET 요청을 실행하는 것과 동일하게 검색하고 있습니다. http://dbpedia.org/resource/Game_of_Thrones 및 HTTP 상태 코드를 확인하지만 SPARQL 쿼리를 사용하여 수행하고 싶습니다. 나는이 작업을 수행 할 수있는 좋은 방법이 확신하지만 난 그것을 찾을 수 없습니다SPARQL 리소스가 있는지 묻습니다.

ASK {<http://dbpedia.org/resource/Game_of_Thrones> a <http://dbpedia.org/resource/>} 

:

나는 이런 일에 대해 생각했다.

참고 : 특정 트리플의 존재 여부를 확인하고 싶지 않습니다. 리소스가 있는지를 알고 싶습니다.

+2

은 아마 당신은'사용 DBR을 DESCRIBE 수 : Game_of_Thrones'합니다. 좀 더 표준적인 방법은 UNION {s) {}} {r _T _T es}} {r? p}} UNION {s s}} UNION {s? p?}}''입니다. DBpedia는 이것조차도 이해합니다 :'ASK {VALUES (? r) {(dbr : Game_of_Thrones)} {? r [] []} UNION {[]? r []} UNION {[] []? r}}' –

+0

@StanislavKralin의 제안은 완벽합니다. 또한 스키마에 관한 것이 아니라 리소스에 관해 실제로 말하면 리소스가 술어 위치에있는 트리플 패턴을 무시할 수도 있습니다. 그게 당신이 할 수있는 전부입니다. – AKSW

+0

고마워요 @StanislavKralin! 그게 내가 찾고 있던거야. 원하는 경우 추천으로 답변을 게시 할 수 있으며 동의하겠습니다. :) – Peter

답변

3

SPARQL은 RDF 쿼리 언어입니다. RDF 트리플은 주체, 술어 및 객체로 구성됩니다.
위의 위치에 URI가 있는지 확인하려면 UNION을 분리 기호로 사용해야합니다. SPARQL 사양 doesn't 비록

ASK { 
    VALUES (?r) { (dbr:Game_of_Thrones) } 
     { ?r ?p ?o } 
     UNION 
     { ?s ?r ?o } 
     UNION 
     { ?s ?p ?r } 
    } 

술어 위치에 [] 허용 DBpedia이 이해 :

ASK { 
    VALUES (?r) { (dbr:Game_of_Thrones) } 
     { ?r [] [] } 
     UNION 
     { [] ?r [] } 
     UNION 
     { [] [] ?r } 
    } 
+1

P. S. 엄밀히 말하면 URI는 명명 된 그래프 URI 일 수도 있습니다 ... –