2010-04-29 5 views
3

그래프가 여러 개있는 rdf 그래프가 있습니다. 이제 모든 관련 트리플을 주어진 ID로 가져 오려고합니다. 이것은 내 sparql 쿼리입니다.구조체 sparql 쿼리에서 공용체 사용

select ?s ?p ?o from <http://localhost:8890/DAV/ranking> where { 
{<http://seekda.com/providers/cdyne.com/PhoneNotify> so:hasEndpoint ?s. 
?s ?p ?o} union 
{<http://seekda.com/providers/cdyne.com/PhoneNotify> ?p ?o} 
} 

이 경우의 ID는 <seekda.com/providers/cdyne.com/PhoneNotify>입니다.

그래프 쿼리 (construct 또는 describe)가 필요합니다. 그래서 저는 union으로 togheter를 포장해야한다고 생각합니다. 어떻게해야합니까?

답변

2

짧은 대답은 차이가 없습니다.

더 긴 대답은 SPARQL 쿼리가 두 부분으로 있다고 생각하십시오.

  1. 변수 바인딩 목록을 생성하는 쿼리 (WHERE) 부분입니다 (일부 변수는 언 바인딩 될 수 있음).

  2. 결과를 종합 한 부분입니다. SELECT, ASK, CONSTRUCT 또는 DESCRIBE입니다.

SELECT *이 실제로 쿼리가 반환하는 내용입니다. SELECT ?v1 ?v2은 결과를 취하고 다른 변수가 제거 된 다른 결과 세트를 생성합니다. ASK은 결과가 있는지 확인하기 만합니다.

CONSTRUCT은 템플릿을 사용하여 결과에서 RDF를 만듭니다. 각 결과 행에 대해 변수를 바인드하고 결과 모델에 명령문을 추가합니다. 템플릿 세 개가 언 바운드 변수를 포함하면 건너 뜁니다.

DESCRIBE은 각 결과 노드를 가져 와서 그에 연결된 트리플을 찾아 결과 모델에 추가하기 때문에 가장 드문 경우입니다. 다른 것과는 달리 쿼리와 일치하는 정보를 더 많이 포함 할 수 있습니다.

따라서 UNION, OPTIONAL 등 모든 형식의 쿼리가 허용됩니다. 언 바운드 변수로 인해 누락 된 세배가 발생할 수 있습니다.

검색어가 의미가 없습니다. {?s ?p ?o}과 다르지 않습니다. 너 뭐하려고? 좋아, 지금 더 이해가된다. 당신이 다음 원하는 같은 소리 아래

을 감안할 때 해명 :

construct { <http://seekda.com/providers/cdyne.com/PhoneNotify> ?p ?o } 
from <http://localhost:8890/DAV/ranking> 
where { 
    { <http://seekda.com/providers/cdyne.com/PhoneNotify> so:hasEndpoint ?s. 
    ?s ?p ?o } 
    union 
    { <http://seekda.com/providers/cdyne.com/PhoneNotify> ?p ?o } 
} 
+0

이봐, 당신의 답변을 주셔서 감사합니다. 좋아요, 무엇을하려고합니까 : 나는 여러 항목이있는 rdf 그래프가 있습니다. 이제 모든 관련 트리플을 주어진 ID (이 경우 id는 )로 가져 오려고합니다. 내가 rdf에서 필요로하는 것처럼, 나는 구조를 사용해야하고, 일부 전이 관계가 있기 때문에 그것들을 노동 조합 (togheter)과 함께 포장해야한다. 이것이 내 문제를 명확히하기를 바랍니다. 감사합니다. 사이먼 ps : 내 쿼리에 오류가 있습니다. 수정했습니다. 이제 생각해보십시오. – simon

+0

아, 알겠습니다. 그래서이 것에 대한 정보 (PhoneNotify)와 끝점을 원하십니까? – user205512

+0

'이행 관계'에 대해 언급하셨습니다. '종점'관계가 'PhoneNotify'에 적용된다는 아이디어입니까? – user205512