Как я могу определить URL-адрес из семантического веб-URI программно

У меня есть программа, которая сканирует семантические веб-документы, например. РДФ и СОВ.

Он берет найденные URI и помещает их в список для дальнейшей обработки. Однако он также находит URL-адреса, которые являются частью некоторых утверждений (я использую данные Википедии, поэтому обычно это http://dbpedia.org/ontology/wikiPageExternalLink.

Как я могу сказать, что является семантическим веб-URI, а что просто URL-адресом, с такой же небольшой суетой. Я разрабатываю Java и думаю, что если чтение файла занимает больше определенного времени, программа должна просто продолжать работу. Но я не уверен, как это сделать.

Я знаю, что мой вопрос расплывчатый, скажите мне, что более подробно я должен дать. Я не разместил код, потому что не думаю, что это поможет в этом случае.


person Ankur    schedule 13.06.2011    source источник


Ответы (2)


Почему бы не взять просканированную информацию и не поместить [часть] ее в тройное хранилище, а затем использовать 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

Во-первых, важно признать, что URL-адреса являются подмножеством URI. (т. е. http://en.wikipedia.org/wiki/Tim_Berners-Lee URI страницы Википедии о Тиме Бернерсе Ли). Все URI и URL играют важную роль в Semantic Web.

Я полагаю, что большая проблема, с которой вы сталкиваетесь, заключается в том, чтобы решить, какие URI будут давать тройки RDF.

Первый подход заключается в попытке разобрать триплеты из всех URI, с которыми вы сталкиваетесь, например. даже если страница выглядит как HTML, на ней также может присутствовать RDFa. (Я предполагаю, что вы могли бы запросить HTTP только типы MIME RDF, но вы потенциально потеряли бы множество данных RDFa)

Другой подход заключается в предположении, что все объекты свойств http://dbpedia.org/ontology/wikiPageExternalLink не являются не собирается приносить какие-либо интересные факты.

Другой подход заключается в том, чтобы отметить доменные имена/поддомены, которые не публикуют RDF, и игнорировать их.

person Sweet Burlap    schedule 25.07.2012