SPARQL三角函数

时间:2015-10-29 12:50:42

标签: sparql semantic-web sesame

我使用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)和半径(以km或度数)定义的圆的表面上的所有位置。

为了达到这个目的,我必须使用一些暗示三角函数的数学公式。据我所知,SPARQL不支持三角函数。

是否有其他方法可以创建此功能?

1 个答案:

答案 0 :(得分:3)

您可以自己编程自定义功能到Sesame的SPARQL引擎。我写了a tutorial一段时间以前如何做到这一点。它的要点是:

  1. 为您的函数创建一个实现 fbLoginButton = (LinearLayout) findViewById(R.id.fb_login_view); fbLoginButton.addView(loginButton); 接口的类。
  2. 例如:

    <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="40dip"
                android:id="@+id/fb_login_view"
                android:layout_centerInParent="true"
                android:layout_gravity="center_horizontal"
                android:text="connect_with_facebook"/>
    
    1. 为您的自定义函数创建一个带有服务提供程序接口(SPI)注册表配置的jar。
    2. 这涉及在jar文件的org.openrdf.query.algebra.evaluation.function.Function目录中有一个名为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 } } 的文件。此文件的内容应该是每个函数实现的完全限定名称,每行一个。

      1. 将您的jar放在某个地方的Sesame Server的运行时类路径上,然后重新启动。