SPARQL 三角函数
SPARQL trigonometric functions
我正在使用 Sesame 服务器来存储和查询三元组集。在我的存储库中,我有一组三元组,代表地球上由经度和纬度定义的位置。
示例:
PREFIX ont:<http://example.org/myontology.owl#>
<http://foo.com/location-a> a ont:Location.
<http://foo.com/location-a> ont:hasLatitude "25.91239"^^xsd:double.
<http://foo.com/location-a> ont:hasLongitude "30.3911"^^xsd:double.
<http://foo.com/location-b> a ont:Location.
<http://foo.com/location-b> ont:hasLatitude "15.7778"^^xsd:double.
<http://foo.com/location-b> ont:hasLongitude "13.6755"^^xsd:double.
...
我想编写一个查询,返回由圆心(Latidude_Center、Longitude_Center)和半径(以公里为单位)定义的圆表面上的所有位置或学位)。
为了实现这个目标,我必须使用一些暗示三角函数的数学公式。据我所知SPARQL不支持三角函数。
是否有其他方法可以创建此功能?
您可以自己以编程方式向 Sesame 的 SPARQL 引擎添加自定义函数。前段时间我写了 a tutorial 介绍如何做到这一点。它的要点是:
- 为实现
org.openrdf.query.algebra.evaluation.function.Function
接口的函数创建一个 class。
例如:
public class SinusFunction implements Function {
/** return the name of the function for use in SPARQL */
public String getURI() {
return "http://example.org/function/sin";
}
public Value evaluate(ValueFactory valueFactory, Value... args)
throws ValueExprEvaluationException
{
// TODO implement computing the function return value
// based on the input args
}
}
- 为您的自定义函数创建一个带有服务提供商接口 (SPI) 注册表配置的 jar。
这涉及到在 jar 文件的 META-INF/services
目录中有一个名为 org.openrdf.query.algebra.evaluation.function.Function
的文件。该文件的内容应该是每个函数实现的完全限定名称,每行一个。
- 将您的 jar 放到 Sesame Server 的运行时 classpath 某处,然后重新启动。
我正在使用 Sesame 服务器来存储和查询三元组集。在我的存储库中,我有一组三元组,代表地球上由经度和纬度定义的位置。
示例:
PREFIX ont:<http://example.org/myontology.owl#>
<http://foo.com/location-a> a ont:Location.
<http://foo.com/location-a> ont:hasLatitude "25.91239"^^xsd:double.
<http://foo.com/location-a> ont:hasLongitude "30.3911"^^xsd:double.
<http://foo.com/location-b> a ont:Location.
<http://foo.com/location-b> ont:hasLatitude "15.7778"^^xsd:double.
<http://foo.com/location-b> ont:hasLongitude "13.6755"^^xsd:double.
...
我想编写一个查询,返回由圆心(Latidude_Center、Longitude_Center)和半径(以公里为单位)定义的圆表面上的所有位置或学位)。
为了实现这个目标,我必须使用一些暗示三角函数的数学公式。据我所知SPARQL不支持三角函数。
是否有其他方法可以创建此功能?
您可以自己以编程方式向 Sesame 的 SPARQL 引擎添加自定义函数。前段时间我写了 a tutorial 介绍如何做到这一点。它的要点是:
- 为实现
org.openrdf.query.algebra.evaluation.function.Function
接口的函数创建一个 class。
例如:
public class SinusFunction implements Function {
/** return the name of the function for use in SPARQL */
public String getURI() {
return "http://example.org/function/sin";
}
public Value evaluate(ValueFactory valueFactory, Value... args)
throws ValueExprEvaluationException
{
// TODO implement computing the function return value
// based on the input args
}
}
- 为您的自定义函数创建一个带有服务提供商接口 (SPI) 注册表配置的 jar。
这涉及到在 jar 文件的 META-INF/services
目录中有一个名为 org.openrdf.query.algebra.evaluation.function.Function
的文件。该文件的内容应该是每个函数实现的完全限定名称,每行一个。
- 将您的 jar 放到 Sesame Server 的运行时 classpath 某处,然后重新启动。