Сопоставление двух слов вместе в sparql - PullRequest
0 голосов
/ 28 сентября 2019

Как перечислить награды лауреатов (даные по их ярлыку), для которых описание вклада (данное nobel: мотивация) содержит слово «человек» вместе со словом «мир» (т. Е. Оба слова должны быть там).

Я использую пространство имен bds: search из функцию полнотекстового поиска Blazegraph .После посещения этой ссылки я составил этот запрос Свободный текстовый поиск в sparql, когда у вас есть мультислово и символ scaping

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX bds: <http://www.bigdata.com/rdf/search#>
PREFIX nobel: <http://data.nobelprize.org/terms/>

SELECT ?awards  ?description  
WHERE { 
  ?entity rdfs:label   ?awards  .
  ?entity nobel:motivation ?description  .
   FILTER ( bds:search ( ?description, '"human" AND "peace"' ) ) 
}

Этот запрос возвращает мне следующую ошибку при выполнении, показанную на рисунке. Error Image Как исправить этот запрос и получить желаемый результат?Вы можете взглянуть на спецификацию этого набора данных или загрузить дамп RDF набора данных enter image description here

1 Ответ

0 голосов
/ 29 сентября 2019

Используйте bds: поиск для поиска категории "человек". Затем примените фильтр и включите функцию для "мира".

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX bds: <http://www.bigdata.com/rdf/search#>
PREFIX nobel: <http://data.nobelprize.org/terms/>
PREFIX bif: <http://www.openlinksw.com/schemas/bif#>

SELECT ?awards  ?description  
WHERE { 
  ?entity rdfs:label   ?awards  .
  ?entity nobel:motivation ?description  .
  ?description bds:search "human" .
  FILTER (CONTAINS(?description, "peace"))
}
...