Ruby 从属性路径创建模式

Ruby 从属性路径创建模式,ruby,sparql,rdf,Ruby,Sparql,Rdf,给定一个RDF::URI和一个SPARQL属性路径(存储为字符串),我希望找到满足以下查询的值 SELECT ?value WHERE { <URI> <property_path> ?value . } SELECT?值,其中{ 价值 } 我使用了以下代码片段,但感觉非常粗糙: 查询= SPARQL.PARSE(从我的理解中),你认为字符串插值是“哈基什”,因为你想处理“事物,而不是字符串”。这个愿望在语义Web相关领域绝对不可指责。 如果是这样,您可以使用

给定一个
RDF::URI
和一个SPARQL属性路径(存储为字符串),我希望找到满足以下查询的值

SELECT ?value WHERE {
    <URI> <property_path> ?value .
}
SELECT?值,其中{
价值
}
我使用了以下代码片段,但感觉非常粗糙:


<代码>查询= SPARQL.PARSE(

从我的理解中),你认为字符串插值是“哈基什”,因为你想处理“事物,而不是字符串”。这个愿望在语义Web相关领域绝对不可指责。

如果是这样,您可以使用构造查询

以下所有代码片段的含义相同:

SPARQL查询
q1

SELECT?值,其中{
|
价值
}
SPARQL代数表达式
q2

(项目
价值
(路径
(alt
)
价值
)
)    
Ruby代码
q3

比较内部表示或查询结果:

require 'rubygems'
require 'sparql'
require 'sparql/algebra'

include SPARQL::Algebra

query1 = SPARQL.parse(q1) 
query2 = SPARQL::Algebra::Expression.parse(q2)
query3 = eval(q3)

puts query1.to_sxp
puts query2.to_sxp
puts query3.to_sxp

query1.execute(queryable) do |result|
  puts result.inspect
end

query2.execute(queryable) do |result|
  puts result.inspect
end

query3.execute(queryable) do |result|
  puts result.inspect
end
不同之处在于,在第三种情况下不需要字符串操作。

这些“运营商”甚至有URI(例如
运营商[:项目]
).

这个问题属于。投票结束。也许可以使用来构造查询。@StanislavKralin:这看起来很有希望。请您详细说明一下答案好吗?@RichouHunter,我不熟悉Ruby,但我会试试。我不知道为什么,但没有在页面上列出。顺便说一句,您的代码对我来说还不错。@Richard Degenne,另请参阅
require 'rubygems'
require 'sparql'
require 'sparql/algebra'

include SPARQL::Algebra

query1 = SPARQL.parse(q1) 
query2 = SPARQL::Algebra::Expression.parse(q2)
query3 = eval(q3)

puts query1.to_sxp
puts query2.to_sxp
puts query3.to_sxp

query1.execute(queryable) do |result|
  puts result.inspect
end

query2.execute(queryable) do |result|
  puts result.inspect
end

query3.execute(queryable) do |result|
  puts result.inspect
end