SPARQL图形模式是UBVxUVxUBVL形式的三重模式的组合。 其中U是URI,B是空节点V是变量,L是文字。
查询q1
Select ?author where
?author ex:wrote ?book
查询q2
Select ?author where
?author ex:wrote ?book
?book ex:title "Eaters of the dead"
比较两种基本图形模式的最佳算法是什么?例如,q2的图形模式的结果是q1的那些的子集。我怎么能以编程方式确定这个?
答案 0 :(得分:1)
您可以通过将where子句转换为图形来完成您正在尝试的操作。然后,您可以使用标准图算法来比较查询,例如使用同构来查看它们是否是同一个。
答案 1 :(得分:0)
如果q2是q1的一部分,则更具体的模式应该返回更小的结果集。因此,计算两组并从计数(q1)中减去计数(q2)将显示q1中不在q2中的作者数,表明q2更具体。如果结果是否定的,则Q2更具体。
例如:
SELECT ((?countQ1 - ?countQ2) as ?result) WHERE {
{SELECT (count(distinct ?author) as ?countQ1) WHERE {
?author ex:wrote ?book .
}}
{SELECT (count(distinct ?author) as ?countQ2) WHERE {
?author ex:wrote ?book .
?book ex:title "Eaters of the dead"
}}
}