как создавать ресурсы с разными именами с помощью программирования (динамически) Ресурс s1, Ресурс s2,,,

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

Resource single_process1 = createResource()

затем для второй строки:

Resource single_process2 = createRessource()

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

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


person Majed Sadi    schedule 08.12.2011    source источник


Ответы (1)


Во-первых, пожалуйста, публикуйте в 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.

person Ian Dickinson    schedule 08.12.2011