Почему бы не взять вашу просканированную информацию и не поместить ее в тройное хранилище, а использовать 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, которые можно применять, чтобы сделать его максимально гибким (например, возможно, вы хотите добавить в белый / черный список определенные домены / шаблоны или выполнить некоторые манипуляции со строками прежде чем продолжить).