У нас есть графики, содержащие oa: Аннотации с определенными свойствами. Поскольку я работаю над локальной копией сервера, мне было бы полезно изменить эти URI, чтобы они указывали на localhost. Согласно книге, которую я прочитал, я думал, что это должно работать, но это не так. Кажется, это ничего не меняет. Тем не менее, сервер возвращает 204, я использую порт priting и URL (/ обновление). Так что я определенно должен иметь возможность что-то менять. Нет сообщения об ошибке.
PREFIX oa: <http://www.w3.org/ns/oa#>
DELETE
{ GRAPH ?g {?oldIRI ?p ?o} }
INSERT
{ GRAPH ?g {?newIRI ?p ?o} }
WHERE
{
GRAPH ?g {
?oldIRI a oa:Annotation .
?oldIRI ?p ?o .
}
BIND(
CONCAT("http://localhost:80",
SUBSTR( STR(?oldIRI),
34,
STRLEN(STR(?oldIRI)) )
) AS ?newIRI
)
FILTER(CONTAINS(?oldIRI, "part_of_old_url"))
}
Есть идеи, почему это не дает желаемого эффекта? В книге, которую я использую в качестве ссылки, есть «получатели» для изменения свойств и их значений, но нет примера изменения темы, поэтому я предполагаю, что есть более общая проблема?
Обновление: использование STR ()
Как предлагается в комментариях, я использовал CONTAINS(STR(?oldIRI), "part_of_old_url")
для преобразования oldIRI в строку. Я не полностью осознаю все изменения, но вот что я могу сказать: (У меня есть резервные копии, не волнуйтесь: D)
PREFIX oa: <http://www.w3.org/ns/oa#>
SELECT *
WHERE {
GRAPH ?g {
?iri a oa:Annotation .
}
} LIMIT 100
Этот запрос имеет нулевой результат. Это запрос по умолчанию, который я часто использовал, чтобы получить немного аннотаций для изучения вещей.