2014-12-16 5 views
0

을 재사용. 빈 노드를 한 번 이상 사용해야합니다.antoniogarrote/rdfstore-JS 내가 nodejs에서 <strong>rdfstore</strong>을 사용하고 내가 어떻게 <strong>재사용</strong> 빈 노드를 알아낼 수 없습니다 공백 노드

graph.add(rdf.createTriple(
    new rdf.api.BlankNode(id); 
    rdf.createNamedNode(predicate) 
    rdf.createBlankNode() 
); 

ID 이전에 입력 blankNode에서 가져온 것입니다 : => "30"

나는 빈 노드를 만들어 확인하고이 올바른지 ("_ : 30"여기

코드입니다 정확한 ID로). 하지만 db를 살펴보면 잘못된 것이 있습니다. 그에게 정확한 노드를 주더라도 약간의 카운터를 사용하는 것 같습니다.

EDIT 1

나는 트리플 생성 확인하고 내가 원하는 것 같습니다. 따라서 문제는 그래프에 트리플을 추가하거나 트리플을 저장하는 어딘가에 있어야합니다. 어떤 도움

감사합니다,

미갈.

+0

나는 똑같은 문제가 있습니다. 당분간 해결책을 찾았습니까? – trueg

+0

나는 더 이상 rdfstore를 사용하지 않을 것이다. 나는 2 년 동안 그것을 사용했고 우리는 해킹이 여러 번 필요했습니다. 아무런 홍보도 받아 들여지지 않았고,이 프로젝트는 죽었다. – vanthome

+0

내 해결책은 Jena와 java를 사용하는 것이 었습니다. 나는 REST 웹 서비스를 만들었고 아무런 문제가 없다. 훌륭하게 작동합니다. –

답변

1

이유는 실제로 간단합니다. rdfstore.Store.insert을 호출 할 때마다 SPARQL INSERT 문이 만들어집니다. 그리고 각 별도의 SPARQL 문에는 고유 한 공백 노드 집합이 있습니다.

그렇다면 우리의 문제를 해결할 수있는 유일한 방법은 배열에 추가 할 트리플을 수집하고 마지막으로 모두 한 번에 추가하는 것입니다.

var triples = []; 
[...] 
store.insert(store.rdf.createGraph(triples), 
    graph, 
    function(success, cnt) { 
    if(success) console.log(cnt + ' triples successfully added.'); 
    }); 

이 정보가 도움이되기를 바랍니다.

+0

일주일 후에 무언가를 추가해야하는 경우에는 도움이되지 않습니다. 내 목적을 위해 특정 모델이 필요하므로 도움이되지 않습니다. 어쨌든, 도와 줘서 고마워. –