Преобразование объекта Java в RDF XML

Я хочу преобразовать объект Java в RDF XML. Я использую Jena API. Я не хочу вызывать какой-либо вызов REST.

В методе REST мы можем написать:

@Produces(OslcMediaType.APPLICATION_RDF_XML)

Таким образом, он отправляет ответ в формате RDF XML.

Я не могу использовать это, потому что я уже в одном методе REST. Я могу вызвать другой вызов REST для преобразования объекта в RDF. Но я не хочу вызывать другой вызов REST.

У кого-нибудь есть другое решение для преобразования объекта Java в RDF XML?


person rathod151    schedule 27.04.2017    source источник
comment
Какая структура сериализации используется Jena? В случае с Джексоном вы можете получить доступ к ObjectMapper и самостоятельно сериализовать содержимое вручную. Я бы попробовал поискать там, но у меня нет опыта работы с Йеной, чтобы точно сказать.   -  person Michael Hibay    schedule 28.04.2017
comment
это в основном дубликат stackoverflow.com/questions/34098348/   -  person Michael    schedule 01.05.2017


Ответы (1)


Вы можете создать свой собственный сериализатор RDF для своего класса и использовать Jena API. Вот очень наивный пример:

public class Person {
    String name;
    int age;
    Person(String name){
        this.name = name;
    }
    String getIRI(){
        return "http://example.com/"+name;
    }
    String serialize(String syntax){
        Model model = ModelFactory.createDefaultModel();
        Resource resource = model.createResource(getIRI());
        // add the property
        resource.addProperty(FOAF.name, name);
        StringWriter out = new StringWriter();
        model.write(out, syntax);
        return out.toString();
    }
}

Чтобы сериализовать класс, вызовите Person p1 = new Person("Noor");. p1.serialize("RDF/XML-ABBREV")

person Noor    schedule 28.04.2017