2017-02-02 8 views
1

Я не знаю, почему после установки setNsPrefix Model это не работает в соответствии с моим ожиданием.
Это мой Java CodeКак добавить NameSpace/PrefixMap в Apache Jena Model?

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

Выход:

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

Ожидаемое:

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

Где я сделал ошибку? Из моей мысли setNsPrefix может это сделать.

ответ

1

Настройки префиксов в API не включаются. Это не предусмотрено, особенно для ResourceFactory.createProperty, поскольку в этом месте нет модели.

Разверните префиксное имя model.expandPrefix, чтобы получить полный URI, используя этот URI.

+0

Извините, но он не работает. Я добавил model.expandPrefix ("vocab"); System.out.println (model.expandPrefix ("vocab")); Но он по-прежнему показывает «vocab: name», и даже после печати он показывает «vocab». – Badman

+0

, пока этот System.out.println (model.shortForm ("http://myweb.in/vocab#")); дает мне shortForm "vocab:" – Badman

+0

К сожалению, мне нужно сделать это System.out.println (model.expandPrefix ("vocab:")); Он отлично работает и дает мне «http://myweb.in/vocab#». Но все же у меня есть вопрос, можем ли мы снова и снова избегать создания этого ресурса.addLiteral (ResourceFactory.createProperty (model.expandPrefix («vocab:») + «name»), «Dhannan»); – Badman

Смежные вопросы