2012-04-27 4 views
2

초급 DBPedia/SPARQL/시맨틱 데이터입니다. 나는 그것은 결과를 제공하지만 난 찾고 있어요 아니라 전체 세트 않습니다Dbpedia가 전체 결과를 반환하지 않습니다.

select ?athlete ?sport where 
{ 
    ?athlete rdf:type <http://dbpedia.org/ontology/Athlete>. #query1 
    ?athlete dbpedia2:sport ?sport        #query2 
} 

를 "각 선수에 대한 스포츠를 찾아"로 쿼리를 다음 달렸다. "query1"자체가 더 많은 선수를 반환하지만 "query2"와 결합하면 결과 집합이 훨씬 적습니다.

불일치를 설명하십시오. 내가 놓친 게 있니? 대안은 무엇입니까? 유형과 dbpedia2 : 스포츠 특성

감사

답변

3

조회에서 모두 RDF있는 모든 선수 노드를 선택합니다. 어떤 속성이 바인딩되지 않은 경우에도 optional 절을 사용하여 노드를 검색 할 수 있습니다. 예를 들어 :

select ?athlete ?sport where { 
    ?athlete rdf:type <http://dbpedia.org/ontology/Athlete>. #query1 
    optional {?athlete dbpedia2:sport ?sport} #query2 
} 

더 나은 방법으로 스포츠를 얻을 : 빠른 응답

select ?athlete ?type where { 
    ?athlete rdf:type <http://dbpedia.org/ontology/Athlete>. 
    optional { 
     ?athlete rdf:type ?type. 
     ?type rdfs:subClassOf <http://dbpedia.org/ontology/Athlete> 
    } 
} 
+0

감사합니다. 이제 스포츠 경기장이 묶여 있지 않아도 선수를 돌려줍니다. 그러나 나의 탐구는 "스포츠를 각 선수에게 제공하는 것"입니다. 결과로 볼 때 운동 선수는 스포츠 속성이 언 바운드 될 수 있다고 생각하십니까? 선수 -> 스포츠 관계가 불완전하기 때문에 어떻게 구해야합니까? 스포츠 -> 선수 관계가 존재하지 않습니다. 감사합니다, –

+0

그런 경우에는 더 잘 온톨로지를 탐험해야합니다. rdfs : subClassOf 선수는 필요한 정보를 기술한다. 대답에 다른 쿼리를 추가했습니다. –

+0

다시 한번 고마워. 나는 이걸 생각해 냈다. query.select? sport? athlete에 대한 의견을 보내주십시오 ({ ? sport rdfs : subClassOf ). ? athlete $ sport } –

관련 문제