Мне нужно сохранить и удалить деревья JSON-LD в тройном хранилище.Эти деревья часто имеют поддеревья, которые представлены как пустые узлы.Их легко преобразовать в RDF и использовать SPARQL для их сохранения.Но когда мне нужно получить / удалить их, невозможно получить все пустые узлы.Я использую следующий запрос, чтобы получить все пустые узлы (но только до 3 уровней):
CONSTRUCT {
<instanceURI> ?p ?o.
?o ?p1 ?o1.
?o1 ?p2 ?o2.
}
WHERE {
<instanceURI> ?p ?o.
OPTIONAL {
FILTER (isBlank(?o))
?o ?p1 ?o1.
OPTIONAL {
FILTER (isBlank(?o1))
?o1 ?p2 ?o2.
}
}
}
В другом вопросе ( Как рекурсивно развернуть пустые узлы в запросе конструкции SPARQL? ) они предлагают использовать DESCRIBE.Но DESCRIBE возвращает больше вещей, чем я хочу.Могу ли я сделать подзапрос к графу DESCRIBE возвращает?Если да, то как?
Этот вариант использования (извлечение / удаление экземпляров JSON-LD с произвольными пустыми узлами) кажется очень распространенным для людей, работающих с JSON-LD.Решение для этого не должно быть трудным для реализации.Я делаю что-то неправильно?Есть ли стандартный способ сделать это?