我使用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不支持三角函数。
是否有其他方法可以创建此功能?
答案 0 :(得分:3)
您可以自己编程自定义功能到Sesame的SPARQL引擎。我写了a tutorial一段时间以前如何做到这一点。它的要点是:
fbLoginButton = (LinearLayout) findViewById(R.id.fb_login_view);
fbLoginButton.addView(loginButton);
接口的类。例如:
<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"/>
这涉及在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
}
}
的文件。此文件的内容应该是每个函数实现的完全限定名称,每行一个。