Использование семантических онтологий для преобразования реляционной базы данных в RDF

В последнее время я пытался описать данную RDB (реляционную базу данных) с конкретными семантическими онтологиями, используя Virtuoso. Онтологии, которые я хочу использовать: dc, foaf, dct, bibo, cito (я новичок в этом, поэтому я не совсем понял, являются ли dc и dct одним и тем же).
Я следовал этому руководству о том, как это сделать: http://virtuoso.openlinksw.com/whitepapers/relational%20rdf%20views%20mapping.html
Моя проблема в том, что в этом руководстве классы создаются с нуля, а мне нужно использовать существующие. К сожалению, мне также не разрешено публиковать ссылки на онтологии.
В частности, я хочу описать:

Таблица авторов (автор опубликованной статьи), в которой есть следующие столбцы:

AuthorID, AuthorName, AuthorMiddleName, AuthorSurname, AuthorURL, AuthorEmail, Department

Таблица ключевых слов (ключевые слова публикации) со столбцами:

PublicationID, Keyword (тип строки), KeywordOrder (тип Integer),

Таблица публикаций со столбцами:

PublicationID, PublicationTitle, MediaType (тип строки), PublicationType (целое число), MediaTitle, MediaPublisher, MediaEditors, MediaVolInfo, PublicationYear, PublicationNoOfPages, PublicationPagesInMedium, PublicationFileName, PublicationComments, PublicationRelatedKecLationURLation (тип PublicationRelatedURLation), PublicationRelatedURLation (Тип публикации) (тип Integer), DisplayOnWeb (тип Integer)

Таблица ссылок (ссылки на публикации) со столбцами:

RefID, RefPaperID, RefDetails, RefYear

Таблица прав (права публикации) со столбцами:

PublicationID, AuthorID, AuthorOrder

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

@prefix dc:      <http://purl.org/dc/elements/1.1/> .
@prefix db:      <http://lpis.csd.auth.gr/> .
@prefix foaf:    <http://xmlns.com/foaf/0.1/> .
@prefix cito:    <http://purl.org/net/cito/> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix dct:     <http://purl.org/dc/terms/> .
@prefix bibo:    <http://purl.org/ontology/bibo/> .
@prefix owl:     <http://www.w3.org/2002/07/owl#> .
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
@prefix map:     <http://lpis.csd.auth.gr#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix vocab:   <http://localhost:2020/vocab/resource/> .
@prefix atr: <http://localhost:8890/rdfv_pt/schemas/authors#> .
@prefix kwrd: <http://localhost:8890/rdfv_pt/schemas/keywords#> .
@prefix pub: <http://localhost:8890/rdfv_pt/schemas/publications#> .
@prefix ref: <http://localhost:8890/rdfv_pt/schemas/references#> .
@prefix rig: http://localhost:8890/rdfv_pt/schemas/rights#> .

pub:Publication a rdfs:Class 
rdfs:label "Publication" ;
rdfs:comment "Publication Class" .

pub:PublicationID a dc:identifier .

pub:PublicationTitle a dc:title .

pub:MediaType a rdf:Property ;
rdfs:domain pub:Publication;
rdfs:range xsd:string ;
rdfs:label "Media type" .

Вопрос 1:

Итак, это всего лишь фрагмент, но мой вопрос здесь в том, как я могу выразить, что Публикация является классом существующей онтологии? Как вы можете видеть выше, я определяю с нуля класс Publication.

Вопрос 2 (более важный):

Как вы можете видеть в руководстве, каким-то образом таблицы, которые были импортированы в виртуозном инструменте, были сопоставлены с определенным URL-адресом. Однако мне не удалось найти URL-адрес каждой таблицы, которую я импортировал в виртуоз, и я просто поместил несколько URL-адресов-заполнителей (это URL-адреса localhost). Как я могу узнать URL-адрес каждой из таблиц, импортированных в виртуоз?

PS. Любая информация была бы чрезвычайно полезной, спасибо.

PPS. Это мой первый пост, так что прошу прощения за форматирование, если оно неправильное.


person sokras    schedule 02.06.2014    source источник


Ответы (2)


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

person TallTed    schedule 02.07.2014

Это может быть слишком широко, поскольку вы задали несколько разных вопросов и на самом деле не предоставили достаточно информации, чтобы дать нам четкое представление о том, что именно вы пытаетесь сделать. Тем не менее ...

Вопрос 1:

Итак, это всего лишь фрагмент, но мой вопрос здесь в том, как я могу выразить, что «Публикация» - это класс существующей онтологии? Как вы можете видеть выше, я определяю с нуля класс «Публикация».

Если вы делаете это в простом RDF (не используя OWL или какой-либо другой язык онтологий), вы просто используете URI класса Publication из онтологии. Например, если вы описываете какой-то ресурс http://.../pub73 из своих данных, а класс публикации в некоторой онтологии - http://publication-ontology/Publication, вы просто говорите:

<http://.../pub73> rdf:type <http://publication-ontology/Publication>

Если вы создаете онтологию OWL, вы также должны включить оператор owl:imports, чтобы указать, что вы импортируете http://publication-ontology/ (или что-то еще, что онтология IRI этой онтологии), чтобы получить все соответствующие аксиомы объявления.

Вопрос 2 (более важный):

Как вы можете видеть в руководстве, каким-то образом таблицы, которые были импортированы в виртуозном инструменте, были сопоставлены с определенным URL-адресом. Однако мне не удалось найти URL-адрес каждой таблицы, которую я импортировал в виртуоз, и я просто поместил несколько URL-адресов-заполнителей (это URL-адреса localhost). Как я могу узнать URL-адрес каждой из таблиц, импортированных в виртуоз?

Обратите внимание, что в руководстве есть раздел:

Ключевые шаги

На основе описанного выше процесса сопоставления были определены некоторые из ключевых требований:

  • Определение IRI класса RDF для каждой таблицы
  • Построение предметного IRI для каждого значения столбца первичного ключа
  • Построение предиката IRI для каждого неключевого столбца

Я не особенно знаком с Virtuoso, но не описываю этот процесс в более позднем разделе этого руководства, Создание IRI из первичных ключей и Шаблоны четырехъядерных карт и четырехъядерное хранилище ? Тем не менее, похоже, что они начинают с показа предполагаемой модели данных на первом рисунке (ориентированный граф), а затем пишут некоторый RDFS для ее описания, который включает класс объявления, например (листинг 1):

prd:Product a rdfs:Class ;
  rdfs:label "Product" ;
  rdfs:comment "An OpenLink product" .

Позже они определяют в листинге 5 сопоставление, которое определяет, как вы начнете получать экземпляры этого класса из автоматического сопоставления:

graph <http://localhost:8890/rdfv_demo/testdata/products#>
subject prd:product_iri(OPLWEB.DBA.PRODUCT.PRODUCT_ID)
predicate rdf:type
object prd:Product

Здесь используется функция prd:product_iri, определенная в листинге 3:

sparql

prefix prd: <http://localhost:8890/rdfv_demo/schemas/product#>
create iri class prd:product_iri "http://localhost:8890/rdfv_demo/testdata/products#%s"
    (in product_id varchar not null) .

Чтобы утверждать, что строки ваших данных соответствуют экземплярам некоторого другого класса, вы должны просто использовать URI этого класса в аналоге листинга 5. Например, чтобы создать объекты типа bibo:Document, вы должны сделать что-то вроде:

prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix bibo: <…>

graph <…>

subject …
predicate rdf:type
object bibo:Document
person Joshua Taylor    schedule 02.06.2014
comment
как указано в tutorail, я написал код о создании IRI и шаблонов Quad Map, но еще не тестировал (буду). Но, как вы сказали, в листинге 5 они определяют отображение и говорят: graph ‹localhost: 8890 / rdfv_demo / testdata / products # ›. Это просто новая ссылка, которую они просто делают туда, где они хотят сохранить график, или это уже существующая ссылка, которую я должен найти и использовать для своих собственных таблиц? Тот же вопрос касается sparql, в котором объявлен класс iri. - person sokras; 04.06.2014
comment
Также то, что я пытаюсь сделать с классом публикации, - это использовать простой RDF, который может быть импортирован позже виртуозно через файлы .n3, чтобы описать мой новый класс с использованием существующих онтологий, таких как bibo, cito, dc и т. Д. Надеюсь, это поможет больше: / - person sokras; 04.06.2014
comment
Я не являюсь пользователем Virtuoso, поэтому я не использовал эту технику отображения. В руководстве также говорится, что в будущем все может измениться, поэтому я думаю, вы должны отнестись ко всему с недоверием. Тем не менее, похоже, должен ли это быть существующий график или он будет создавать график для вас, должно быть легко проверить. Попробуйте использовать его с именем, которое в настоящее время не называет граф, и посмотрите, создается ли граф. - person Joshua Taylor; 04.06.2014