SparQL: заменить предметные URI - PullRequest
0 голосов
/ 14 июня 2019

У нас есть графики, содержащие 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

Этот запрос имеет нулевой результат. Это запрос по умолчанию, который я часто использовал, чтобы получить немного аннотаций для изучения вещей.

...