我正在学习语义网编程,并试图为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端点中检索该本体的类、属性等。
是否可以仅提取端点?
发布于 2015-03-13 07:38:57
从示例查询中提取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查询都不使用它。
https://stackoverflow.com/questions/29022077
复制相似问题