비슷한 제목을 가진 this question에 표시된 것처럼 이름의 일부를 알고 dbpedia 리소스를 검색하고 싶습니다. 저는 SPARQL과 같은 경우에 초보자입니다.하지만 저자가 "루마니아"를 검색 할 때 질문에있는 예제가 도움이되었습니다. 답변을받은 사람이 Sparql 요청으로이 일을 수행하도록 요청했습니다. 좋았지 만 여기에 문제가있다. SPARQL을 사용하여 문자열 이름으로 DBpedia 리소스를 검색하고 해당 유형을 모르는 경우
는 예를 들어, 그들은 이미 루마니아, 나라입니다 WHERE 절에 따라서?c a dbpedia-owl:Country ;
것을 "알고 있었다". 되는 전체 SPARQL 요청
SELECT ?c
WHERE {
?c a dbpedia-owl:Country ;
foaf:name "Romania"@en .
FILTER NOT EXISTS {?c dbpedia-owl:dissolutionYear ?y}
}
그러나,이 질문은 아주 완전히 따라서, "이름"자원의 실제 이름, 또는의 한 부분 인의 이름으로 모든 자원을 찾고, 우리의 필요에 응답하지 않습니다 그것의 (rdf :) 유형에 관계없이 . 목표는 이름이나 그 일부를 아는 "모든 것"을 검색하는 것입니다.
나는 너희들에게이 질문을하기 전에 몇 가지 조사를 해왔다. 그리고 나는 "이름의 일부"문제가 bif 함수 (sparql을 따르지 않기 때문에 나쁜 방법)로 해결 될 수 있다는 것을 이미 알고있다. CONTAINS 절을 사용했지만 사용법을 보여주는 예제를 찾을 수 없었습니다.
이제 dbpedia 자원 중에서 검색 할 "단어"가 있다고 가정 해 봅시다.이 단어는 일부 사용자의 입력이 될 것입니다. 그리고 그것을 "INPUT"이라고 부르 자.
- 이 유형 Dbpedia 자원을 설명 있나요 :
SELECT ?something WHERE { ?something a (dbpedia Resource). CONTAINS(?something,"INPUT") }
내 주요 질문에 대한 두 가지 주요 측면이다
요청, 나는 같을 것이다, 상상? 나는 그것이 온톨로지 또는 다른 것에 있다고 생각하지 않는다. 모든 리소스 중에서 일치하는 것을 찾을 수 있도록 검색하고 싶습니다.
- 제공 할 특정 이름 또는 일부 문자열. 나는 FILTER 옵션을 고려했다. 그러나 그것은 모든 리소스를 얻는 것을 의미 할 것이다. 그런 다음, 리트리 티가 끝나면 이름으로 필터링한다.
그래서이 "마스터 쿼리"는 그 이름이나 그 일부를 제공하여 리소스를 얻는 사람을 알고 있습니까? ("Obama"를 제공하고, Barrack뿐만 아니라 Michelle을 위해 결과를 얻는 한 예).
미리 감사드립니다.
사실 "트릭"(dcterms : subject)을 통과해야만하는 것이 부끄럽지 만 내 요청은 dbpedia 리소스에만 해당됩니다. 그래서 당신의 대답은 절대적으로 놀랍고 두통을 불러 일으켰습니다. 정말 고맙습니다. bif 함수에 관해서는 SPARQL을 준수하지 않기 때문에 CONTAINS를 찾은 이유입니다.하지만이 절을 사용하는 예제를 여전히 찾고있을 것입니다. 다시 답변 해 주신 dbpedia & rdf와의 여행은 이제 막 시작되었지만 필요한 시작을 내게 주셨습니다. –
이 접근법에는 몇 가지 제한 사항이 있습니다. 공백은 허용되지 않습니다. 따라서 "Barak Obama"(또는 프로그래밍 방식으로, 당신이 만난 이름 문자열)에 대한 표준 엔티티 표현을 가져 오려고하면 bif : contains를 사용할 수 없습니다. 그리고 나서 URL 인코딩이 가능할까? '? label bif : "barak % 20obama"포함. 주사위가 없습니다. 구성 부분을 캡처하는 두 개의 별개의 문장일까요? 아니. :( '거장 37000 오류 SP031 : SPARQL 컴파일러 : 하나 이상의 BIF는 : 어떤 아이디어를 (포함) 또는 단일 그룹 '에서'$ 라벨 '변수에 대한 유사한 조건 당신이 할 수있는 – sands
@sands 라벨 BIF을? : 'barak obama' '가 포함되어 있습니다 (추가 따옴표에 유의하십시오.) – MrM