2017-02-02 2 views
1

Ich weiß nicht, warum nach setNsPrefix von Model funktioniert es nicht nach meinen Erwartungen.
Das ist mein Java-CodeWie man NameSpace/PrefixMap in Apache Jena-Modell hinzufügen?

public class TestClass 
{ 
    public static void main(String[] args){ 
    Model model = ModelFactory.createDefaultModel(); 
    model.setNsPrefix("vocab","http://myweb.in/vocab#");   
    model.createResource().addLiteral(ResourceFactory.createProperty("vocab:name"),"Dhannan"); 
    String query 
       = " SELECT * " 
       + " WHERE { " 
       + " ?Subject ?Predicate ?Object . " 
       + " } "; 
    Services.executeQuery(model, query); 
    } 
} 

Ausgang:

-------------------------------------- 
| Subject | Predicate | Object | 
====================================== 
| _:b0 | <vocab:name> | "Dhannan" | 
-------------------------------------- 

Erwartet:

------------------------------------------------------ 
| Subject | Predicate     | Object | 
====================================================== 
| _:b0 | <http://myweb.in/vocab#name> | "Dhannan" | 
------------------------------------------------------ 

Wo habe ich Fehler machen? Von meinem Gedanken kann setNsPrefix das tun.

Antwort

1

Durch das Festlegen von Präfixen wird die API nicht aktiviert. Dies ist nicht vorgesehen, insbesondere für ResourceFactory.createProperty, da es zu diesem Zeitpunkt kein Modell gibt.

Erweitern Sie den vorangestellten Namen mit model.expandPrefix, um den vollständigen URI zu erhalten, den URI verwenden.

+0

Tut mir leid, aber es funktioniert nicht. Ich habe model.expandPrefix ("vocab") hinzugefügt; System.out.println (Modell.expandPrefix ("vocab")); Aber es zeigt immer noch "vocab: name" und auch nach dem Drucken zeigt es "vocab". – Badman

+0

während dieser System.out.println (model.shortForm ("http://myweb.in/vocab#")); gibt mir shortForm "vocab:" – Badman

+0

Tut mir leid, ich muss dies tun System.out.println (model.expandPrefix ("vocab:")); Es funktioniert gut und gibt mir "http://myweb.in/vocab#". Aber ich habe noch Fragen, können wir vermeiden, immer wieder diese Ressource zu schreiben.addLiteral (ResourceFactory.createProperty (model.expandPrefix ("vocab:") + "name"), "Dhannan"); – Badman

Verwandte Themen