2016-12-30 9 views
0

박물관에 대한 정보가 필요한 Apache Jena로 RDF 문서를 만들려고합니다. 저는 자원과 모델을 만들었지 만, 최종 결과물을 출력 할 때 모든 박물관의 속성을 제 1 박물관 자료로 제공 할 것입니다.Apache 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); 
    } 
} 

입니다 :

은 예나 RDF 생성기입니다

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; 
    } 
} 

출력입니다 :

<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> 

답변

0

솔루션 :

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