#rdf #semantic-web #rdfa
#rdf #семантическая сеть #rdfa
Вопрос:
Мне было интересно, как используется RDFa. Более конкретно, если семантическая сеть данных состоит из троек в RDF, как потребитель содержимого RDFa использует эти данные? Обязательно ли его преобразовывать с помощью такого инструмента, как GRDDL? Или существуют другие методы получения семантических данных с веб-сайтов RDFa?
Спасибо, Брюс
Ответ №1:
Один из способов — использовать анализатор RDFa для извлечения троек из документа RDFa, а затем обработать их в вашем приложении. я полагаю, это то, что Google и co делают в своих поисковых системах.
В качестве альтернативы вы можете указать хранилищу SPARQL (либо в памяти, либо постоянному) загрузить документ либо с помощью его API, либо с помощью команды загрузки SPARQL 1.1, а затем использовать запросы SPARQL для доступа к данным. Это также позволит вам выполнять запросы ко многим документам одновременно.
Я бы, вероятно, не советовал пытаться обрабатывать тройки напрямую, если ваше приложение или данные не очень просты.
Ответ №2:
Существует множество способов доступа к данным RDF. Веб-сайты, такие как dbpedia, например, имеют конечную точку sparql, поэтому вы напрямую запрашиваете тройки на своего рода языке базы данных. Это довольно удобно.
Иногда вы также можете получить rdf напрямую и проанализировать его с помощью фреймворков, таких как Jena (Java).
Ответ №3:
RDF — это не что иное, как граф, соединяющий узлы (обычно ресурсы) с другими узлами (другими ресурсами или литералами) через именованные ребра, но с изюминкой. Границы могут быть выведены с помощью логики, что означает, что вы можете получить ответы на вопросы, даже если вы никогда не приводили ответ дословно. Механизм вывода достаточно умен, чтобы получать эти ответы из того, что он знает о системе, и того, что он знает о логике того, что он описывает. Пример: если указать, что A является материнской для B, механизм вывода может сделать вывод, что у B есть родительский элемент A. Вы никогда не указывали реберное соединение B -- hasParent -> A
, но вы указали это A -- motherOf -> B
, и вы также указали, что hasParent
и motherOf
являются обратными.
Получив свои данные, вы можете задавать вопросы механизму базы данных / вывода. По сути, эта операция представляет собой поиск изомопризмы в подграфе. Ваш запрос представляет собой график, и ваша база данных содержит огромный график со всеми ресурсами, соединенными именованными ребрами. Задача базы данных — найти те части огромного графика, которые соответствуют (изоморфны) вашему запросу, учитывая также особенности каждого ребра и узла, а не только их взаимосвязь.
Для чего это используется? много чего. Вы можете создавать очень мощные вещи с помощью этой модели данных. То, что тривиально для понимания, — это думать о социальных сетях: люди (ресурс, узел графа), связанные отношениями (friendOf) и описываемые (isAged, LivesIn). С помощью запроса вы можете найти всех 23-летних людей, имеющих по крайней мере трех подруг женского пола и живущих в Париже.