Как программно узнать URL из URI семантического веба? - PullRequest
2 голосов
/ 13 июня 2011

У меня есть программа, которая сканирует документы семантической сети, например, RDF и OWL.

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

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

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

Ответы [ 2 ]

1 голос
/ 20 июня 2011

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

0 голосов
/ 25 июля 2012

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...