2009-04-07 4 views
0

Jena의 익명 노드 ID 생성을위한 기본 방법을 무시할 수 있습니까?Jena Bnode ID 생성

이상적으로, 저는 Jena에게 ID를 생성하는 functor를 전달하여 (컴퓨터에만 국한된 것이 아니라) 전역 적으로 고유하게 만들 수 있습니다. AnonId가 생성 될 때마다 functor를 사용해야합니다.

public interface IdGenerator { 
    public String createId() { 
     // create a globally unique ID 
     ... 
     return uid; 
    } 
} 

이것은 다소 my previous question과 관련이 있습니다.

편집 : AnonId에는 id 매개 변수를 사용하는 생성자가 있다는 것을 알고 있습니다. 이 생성자를 여기 저기에 호출하는 것을 피하고 Jena (한 번)에게 ID를 생성하는 방법을 알려줍니다.

편집 2 : 익명의 노드가 내가 액세스 할 수없는 라이브러리 코드로 생성 될 수 있기 때문에 해당 장소 전체에서 해당 생성자를 호출하는 것을 신경 쓸 필요가 없더라도 가능하지 않을 수 있습니다.

+0

왜이 작업을 수행 하시겠습니까? 이렇게하고 싶다면, 전체적인 방법으로 이동하여 노드 URI를 주면 (왜 그것이 글로벌하게 고유한지 확인하기가 더 쉽습니다)? – DNA

+0

@DNA 내 특정 사용 사례는 다른 컴퓨터에서 모델을 동기화하는 것과 관련이 있습니다 ([이 질문] (http://stackoverflow.com/questions/727449/synchronizing-jena-ontmodels-with-bnodes) 참조)). 다른 컴퓨터에서 생성 된 익명의 노드가 다른 ID를 갖도록해야했습니다. –

답변

1

Jena에는 다른 AnonId 생성기를 연결하기위한 후크가 없습니다. AnonId의 생성은 한 곳에서 중앙 집중화되지 않으므로 new AnonId(String)도 쉽게 적용 할 수 없습니다. 목표를 달성하는 가장 좋은 방법은 AnonId 소스를 패치하는 것인데, 이는 간단 할 것입니다.

FWIW 코드에는 이미 두 가지 다른 ID 생성 방법이 있으므로 Jena 코드베이스에 추상화를 추가하는 것이 좋습니다.