2017-05-12 17 views
1

는 내가 "메디 케어"가 작동하지 않는 "메디"와 시간에서 용어를 변경 자마자,SPARQL을 사용하여 주어진 용어와 부분적으로 일치하는 rdfs : dbpedia의 레이블을 검색하는 방법은 무엇입니까?

select distinct ?label where 
{ 
    ?concept rdfs:label ?label 
    filter contains(?label,"Medi") 
    filter(langMatches(lang(?label),"en")) 
} 

그러나 "메디"단어가 포함 된 모든 레이블을 검색하기 위해 쿼리를 사용하고 있습니다 아웃. Medicare와 같은 더 긴 단어로 작업하려면 즉, Medicare라는 단어가 들어있는 레이블을 모두 추출해야합니다.

답변

2

쿼리는 DBpedia의 모든 레이블 (반복적으로 많은 수)을 반복하고 String containment check를 적용해야합니다. 이것은 실제로 비싸다.

select count(?label) where 
{ 
    ?concept rdfs:label ?label 
    filter(regex(str(?label),"Medi")) 
    filter(langMatches(lang(?label),"en")) 
} 

두 가지 옵션 :

SELECT DISTINCT ?label WHERE { 
    ?concept rdfs:label ?label . 
    ?label bif:contains "Medicare" 
    FILTER(langMatches(lang(?label),"en")) 
} 
  • 가입일 :

    1. 거장 일부 전체 텍스트 검색 지원이

      심지어 카운트 쿼리는 "추정 시간 초과 오류"로 연결 공용 DBpedia 엔드 포인트는 공유 엔드 포인트이며, 솔루션은 DBpedia da를로드하는 것입니다. 자신의 트리플 스토어에 태워 준다. 거장. 여기에서 최대 값을 조정할 수 있습니다. 예상 실행 시간 초과 매개 변수

  • +0

    안녕하십니까, 저는 실제로 로컬 서버에서 dbpedia를 실행하고 있습니다. 그리고 나는 더 빠른 해결책을 선호 할 것이고, 느린 원인은 나쁜 UX를 의미 할 것이다. 그래서 옵션 # 1을 복사하여 붙여 넣었습니다. 그리고 다시 돌아왔다 : 'Virtuoso 37000 Error SP030 : SPARQL 컴파일러, 5 행 : 'bif : contains'앞에 '? label'구문 오류가 발생한다. SPARQL 쿼리 : define sql : big-data-const 0 # 형식 : text/html sql : signal-void-variables 1을 정의하십시오. SELECT DISTINCT? label WHERE { 컨셉 rdfs : 레이블? 레이블 레이블 bif : "Medicare"를 포함합니다. FILTER (langMatches (lang (? label) ko) } 제발 도와주세요 디버그 :) –

    +0

    아, 미안하지만, 첫 번째 트리플 패턴 이후에 점을 잊어 버렸습니다. 지금 일해야한다. – AKSW