2013-09-03 2 views
1

주어진 영화 이름에 대한 배우 목록을 가져와야하는이 작업을 해결하려고합니다. 나는 SPARQL과 dbpedia가 처음이다.SPARQL을 사용하여 dbpedia에서 배우 목록 가져 오기

PREFIX dbpo: <http://dbpedia.org/ontology/> 

SELECT ?actor_name 
WHERE { 
    SERVICE <http://dbpedia.org/sparql> { 
    "Total Recall" dbpo:movieTitle ?movieName . 
    ?movieName dbpo:actor ?actor. 
    ?actor dbpo:actor_name ?actor_name. 
    } 
} 

은 아마도 내가 잘못 이름을 얻고있다 :

일부 자습서를 읽은 후, 지금까지 나는 다음 있습니다.

일반적으로이 질문에서 설명한 것과 같이 dbpedia에서 특정 서비스 지점을 찾는 방법은 무엇입니까?

답변

1

관련 리소스에 사용 된 것으로 보이지 않기 때문에 쿼리에서 사용하고 있던 속성을 어디에서 가져 왔는지 확실하지 않습니다. 추가 문제는 것, SPARQL은 트리플 패턴으로 수 있지만, 합법적 인 경우, 리터럴, 당신은

"Total Recall" dbpo:movieTitle ?movieName . 

에게이 배를 일치하기 위해 필요한 것 RDF 트리플의 대상이 될 수 있다는 것입니다 문자열 "Total Recall"은 일부 영화 제목을 가지고 있으며 해당 제목에 변수 ?movieName을 바인딩합니다. 문자열은 영화가 아니기 때문에 영화 제목도 없을 것입니다. 이 특별한 경우

는, 당신은 몇 가지를 볼 수 있습니다 실제로
  • http://dbpedia.org/page/Total_Recall
  • 로 리디렉션하는

    • http://dbpedia.org/resource/Total_Recall를 방문하여 DBpedia는 토탈 리콜 (Total Recall)에서 가지고있는 정보를 살펴 형태의 트리플 :

      dbpprop:starring dbpedia:Ronny_Cox 
      dbpprop:starring dbpedia:Arnold_Schwarzenegger 
      
      select ?actorName where { 
          ?film rdfs:label "Total Recall"@en ; 
           dbpprop:starring ?actor . 
          ?actor rdfs:label ?actorName . 
          filter(langMatches(lang(?actorName),"en")) 
      } 
      

      SPARQL results

      즉, 쿼리가 public DBpedia SPARQL endpoint에 연결하기에 적합합니다,하지만 당신은 로컬로 실행하는 경우와 연합하는 service 키워드를 사용하려면 : 당신이 같은 쿼리를 싶어 제안쿼리, 당신은 service <http://dbpedia.org/sparql>와 함께 할 것입니다 : 일반적으로

      prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
      prefix dbpprop: <http://dbpedia.org/property/> 
      
      select ?actorName where { 
          service <http://dbpedia.org/sparql> { 
          ?film rdfs:label "Total Recall"@en ; 
            dbpprop:starring ?actor . 
          ?actor rdfs:label ?actorName . 
          filter(langMatches(lang(?actorName),"en")) 
          } 
      } 
      

      , DBpedia에 사용되는 어떤 클래스의 종류와 속성을 볼 수있는 가장 좋은 방법 중 하나는 그 사실을 악용하는 것입니다 DBpedia resource name standard에서 논의 된 바와 같이 DBpedia는 리소스에 대한 명명 규칙을 가지고 있으므로 위키 백과 문서 XYZ이 주어지면 http://dbpedia.org/resource/XYZ을 검색하고 데이터를 살펴볼 수 있습니다. 온톨로지 클래스 및 속성의 경우 documentation about the ontologybrowse the ontology classes도 볼 수 있습니다. 대화식 쿼리의 경우 public SPARQL endpoint이 매우 유용합니다.

    +0

    내 쿼리 중 하나는 실제로 사용 가능한 속성을 얻는 방법입니다. –

    +1

    온톨로지 문서에 대한 링크로 내 대답을 업데이트했습니다. 속성을 찾는 데있어 관심있는 리소스를 방문하고 실제로 사용 된 속성을 실제로 살펴 보는 것이 가장 유용한 방법이라는 것을 알았습니다. –

    +0

    그래서 서비스 끝점의 경우 "http://dbpedia.org/resource/Total_Recall" –

    관련 문제