我正在学习语义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端点中检索该本体的类,属性等。
是否可以仅提取端点?
答案 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查询都不使用它。