Лучший способ создать конечную точку SPARQL для СУБД (база данных MySQL) - PullRequest
4 голосов
/ 23 мая 2010

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

У меня есть СУБД (точнее, MySQL). Я разработал его с учетом идей семантической сети, т.е. у меня есть информация, хранящаяся в виде объектов, предикатов и классов, которые определяют объекты. В свою очередь, все объекты связаны друг с другом, хотя операторы субъекта формы -> предикат -> объект (где субъекты из таблицы объектов).

Я хочу иметь возможность запрашивать другие тройные хранилища RDF из моего приложения и разрешать другим тройным хранилищам запрашивать мои данные. Можно ли что-то «настроить», чтобы это было возможно?

Я посмотрел на Йену. Использование Jena, по-видимому, означает, что я должен использовать его как приложение для хранения данных, а не MySQL - единственная проблема с этим заключается в том, что я включил новую концепцию под названием категория (которую я не считаю частью языков семантической сети). Я буду использовать категории, чтобы помочь с отображением информации (они не имеют никакого другого значения), но использование Jena означает, что я не могу организовать предикаты по категориям для более удобного просмотра.

Я использую Java, поэтому предпочтителен JAVA API.

Также возможно, что я неправильно понял цель Йены, и, возможно, это может быть полезным, но я не уверен, как.

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

Ответы [ 2 ]

4 голосов
/ 25 мая 2010

Я не уверен, что вы подразумеваете под "новой концепцией под названием категория", может быть, вы можете привести пример?

Если вы имеете в виду, что хотите добавить дополнительные метаданные, возможно, в качестве способа организации информации в пользовательском интерфейсе, нет необходимости расширять языки семантической сети или системы хранения - они уже могут делать то, что вы хотите.

Предположим, у вас есть данные для школы из набора школьных данных правительства Великобритании (для краткости используется кодировка Turtle):

@prefix sch-ont:  <http://education.data.gov.uk/def/school/>.
<http://education.data.gov.uk/id/school/135412>
a sch-ont:School;
sch-ont:establishmentStatus 
    <http://education.data.gov.uk/def/school/EstablishmentStatus_Open>;
sch-ont:MSOA <http://statistics.data.gov.uk/id/msoa/E02000001>;
sch-ont:establishmentName "Guildhall School of Music and Drama";
...

Вы можете напрямую запросить эти данные с конечной точки SPARQL или загрузить данные и сохранить их локально в своем собственном тройном хранилище. В любом случае, вы можете свободно добавлять дополнительную информацию, полезную для ваших пользователей. Например:

@prefix ankurs-app: <http://ankur.org/example/app/vocab/display#>.
<http://education.data.gov.uk/id/school/135412> 
        ankurs-app:category ankurs-app:wkdCool.

Вы можете сохранить эту новую тройку на том же графике, что и загруженные данные, или вы можете сохранить ее на отдельном именованном графике, чтобы указать, что эта информация имеет происхождение, отличное от исходных данных. В любом случае, тогда просто запросить его программно из Jena или через запрос SPARQL.

Эффективное создание макета для запроса трехсцентных данных без схемы - это хорошо изученная и сложная проблема. Большинство платформ RDF, в том числе Jena, имеют хорошо оптимизированный код для запроса и обновления троек из собственных схем баз данных. У вас должны быть очень веские причины для создания собственного реляционного макета таблицы:)

Если вам действительно нужно взять существующую схему реляционных таблиц и сопоставить ее с моделью RDF Jena, посмотрите D2RQ .

3 голосов
/ 23 мая 2010

Почему вы просто не использовали тройной магазин для хранения всех ваших данных? Если вы используете тройное хранилище с конечной точкой SPARQL , тогда у вас будет веб-интерфейс, доступный для SPARQL. Точно так же многие другие наборы данных в Интернете представлены как конечные точки SPARQL и доступны через HTTP.

Существует много тройных хранилищ, доступных с постоянным хранилищем, как в дБ, так и в других случаях (Jena + SDB, Mulgara, Virtuoso, Oracle и т. Д.). Вы, конечно, могли бы расширить Mulgara через их средства распознавания для поддержки запросов к вашей пользовательской базе данных, но я думаю, что это, вероятно, большая работа для не слишком большой реальной стоимости.

Я уверен, что вы могли бы использовать существующие концепции для обработки вашего представления о категориях в RDF или, возможно, наслоить что-то поверх Jena.

...