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,

Другие вопросы по тегам