是否可以从SPARQL查询中提取SPARQL端点?

时间:2015-03-12 23:12:08

标签: java sparql owl endpoint

我正在学习语义Web编程并尝试为Android平台开发应用程序。我的应用程序中有一个文本字段,用户可以在其中输入SPARQL查询。

我想知道我是否可以从整个SPARQL查询中提取SPARQL端点。例如,在查询SELECT ?class FROM <http://myexample.com> WHERE{?class a owl:Class} Order By ?class中,我想提取http://myexample.com

或者从类似SELECT ?dataType ?data WHERE { <http://nasa.dataincubator.org/launch/1961-012> ?dataType ?data.}的查询中提取http://nasa.dataincubator.org/launch/1961-012

我想使用提取的端点,然后从SPARQL端点中检索该本体的类,属性等。

是否可以仅提取端点?

1 个答案:

答案 0 :(得分:1)

从示例查询中提取URI http://myexample.com/非常简单。解析查询并检查解析结果(如何执行此操作取决于您使用的查询解析器),或者只编写一个抓取FROM子句并提取其后面的URI的简单正则表达式。

但是,FROM子句中的URI SPARQL端点。 SPARQL查询中的FROM子句指定命名图,一般来说,它是您查询的总数据集的子集。但它并没有告诉您查询将由哪个SPARQL端点执行。

通常,SPARQL端点不是查询本身的一部分,而是由用于实际执行查询的工具确定。

在某种情况下,可以确定从查询本身使用的端点,即SPARQL查询是否使用SERVICE子句,例如:

SELECT *
WHERE { 
   SERVICE <http://example.org/sparql> { ?s ?p ?o } 
}
LIMIT 100

但是不能保证使用这种结构,实际上大多数SPARQL查询都不使用它。