Почему бы не взять просканированную информацию и не поместить [часть] ее в тройное хранилище, а затем использовать SPARQL для ее запроса? Если это всего лишь шаг в серии обработки, вам не нужно использовать гигантское тройное хранилище, вы можете просто использовать Jena и TDB для простого плоского/файлового хранилища или даже просто моделей в памяти.
Преимущество SPARQL заключается в том, что у вас будет вся необходимая гибкость, чтобы сделать этот список графиком, а затем запросить этот график.
Поскольку некоторые из URI, с которыми вы столкнетесь, являются субъектами, предикатами или объектами, вам действительно нужно просто понять, какие шаблоны графов имеют наибольший смысл для дополнительной обработки. Вам нравится тройка s,p,o, где p=wikiPageExternalLink? Если это так, запросите это в SPARQL, найдите значения объекта и успешно обработайте наборы результатов.
Обратите внимание, что некоторые объекты в этих тройных шаблонах будут строковыми литералами (например, «http://...»), и, возможно, это те, которые вы хотите обрабатывать больше, чем переходить по ссылкам темы в графе dbpedia, например. с, р, с2. Опять же, на помощь приходит SPARQL с isLiteral().
Если это субъект, я думаю, это будет квалифицировать его как «семантический веб-URI», в котором, по крайней мере, должно быть еще несколько утверждений RDF об этом — в отличие от строкового литерала, который представляет собой просто строку некоторого URI без другого значения на графике. Соответствующей функцией будет isIRI, поэтому вы можете разделить найденные URL-адреса на две группы — литералы и IRI.
См. пример в официальной спецификации: http://www.w3.org/TR/rdf-sparql-query/#func-isIRI
SPARQL и, в частности, Jena ARQ, имеют множество функций, фильтров и REGEX, которые можно применять, чтобы сделать его максимально гибким (например, вы можете внести в белый/черный список определенные домены/шаблоны или выполнить некоторые манипуляции со строками, прежде чем продолжить) .
person
Al Baker
schedule
20.06.2011