2017-02-02 13 views
1

Model의 setNsPrefix를 설정 한 후 내 기대에 따라 작동하지 않는 이유를 모르겠습니다. 예상Apache Jena Model에서 NameSpace/PrefixMap을 추가하는 방법은 무엇입니까?

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

:

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

내가 실수를 않았다
이 내 자바 코드

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

출력입니까? 내 생각에 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#"를주십시오. 하지만 여전히 질문이 있습니다. 우리는이 resource.addLiteral (ResourceFactory.createProperty (model.expandPrefix ("vocab :") + "name"), "Dhannan"을 반복해서 쓰는 것을 피할 수 있습니까? – Badman