RDFising данных с помощью SPARQL и SPIN
Я хочу RDFising данных, мне нужно построить с помощью запроса SPARQL (я использую SPIN) объект (книга) с двумя свойствами (название и автор). У всех книг есть "Заголовок", но иногда нет "Автор".
Когда это происходит, он не создает эту "Книгу", и я хочу создать ее с "Заголовком".
Я использую GraphDB, и это запрос:
prefix spif: <http://spinrdf.org/spif#>
prefix pres: <http://example.com/pruebardf/>
CONSTRUCT {
?rdfIRI a pres:Book ;
pres:Author ?author .
}
WHERE {
SERVICE <http://localhost:7200/rdf-bridge/1683716393221> {
?bookRow a <urn:Row> ;
<urn:col:Author> ?author ;
<urn:col:Title> ?title .
}
BIND(IRI(CONCAT("http://example.com/", spif:encodeURL(?title))) AS ?rdfIRI)
}
Есть ли решение? Я могу использовать другой синтаксис SPARQL.
1 ответ
Решение
Использование OPTIONAL
в SERVICE
часть, чтобы шаблон не потерпел неудачу, когда <urn:col:Author>
пропал, отсутствует.
CONSTRUCT
тогда просто не положить в ?rdfIRI pres:Author ?author
тройной, но будет включать ?rdfIRI a pres:Book
,
Если вы хотите установить "автора", когда он отсутствует в данных, посмотрите на использование COALESCE
,