如何使用Jena创建OSLC文档?

时间:2014-12-17 11:45:37

标签: java rdf jena

我需要创建包含OSLC名称空间中对象的RDF / XML文档。 例如

<oslc_disc:ServiceProviderCatalog
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:dc="http://purl.org/dc/terms/"  
    xmlns:oslc_disc="http://open-services.net/xmlns/discovery/1.0/"
 rdf:about="{self}">

  <dc:title>{catalog title}</dc:title>
  <oslc_disc:details rdf:resource="{catalog details uri}" />

使用Jena API创建此doc的最简单方法是什么? (我知道Lyo,他们在这个doc中使用JSP: - )

谢谢,Carsten

1 个答案:

答案 0 :(得分:0)

这里有一个完整的例子让你开始。请注意,这将是等效到您想要的XML输出,但可能不相同。例如,属性的顺序可能会有所不同,还有其他方法可以编写相同的内容。

import com.hp.hpl.jena.rdf.model.*
import com.hp.hpl.jena.vocabulary.DCTerms;

public class Jena {

    // Vocab items -- could use schemagen to generate a class for this
    final static String OSLC_DISC_NS = "http://open-services.net/xmlns/discovery/1.0/";
    final static Resource ServiceProviderCatalog = 
        ResourceFactory.createResource(OSLC_DISC_NS + "ServiceProviderCatalog");
    final static Property details = 
        ResourceFactory.createProperty(OSLC_DISC_NS, "details");

    public static void main(String[] args) {

        // Inputs
        String selfURI = "http://example.com/self";
        String catalogTitle = "Catalog title";
        String catalogDetailsURI = "http://example.com/catalogDetailsURI";

        // Create in memory model
        Model model = ModelFactory.createDefaultModel();
        // Set prefixes
        model.setNsPrefix("dc", DCTerms.NS);
        model.setNsPrefix("oslc_disc", OSLC_DISC_NS);

        // Add item of type spcatalog
        Resource self = model.createResource(selfURI, ServiceProviderCatalog);
        // Add the title
        self.addProperty(DCTerms.title, catalogTitle);
        // Add details, which points to a resource
        self.addProperty(details, model.createResource(catalogDetailsURI));

        // Write pretty RDF/XML
        model.write(System.out, "RDF/XML-ABBREV");
    }

}