2013-07-11 69 views
2

是否可以使用Jena ARQ API以編程方式將OPTIONAL子句添加到SPARQL查詢中? 我想以編程藉此查詢:將可選子句添加到使用Jena的SPARQL查詢中ARQ

select ?concept ?p ?o where {?s ?p ?o . } limit 10 

要這樣:

SELECT ?concept ?p ?o ?test WHERE 
{ 
?s ?p ?o 
OPTIONAL { ?concept <http://www.test.com/test> ?test } 
} 
LIMIT 10 

通過ARQ它是簡單的添加額外的結果變量?test

Query q = QueryFactory.create(query)  
query.addResultVar(var); 

但是,從我在API文檔中找到並通過網絡拖網,無法添加OPTIONAL子句。我需要使用不同的圖書館嗎?

回答

2

是的,你可以。請參閱apache jena網站上的this introduction to the topic

你的出發點是獲得query pattern

Element pattern = q.getQueryPattern(); 

這將是一個ElementGroup如果我沒有記錯。添加可選的有:

((ElementGroup) pattern).addElement(new ElementOptional(...)); 

...位將是一個ElementTriplesBlock,這是非常簡單的。

不過,總的來說,我建議使用訪問者和代數表示,但是這條直接路線應該工作。

相關問題