[英]How can I execute a WHOIS query for all domains registered in a given time period in a given TLD using Ruby?
[英]A ruby SPARQL query that SELECT(s) all triples for a given subject
我正在使用下面的ruby庫查詢SPARQL endpont。 http://ruby-rdf.github.io/sparql-client/
我真的很接近實現我想要的目標。 使用以下代碼,我可以打印出數據庫中所有三元組。
sparql = SPARQL::Client.new("http://localhost:3030/ds/query")
query = sparql.select.where([:s, :p, :o]).offset(100).limit(1000)
query.each_solution do |solution|
puts solution.inspect
end
但是現在我想稍微改變一下,並為給定主題選擇所有三元組。 我以為以下方法會起作用,但不會。
sparql = SPARQL::Client.new("http://localhost:3030/ds/query")
itemname = "lectio1"
query = sparql.select.where(["<http://scta.info/items/#{itemname}>", :p, :o]).offset(100).limit(1000)
query.each_solution do |solution|
puts solution.inspect
end
這將以簡單的SPARQL語法工作,但是用我想要查詢的文字主題將符號:s替換為某種方式是行不通的。 Sinatra給我的錯誤是:
預期主題為零或術語為
"<http://scta.info/items/lectio1>"
;
正如您在評論中指出的那樣,
Sinatra給我的錯誤是:預期的主題是
零或一個術語是"<http://scta.info/items/lectio1>"
您正在將方法粘貼為字符串,但是期望為nil
或term。 它期望的術語是RDF :: Term 。 在特定情況下,您需要一個URI(它是RDF :: Resource的子類,它是RDF :: Term的子類)。 您可以創建所需的參考
RDF::URI.new("http://scta.info/items/#{itemname}")
因此,您應該能夠將代碼更新為以下代碼(並根據您的導入,也許可以刪除RDF::
前綴):
sparql = SPARQL::Client.new("http://localhost:3030/ds/query")
itemname = "lectio1"
query = sparql.select.where([ RDF::URI.new("http://scta.info/items/#{itemname}"), :p, :o]).offset(100).limit(1000)
query.each_solution do |solution|
puts solution.inspect
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.