Как создать ресурсы с разными именами с помощью программирования (динамически) Ресурс s1, Ресурс s2 ,,, - PullRequest
2 голосов
/ 08 декабря 2011

Q1.Используя инфраструктуру Jena и Java, могу ли я создать массив ресурсов, причина, по которой я читаю CSV-файл и создаю ресурсы для каждой строки, предположим, что две строки связаны, поэтому мне нужно сделать это:* затем для второй строки:

Resource single_process2 = createRessource()

вы заметили числа 1, 2, мне нужно создать его (добавить, чтобы он был частью имени ресурса), поэтому позже, потому что два ресурса связаны, поэтомунеобходимо объединить их, ссылаясь на то, что этот объединенный процесс состоит из двух отдельных процессов (ресурсов).Возможен ли массив ресурсов, любой другой вариант?

Q2.как ссылаться на rdf: тип или sio: в Йене

1 Ответ

1 голос
/ 08 декабря 2011

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

У меня небольшие трудности с пониманием вашего вопроса. Если я могу перефразировать:

  • вы обрабатываете файл CSV
  • во время обработки каждая строка файла соответствует одному ресурсу и его свойствам, и вы добавляете соответствующие тройки к своей Jena Model. Одиночный Resource создается как субъект каждой тройки для данной строки
  • впоследствии вы обнаружите, что два предметных ресурса должны относиться к одной и той же вещи (т. Е. Данные из двух строк вашего CSV-файла относятся к одной и той же сущности реального мира)
  • вы хотите объединить тройки из двух ресурсов, чтобы использовать только один предметный ресурс

Если это точное резюме, оно, конечно, немного необычно ... но это ваши данные! В любом случае, вы можете легко объединить операторы из двух ресурсов в один:

Resource r0 = .... ; // the first subject resource
Resource r1 = .... ; // the second subject resource

// we discover that r0 and r1 refer to the same thing, so we 
// want to merge their properties ...

List<Statement> r1Props = r1.listProperties().toList();

for (Statement s: r1Props) {
    // add the property to r0, so <r1 P O> becomes <r0 P O>
    r0.addProperty( s.getPredicate(), s.getObject() );

    // remove the statement about r1
    // once all of r1's triples are removed, r1 is no longer in the Model
    s.remove();
}

В чем я не уверен, так это в том, что это связано с массивами ресурсов. Вам придется объяснить это немного подробнее.

Что касается Q2, вы можете использовать класс com.hp.hpl.jena.vocabulary.RDFS для ссылки на URI в пространстве имен RDFS, а также для RDF, OWL и некоторых других. Чтобы создать свой собственный класс словаря, см. Jena schemagen .

...