заполнить существующую онтологию из CSV-файла с помощью Jena - PullRequest
1 голос
/ 04 декабря 2011

Как прочитать онтологию (файл совы) с помощью jena и заполнить эту онтологию (ontModel) из файла CSV, а затем записать заполненную модель OntMl в файл OWL

1 Ответ

3 голосов
/ 05 декабря 2011

Ваш вопрос состоит из трех частей:

  • чтение файла OWL в Jena Model
  • , преобразование файла CSV в RDF
  • с записьюсодержимое Jena Model в файл

Первый и третий из них просты с Jena (см. методы Model.read() и Model.write() и FileManager для дополнительного удобстваподдержка чтения из разных мест).

Вторая часть хитрая.Как правило, при преобразовании файла CSV в RDF мы предполагаем, что каждая строка представляет один ресурс RDF и его свойства.Вам нужно выполнить три задачи:

  1. Определение URI, представляющего ресурс, на основе некоторого ключа в строке данных
  2. Определение URI свойства RDF, представляющего значениеданного столбца
  3. Отображение каждого значения столбца в соответствующий URI ресурса или литеральное значение.

Например, рассмотрим следующий CSV:

id,name,age,occupation
2718,fred,107,ninja

Мыможно использовать первую строку CSV, чтобы предложить имена предикатов RDF.foaf:name и foaf:age будут подходящими вариантами для первых двух столбцов, но нам может понадобиться новый предикат в нашем пространстве имен для третьего столбца http://example.com/vocab#occupation.URI ресурса будет основан на ключе данных, в данном случае в столбце id, предполагая, что URI для ресурса, обозначенного в первой строке, будет http://example.com/data/employee/2718.Наконец мы должны отобразить данные.Имя - это просто строка, возраст - это целое число, а род занятий - это ресурс.С учетом этого выбора мы можем получить вывод, подобный следующему:

<http://example.org/data/employee/2718>
    a foaf:Person;
    foaf:name "fred";
    foaf:age "107"^^xsd:integer;
    example_com:occupation <http://dbpedia.org/resource/Ninja>.

Рабочий проект W3C R2RML определяет стандартизированный язык отображения для выполнения таких переводов.Доступны различные реализации R2RML .Конечно, если ваше отображение достаточно стабильно, было бы совершенно просто написать код для выполнения перевода из CSV для ваших конкретных входных данных.

...