2014-10-01 3 views
1

내 트리플에 컨텍스트를 제공하기 위해 노력하고 설정할 수 없습니다 :상황은

repo = Sesame_Repository.new("http://localhost:8080/openrdf-sesame/repositories/CONTEXT") 
graph = RDF::Graph.new 

sub = RDF::URI("https://force.it/base") 
pre = RDF::URI("https://force.it/has") 
obj = RDF::Literal("ABC Weapons") 
context = RDF::URI("https://force.it") 

graph << [sub, pre, obj, context] 
graph.each_statement do |statement| 
repo.public_insert_statement(statement) 
end 

그러나 컨텍스트가 설정되지 IST. 더 이상 이럴 수 없습니까? 또는 컨텍스트를 그래프에 어떻게 설정할 수 있습니까?

(I는 트리플을 절약 할 수 있습니다하지만 난 컨텍스트를 추가하고 때 거세한 숫양 상황이나 트리플 저장)

편집 : 대신 그래프의 저장소를 사용하는 경우 문맥 gkellog하는 빈

graph = RDF::Repository.new << RDF::Statement.new(sub, pre, obj, :context => RDF::URI("https://force.it")) 
+0

당신이 무엇을 의미합니까?"컨텍스트 "당신은 당신이 명명 된 그래프 트리플을 저장할 것을 의미합니까 –

+0

? 정확하게 코드에서 볼 수 있듯이 참깨 레포에 이름이있는 트리플을 넣으려고했지만 컨텍스트 (또는 명명 된 그래프)는 저장되지 않습니다. – rochbenritter

+1

@JoshuaTaylor "context"는 쿼드의 네 번째 항목이 무엇인지 나타냅니다. 세서미에서 호출합니다. 명명 된 그래프를 저장하기 위해이 메서드를 사용하지만 명명 된 그래프보다 먼저 메커니즘을 사용하므로 다른 이름을 사용합니다. –

답변

1

감사 유지를 (ruby rdf gem의 개발자) : "그래프는 트리플을위한 간단한 컨테이너입니다. 생성 될 때 그래프는 실제로 저장소 (데이터 세트)의 명명 된 그래프를 투영 한 것이기 때문에 단일 컨텍스트로 제공 할 수 있습니다. 이 예제에서는 RDF :: Graph 대신 RDF :: Repository를 사용할 수 있습니다. 저장소는 컨텍스트를 지원하므로 RDF 개념은 Quad 여기서 마지막 이벤트는 옵션 그래프 이름 (uri 또는 BNode)입니다. 컨텍스트의 개념은 RDF.rb에서 더 일찍부터 가능합니다. "주제는 훨씬 더 명확하게되었다 - 참깨를위한 to the github-issue of ruby RDF

해결책 :.

# create repository from public Sesame_Repository (see lib/rdf/sesame_repo.rb) 
repo = Sesame_Repository.new("http://localhost:8080/openrdf-sesame/repositories/CONTEXT") 
#Save Context 
repo.set_context(RDF::URI("https://force.it/")) 

# --intialize graph for sesame -- 
#create triple 
sub = RDF::URI("https://force.it/base") 
pre = RDF::URI("https://force.it/has") 
obj = RDF::Literal("Machinegun") 
# save triple to the repo 
graph = RDF::Repository.new << RDF::Statement.new(sub, pre, obj) 
graph.each_statement do |statement| 
    repo.public_insert_statement(statement) 
    puts statement.inspect 
end 
관련 문제