Проблема поиска имен с пробелами в SPARQL-запросах в R - PullRequest
1 голос
/ 03 февраля 2020

Я использую приведенный ниже код для запроса полов по FOAF-связанным данным. Функция работает, когда я ищу 'Лук ie', но не 'Дэвид Боу ie'.

sparql_foaf <- function(term) {
  endpoint <- "http://live.dbpedia.org/sparql"
  prefix <- c("db","http://dbpedia.org/resource/",
              "rdfs","http://www.w3.org/2000/01/rdf-schema#",
              "foaf","http://xmlns.com/foaf/0.1/")
  query <- paste0("
      SELECT str(?lbl) as ?names_r, str(?gender) as ?gender WHERE {
        ?sub a foaf:Person .
        ?sub rdfs:label ?lbl .
        FILTER regex(?lbl, 'Bowie')
        FILTER(langMatches(lang(?lbl), 'en'))
        OPTIONAL {?sub foaf:gender ?gender}
        }
      LIMIT 1")
  SPARQL(endpoint,query,ns=prefix)$results
}

Проблема заключается в том, что Лук ie работает

FILTER regex(?lbl, 'Bowie')

А Дэвид Боу ie не

FILTER regex(?lbl, 'David Bowie')

Проблема, скорее всего, проста, и я упускаю из виду библиотеку SPARQL. Тем не менее, запрос работает должным образом в среде запроса: https://api.triplydb.com/s/r8cBeIuo

Не хватает ли какой-либо техники включения символов для пробелов в библиотеке SPARQL R?

1 Ответ

0 голосов
/ 03 февраля 2020

Используя информацию в комментарии ASKW и, следовательно, удаляя «требование о персонале», мы видим этот результат:

sparql_foaf <- function(term) {
    endpoint <- "http://live.dbpedia.org/sparql"
    prefix <- c("db","http://dbpedia.org/resource/",
                "rdfs","http://www.w3.org/2000/01/rdf-schema#",
                "foaf","http://xmlns.com/foaf/0.1/")
    query <- paste0("
      SELECT str(?lbl) as ?names_r, str(?gender) as ?gender WHERE {
                ?sub rdfs:label ?lbl .
        FILTER regex(?lbl, 'Bowie')
        FILTER(langMatches(lang(?lbl), 'en'))
        OPTIONAL {?sub foaf:gender ?gender}
        }
      LIMIT 100")
    SPARQL(endpoint,query,ns=prefix)$results
}
grep("David", sparql_foaf (1)[[1]] )
 [1]  4  5  6  9 10 11 12 33 40 41 42 43 46 47 48 50 55 59 63 69 71 73 74 75 78 83
[27] 85 91 96 97

И:

sparql_foaf (1)[[1]][4]
[1] "Albums produced by David Bowie"
...