2013-05-26 6 views
1

내 질문에 대한 답변은 my first question about SPARQL here입니다.여러 리소스를 참조하는 SPARQL 쿼리를 작성하는 방법

마운틴 개체에 대한 내 SPARQL 쿼리 결과는 here입니다.

이러한 결과에서 나는 특정 object resource을 골랐습니다. 이제 선택한 Mountain 객체에 대해 "is dbpedia-owl : highestPlace of"레코드를 가져 오려고합니다.

즉, 이 산이 가장 높은 곳의 이름은입니다.

이것은 그림과 같이 복잡합니다. 필요한 구문을 모르기 때문에뿐만 아니라 여기에도 두 개의 객체가 있습니다.

  • 그들 중 하나는 "place"유형의 Mont Blank Massif입니다.
  • 다른 하나는 "산맥"유형 인 Western Alps입니다. 원하는 기록입니다.

위의 레코드 # 2가 필요하지만 1이 아닌 레코드가 필요합니다. 1 또한 관련이 있지만 때로는 동일한 패턴을 따르지 않습니다. 때로는 기록이 YAGO 유형 인 것처럼 보이기 때문에 완전히 오도 할 수 있습니다. 안전을 위해 유형 불일치가있을 때마다 해당 레코드를 폐기하기 만하면됩니다.

"이 dbpedia-owl : highestPlace가"이되도록 내 SPARQL 쿼리를 구성하고 유형을 필터링 할 수 있습니까?
정말 명확하지 않다 필터 :

답변

4

이 쿼리를 사용할 수 있습니다, 귀하의 예제에서 Mont_Blanc_massif 코멘트 후 dbpedia-owl:Placedbpedia-owl:MountainRange

select * where { 
    ?place dbpedia-owl:highestPlace :Mont_Blanc. 
    ?place rdf:type dbpedia-owl:MountainRange. 
} 

run query

편집 둘 것을 그러나주의 필터링하려는 항목 (yago?)을 기술적으로 필터링하면 다음과 같이 필터링 할 수 있습니다.

select * where { 
    ?place dbpedia-owl:highestPlace :Mont_Blanc. 
    ?place rdf:type dbpedia-owl:MountainRange. 
    FILTER NOT EXISTS { 
    ?place ?pred ?obj 
    Filter (regex(?obj, "yago")) 
    } 
} 

URL의 'yago'와 함께 object의 결과가 필터링되어 필터링됩니다.

+0

: 당신은 그냥 범위의 가장 높은 곳에있는 산을 검색 할 경우 이전 질문에서 부품없이,이 같은 쿼리를 사용할 수 있습니다.결과를 필터링하는 방법에 관한 모든 조명이 있습니까? –

+0

감사합니다. 그러나 나가고 싶지 않은 것은 야고뿐입니다. 나는 산 범위 종류에 속하지 않는 무엇이든을 멀리 원한다. –

+0

첫 번째 쿼리는 이미이를 수행합니다. 여기에는 '산맥'유형의 * ONLY * 결과 만 포함됩니다. – kr1

1

이전 대답의 결과를 확장, 해당 쿼리는이 적어도 하나의 묘사 (또는 다른 패턴이 일치하지 않을 영어 초록과 산을 선택

select * where { 
    ?mountain a dbpedia-owl:Mountain ; 
      dbpedia-owl:abstract ?abstract ; 
      foaf:depiction ?depiction . 
    ?range a dbpedia-owl:MountainRange ; 
     dbpedia-owl:highestPlace ?mountain . 
    FILTER(langMatches(lang(?abstract),"EN")) 
} 
LIMIT 10 

SPARQL Results

것) 그리고 산이 가장 높은 산맥이있는 곳. 올바른 표시된

select * where { 
    ?mountain a dbpedia-owl:Mountain . 
    ?range a dbpedia-owl:MountainRange ; 
     dbpedia-owl:highestPlace ?mountain . 
} 
LIMIT 10 

SPARQL results

+0

지금 실행해야합니다. 나중에 업데이트됩니다. 실제로 산 봉우리의 대부분을 얻는 데 문제가 있습니다. 조금 더 조사해야합니다 ... –

+0

몽블랑 (Mont Blanc) 자원을 살펴보면 다음과 같은 속성이 있습니다 : "is dbpedia-owl : highestPlace of "- 그것이 내가 필요한 것입니다. 몽블랑은 일부 범위에서 가장 높은 봉우리 다. 그 범위 이름이 필요해. 외래 키의 종류. 그리고 그것이 산맥 (Mountain Range)이 아닌 장소 (Place) 또는 물건 (Thing)이 아닌 경우에만 필요합니다. –

+0

내 이전 설명을 설명하기 : 내 문제는 [몽블랑] (http://dbpedia.org/page/Mont_Blanc) 페이지를 읽는 중 "dbpedia-owl : highestPlace of dbpedia : Western_Alps ..."라는 것을 보았습니다. '? mountain dbpedia-owl : highestPlace? range'로 쿼리를 작성하고있었습니다. 그것은 물론 뒤로입니다. 그것은'? range dbpedia-owl : highestPlace? mountain' 일 필요가있었습니다. –

관련 문제