Йена - Как связать ресурс с собственностью? - PullRequest
0 голосов
/ 25 ноября 2018

Я работаю в рамках реализации модели данных Europeana (EDM) для конкретной структуры данных, и у меня возникает проблема, когда я хочу добавить свойство.Например, рассматривая следующий простой пример ( с использованием Apache Jena 3.9 ):

public static void main(String[] args) {
    String NS = "http://my.com/";
    Model model = ModelFactory.createDefaultModel();
    model.setNsPrefix("edm", EDM_TEST.getURI());
    model.setNsPrefix("skos", SKOS.getURI());

    Resource repository = model.createResource(NS + "testing_agent");
    repository.addProperty(RDF.type, EDM_TEST.Agent);
    repository.addProperty(SKOS.altLabel, model.createLiteral("Vasile Alecsandri Museum"));
    repository.addProperty(SKOS.prefLabel, model.createLiteral("Vasile Alecsandri National Museum"));

    Resource providedCHO = model.createResource(NS + "testing_cho");
    providedCHO.addProperty(RDF.type, EDM_TEST.ProvidedCHO);
    providedCHO.addProperty(EDM_TEST.currentLocation, repository);

    StringWriter out = new StringWriter();
    model.write(out, "RDF/XML");
    String result = out.toString();
    System.out.println(result);
}

Результат вроде бы нормальный:

<edm:ProvidedCHO rdf:about="http://my.com/testing_cho">
    <edm:currentLocation>
      <edm:Agent rdf:about="http://my.com/testing_agent">
        <skos:prefLabel>Vasile Alecsandri National Museum</skos:prefLabel>
        <skos:altLabel>Vasile Alecsandri Museum</skos:altLabel>
      </edm:Agent>
    </edm:currentLocation>
</edm:ProvidedCHO>

но это не таквсе в порядке, потому что EDM не разрешает внутренний объект для свойства currentLocation .Итак, мне нужно сгенерировать следующий вывод для свойства currentLocation:

<edm:ProvidedCHO rdf:about="http://my.com/testing_cho">
    <edm:currentLocation rdf:resource="http://my.com/testing_agent"/>
</edm:ProvidedCHO>
<edm:Agent rdf:about="http://my.com/testing_agent">
    <skos:prefLabel>Vasile Alecsandri National Museum</skos:prefLabel>
    <skos:altLabel>Vasile Alecsandri Museum</skos:altLabel>
</edm:Agent>

Как можно отдельно создать ресурс репозитория (Агент) и связать его со свойством currentLocation из предоставленного ресурса CHO как Iобъяснил выше?

1 Ответ

0 голосов
/ 28 ноября 2018

Разница между Jena 3.0.1 и 3.9.0 заключается в том, что выбор по умолчанию RDF / XMl Writer изменился с простого на симпатичный.

Больше возможностей для выбора деталей формата доступно с

RDFDataMgr.write(..,..,RDFFormat.RDFXML_ABBREV)

RDFDataMgr.write(..,..,RDFFormat.RDFXML_PLAIN)

Еще больше возможностей доступно с:

http://jena.staging.apache.org/documentation/io/rdfxml_howto.html#advanced-rdfxml-output

Для созданияочень специфическая XML-схема, вам может понадобиться получить данные и запустить XSLT.

...