Поиск по имени в файле rdf/n3

Я должен выполнить некоторую фильтрацию в файле turtle/n3, возвращая другой файл того же вида. Основной элемент данных (местоположение), над которым я работаю:

:pt0001
     vcard:category "Poste e Telegrafi"
    ; vcard:fn "Ufficio Bologna 1"
    ; vcard:extended-address "Via Cairoli 9, Bologna BO, Italy"
    ; vcard:latitude "44.504192"
    ; vcard:longitude "11.338661"
    ; vcard:tel "051 243425"
    ; vcard:fax "051 244459"
    ; cs:opening "Mon, Tue, Wed, Thu, Fri: 0800-1330. Sat: 0800-1230."
    ; cs:closing "01-01, 01-06, P, LA, 04-25, 05-01, 06-02, 08-15, 11-01, 12-08, 12-25, 12-26: .".

Я хочу, например, искать элементы (ptxxxx), которые имеют определенное имя, широту или категорию. Мне уже советовали использовать конструкцию в запросе для извлечения троек из rdf, поэтому я могу добавить их в новый график / rdf, который я строю. Дело в том, что если я фильтрую тройки для поиска по (без учета регистра) имени с помощью функции фильтра регулярных выражений, я получаю только одну тройку, которая определяет в этом случае имя, которое я искал. Можно ли, например, искать субъект (ptxxxx), чье имя (предикат) "Ufficio Bologna 1" (объект)?

2 ответа

Решение

Я решил так:

CONSTRUCT {?s ?p ?o}
        WHERE {
                ?s ?p ?o;
                vcard:fn ?name.
                FILTER regex (?name ,"^ufficio bologna 1$", "i")
                }

Если вы хотите получить тройки для субъекта, который имеет именно это имя, вы можете сделать простое описание:

describe ?s where { ?s vcard:fn "Ufficio Bologna 1". }

В противном случае, если вы хотите использовать регулярное выражение, вы можете немного изменить запрос

describe ?s where { ?s vcard:fn ? name. filter (regex(?name, "regex goes here")). }

Несмотря на предостережение, регулярные выражения для больших наборов данных могут быть дорогими. Многие системы предлагают расширения для SPARQL, которые будут полнотекстовым индексировать ваши литеральные значения, которые затем можно будет искать, используя более обычный синтаксис поиска.

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