2012-01-29 3 views
6

트리플의 "즐거움"결과를 반환하고 싶다고 말하십시오. 나는 그 단어들 사이의 공간을 설명하는 방법을 모른다. 다음은 시도한 쿼리이지만 작동하지 않습니다. 아무도 내가 잘못하고있는 것을 발견 할 수 있는지 알려주십시오.공백으로 쿼리하기 Sparql

<rdf:Description rdf:about="http://website.com/urls/playing games"> 
    <owl:sameAs rdf:resource="http://website.com/urls/having fun"/> 
</rdf:Description> 

"PREFIX owl: <http://www.w3.org/2002/07/owl#> SELECT * WHERE { ?y owl:sameAs+ <http://website.com/urls/playing fun> }"; 

답변

9

짧은 대답 : 적어도 직접적으로는 할 수 없습니다.

약간 더 긴 대답 : RDF 자체는 RDF URI 참조를 사용합니다. 반면에 SPARQL 쿼리 언어는 IRI를 사용합니다 (RDF가 IRI보다 먼저 나오고 RDF URI 참조 개념이 개발 된 이유는 IRI가 결국에는 기대했던 것입니다.

불행히도 RDF URI 참조와 IRI의 정의가 일치하지 않아 RDF URI 참조가 공백을 허용하지만 IRI는 그렇지 않습니다. SPARQL 구문은 예제의 URI 참조와 같은 URI 참조를 처리 할 수 ​​없습니다. 자세한 내용은 this discussion을 참조하십시오.

최상의 선택은? URI 참조에서 공백을 사용하지 마십시오. 밑줄로 바꾸거나 제거하십시오. 그것은 owl:sameAs하지 owl:sameas

PREFIX owl: <http://www.w3.org/2002/07/owl#> 
SELECT ?y 
WHERE { 
    ?y owl:sameAs+ ?x 
    FILTER (str(?x) = "http://website.com/urls/playing fun") 
} 
+0

위대한 답은 아마도 공백을 피할 것입니다. – Sam

2
  1. : 모든 것을 말했다되고

    는 쿼리 작업을 만들 수있는 해결 방법이 있습니다. 자본금을 참고하십시오.
  2. IRI에는 공백을 사용할 수 없습니다.
+0

도움말에 대한 감사합니다. – Sam