Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ApacheJena-关于生成RDF的问题_Java_Jena_Semantic Web_Apache Jena - Fatal编程技术网

Java ApacheJena-关于生成RDF的问题

Java ApacheJena-关于生成RDF的问题,java,jena,semantic-web,apache-jena,Java,Jena,Semantic Web,Apache Jena,我试图用ApacheJena制作一个RDF文档,其中我想要一些关于博物馆的信息。我制作资源和模型,但当我打印出最终输出时,它会将所有博物馆的属性输入到第一个博物馆资源中 我在那段代码中做错了什么?(输出在底部) 这是Jena RDF生成器: public class RDFTesting2 { public static void main(String[] args) { MuseInfo info = new MuseInfo(); ArrayList

我试图用ApacheJena制作一个RDF文档,其中我想要一些关于博物馆的信息。我制作资源和模型,但当我打印出最终输出时,它会将所有博物馆的属性输入到第一个博物馆资源中

我在那段代码中做错了什么?(输出在底部)

这是Jena RDF生成器:

public class RDFTesting2 {
    public static void main(String[] args) {
        MuseInfo info = new MuseInfo();
        ArrayList<HashMap<String, String>> rdfData = info.getMuseInfo();
        StringWriter out = new StringWriter();
        String outStr = "";

        String ns                   = "http://opendata.cs.pub.ro/resource/";
        String nsVCard      = "http://www.w3.org/2006/vcard/ns#";
        String nsProp           = "http://opendata.cs.pub.ro/property/";
        String nsDbPedia    = "http://dbpedia.org/ontology/";

        Model model = ModelFactory.createDefaultModel();
        model.setNsPrefix("vCard", nsVCard);
        model.setNsPrefix("opendata", nsProp);
        model.setNsPrefix("dbPedia", nsDbPedia);

        for (int i = 0; i < rdfData.size(); i++) {
            String museId = rdfData.get(i).get("id");

            Resource museContacts       = model.createResource(ns + "contacts");
            Resource museContact        = model.createResource(ns + "contact");
            Resource museLocation       = model.createResource(ns + "location");
            Resource museInfo               = model.createResource(ns + "info");

            Property contactProp    = model.createProperty(nsProp + "contacts");
            Property contactInfo    = model.createProperty(nsProp + "contact");
            Property locationInfo   = model.createProperty(nsProp + "location");
            Property genInfo            = model.createProperty(nsProp + "info");
            Property contactPerson  = model.createProperty(nsDbPedia + "contactPerson");

            Resource museum = model.createResource(ns + "museum_" + museId + "/");

            museContact
                .addProperty(VCARD2.hasTelephone, rdfData.get(i).get("telefon"))
                .addProperty(contactPerson, rdfData.get(i).get("persoana contact"));

            museLocation
                .addProperty(VCARD2.hasLocality, rdfData.get(i).get("localitatea"));

            museInfo
                .addProperty(VCARD2.hasUID, rdfData.get(i).get("id"))
                .addProperty(VCARD2.hasTitle, rdfData.get(i).get("denumire"), "ro");

            model
                .add(museContacts, contactInfo, museContact)
                .add(museContacts, locationInfo, museLocation)
                .add(museum, contactProp, museContacts)
                .add(museum, genInfo, museInfo);
        }
        model.write(out, "RDF/XML");

        String result = out.toString();
        model.removeAll();                          // Curata modelul
        outStr += result;
        out.getBuffer().setLength(0);       // Curata bufferul

        System.out.println(outStr);
    }
}
公共类RDFTesting2{
公共静态void main(字符串[]args){
MuseInfo info=新的MuseInfo();
ArrayList rdfData=info.getMuseInfo();
StringWriter out=新建StringWriter();
字符串outsr=“”;
字符串ns=”http://opendata.cs.pub.ro/resource/";
字符串nsVCard=”http://www.w3.org/2006/vcard/ns#";
字符串nsProp=”http://opendata.cs.pub.ro/property/";
字符串nsDbPedia=”http://dbpedia.org/ontology/";
模型模型=ModelFactory.createDefaultModel();
型号:setNsPrefix(“vCard”,nsVCard);
model.setNsPrefix(“opendata”,nsProp);
setNsPrefix(“dbPedia”,nsDbPedia);
对于(int i=0;i
这是博物馆信息的类生成器:

public class MuseInfo {
    public ArrayList<HashMap<String, String>> getMuseInfo() {
        ArrayList<HashMap<String, String>> rdfData = new ArrayList<HashMap<String, String>>();
        HashMap<String, String> hm;

        hm = new HashMap<String, String>();
        hm.put("denumire", "Centrul folcloric Grădiniţa, Galicea Mare");
        hm.put("id", "0");
        hm.put("localitatea", "Galicea Mare");
        hm.put("persoana contact", "Gologan Veronica");
        hm.put("telefon", "0241.542.277");
        rdfData.add(hm);

        hm = new HashMap<String, String>();
        hm.put("denumire", "Acvariul Constanţa");
        hm.put("id", "1");
        hm.put("localitatea", "Constanţa");
        hm.put("persoana contact", "E. Şerbănescu");
        hm.put("telefon", "0241/481.461");
        rdfData.add(hm);

        hm = new HashMap<String, String>();
        hm.put("denumire", "Ansamblul brâncovenesc de la Potlogi");
        hm.put("id", "2");
        hm.put("localitatea", "Potlogi");
        hm.put("persoana contact", "Gheorghe Olteanu");
        hm.put("telefon", "0245.61 39 46");
        rdfData.add(hm);

        return rdfData;
    }
}
公共类MuseInfo{
公共阵列列表getMuseInfo(){
ArrayList rdfData=新的ArrayList();
HashMap-hm;
hm=新的HashMap();
hm.put(“denumire”,“中央民俗集锦,加利西亚马”);
hm.put(“id”,“0”);
hm.put(“localitatea”、“Galicea Mare”);
hm.put(“persoana联系人”、“Gologan Veronica”);
hm.put(“telefon”,“0241.542.277”);
rdfData.add(hm);
hm=新的HashMap();
hm.put(“denumire”、“Acvariul Constanţa”);
hm.put(“id”,“1”);
hm.put(“localitatea”、“Constanţa”);
hm.put(“persoana联系人”、“E.Şerbănescu”);
hm.put(“telefon”,“0241/481.461”);
rdfData.add(hm);
hm=新的HashMap();
hm.put(“denumire”、“Ansamblul br–nconesc de la Potlogi”);
hm.put(“id”,“2”);
hm.put(“localitatea”、“Potlogi”);
hm.put(“persoana联系人”、“Gheorghe Olteanu”);
hm.put(“telefon”,“0245.61 39 46”);
rdfData.add(hm);
返回rdfData;
}
}
结果是:

<rdf:RDF
      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
      xmlns:opendata="http://opendata.cs.pub.ro/property/"
      xmlns:vCard="http://www.w3.org/2006/vcard/ns#"
      xmlns:dbPedia="http://dbpedia.org/ontology/">
    <rdf:Description rdf:about="http://opendata.cs.pub.ro/resource/museum_0/">
      <opendata:info>
        <rdf:Description rdf:about="http://opendata.cs.pub.ro/resource/info">
          <vCard:hasTitle xml:lang="ro">Ansamblul brâncovenesc de la Potlogi</vCard:hasTitle>
          <vCard:hasUID>2</vCard:hasUID>
          <vCard:hasTitle xml:lang="ro">Acvariul Constanţa</vCard:hasTitle>
          <vCard:hasUID>1</vCard:hasUID>
          <vCard:hasTitle xml:lang="ro">Centrul folcloric Grădiniţa, Galicea Mare</vCard:hasTitle>
          <vCard:hasUID>0</vCard:hasUID>
        </rdf:Description>
      </opendata:info>
      <opendata:contacts>
        <rdf:Description rdf:about="http://opendata.cs.pub.ro/resource/contacts">
          <opendata:location>
            <rdf:Description rdf:about="http://opendata.cs.pub.ro/resource/location">
              <vCard:hasLocality>Potlogi</vCard:hasLocality>
              <vCard:hasLocality>Constanţa</vCard:hasLocality>
              <vCard:hasLocality>Galicea Mare</vCard:hasLocality>
            </rdf:Description>
          </opendata:location>
          <opendata:contact>
            <rdf:Description rdf:about="http://opendata.cs.pub.ro/resource/contact">
              <dbPedia:contactPerson>Gheorghe Olteanu</dbPedia:contactPerson>
              <vCard:hasTelephone>0245.61 39 46</vCard:hasTelephone>
              <dbPedia:contactPerson>E. Şerbănescu</dbPedia:contactPerson>
              <vCard:hasTelephone>0241/481.461</vCard:hasTelephone>
              <dbPedia:contactPerson>Gologan Veronica</dbPedia:contactPerson>
              <vCard:hasTelephone>0241.542.277</vCard:hasTelephone>
            </rdf:Description>
          </opendata:contact>
        </rdf:Description>
      </opendata:contacts>
    </rdf:Description>
    <rdf:Description rdf:about="http://opendata.cs.pub.ro/resource/museum_1/">
      <opendata:info rdf:resource="http://opendata.cs.pub.ro/resource/info"/>
      <opendata:contacts rdf:resource="http://opendata.cs.pub.ro/resource/contacts"/>
    </rdf:Description>
    <rdf:Description rdf:about="http://opendata.cs.pub.ro/resource/museum_2/">
      <opendata:info rdf:resource="http://opendata.cs.pub.ro/resource/info"/>
      <opendata:contacts rdf:resource="http://opendata.cs.pub.ro/resource/contacts"/>
    </rdf:Description>
</rdf:RDF>

安萨姆布鲁·布朗科内斯酒店
2.
阿卡瓦鲁尔·康斯坦尼亚
1.
Galicea Mare folcloric Grădiniţa中心酒店
0
波洛基
康斯坦尼亚
加利西亚母马
盖奥赫奥尔特亚努
0245.61 39 46
E.埃尔布·内斯库
0241/481.461
高洛根维罗尼卡
0241.542.277
解决方案:

Resource museContacts       = model.createResource();
Resource museContact        = model.createResource();
Resource museLocation       = model.createResource();
Resource museInfo           = model.createResource();