与学生和议会的Geosparql

与学生和议会的Geosparql,sparql,protege,Sparql,Protege,我是GeoSPARQL的新手。我下载了本体,将其导入Protégé中,并创建了类和个人跟随 当利用议会要求WKT时,价值观被复制,这在Protégé中没有发生: SELECT ?geom WHERE { ?x my:exactGeometry ?xGeom . ?xGeom geo:asWKT ?geom . } 结果是每个值显示2次 执行geof:sf函数时,我没有得到任何结果 我没有使用GeoSPARQL,所以我不能解决很多问题,但是,首先,像 SELECT ?geom

我是GeoSPARQL的新手。我下载了本体,将其导入Protégé中,并创建了类和个人跟随

  • 当利用议会要求WKT时,价值观被复制,这在Protégé中没有发生:

    SELECT ?geom 
    WHERE {
        ?x my:exactGeometry ?xGeom .
        ?xGeom geo:asWKT ?geom .
    }
    
    结果是每个值显示2次

  • 执行
    geof:sf
    函数时,我没有得到任何结果


  • 我没有使用GeoSPARQL,所以我不能解决很多问题,但是,首先,像

    SELECT ?geom WHERE {
        ?x my:exactGeometry ?xGeom .
        ?xGeom geo:asWKT ?geom .
    }
    
    默认情况下,对于图形模式可以匹配的每种方式,将为
    ?geom
    返回一个值。例如,如果图表包含

    _:x1 my:exactGeometry _:xGeom1 .
    _:xGeom1 geo:asWKT _:geom .
    _:x2 my:exactGeometry _:xGeom2 .
    _:xGeom2 geo:asWKT _:geom .
    
    因此有两个匹配的模式(一个是
    ?x=\:x1
    ?xGeom=\:xGeom1
    ,另一个是
    ?x=\:x2
    ?xGeom=\:xGeom2
    ),您将在结果中看到两次
    。您可以在查询中使用
    distinct
    删除这些类型的重复项:

    SELECT DISTINCT ?geom WHERE {
        ?x my:exactGeometry ?xGeom .
        ?xGeom geo:asWKT ?geom .
    }
    

    至于第二点,正如我提到的,我不是GeoSPARQL用户,但我怀疑规范仅仅定义了这些扩展函数应该做什么。除非您下载了一些代码(例如,Protégéplugin),否则我看不出这些函数的实现会在哪里提供。SPARQL扩展必须由SPARQL端点实现提供;它们没有在您下载的本体或您查询的数据中定义。Wikipedia关于GeoSPARQL的文章有一个列表,其中列出了三个支持GeoSPARQL的实现。其中一个是议会,你提到过,但你没有提到这些函数在议会中是否起作用。

    你的意思是当你向议会或议员查询时,你没有得到
    geof:sf
    函数的结果吗?谢谢你的帮助@Joshua我可以解决这两个问题,他们与SPARQL或Protege无关,而是与议会有关。这是一个三重存储,因此每当我在Prtoege中更改值并再次将本体上传到议会时,它都会添加新值并保留以前的值。至于第二个问题,Protege不能使用GeoSPARQL提供的函数,这就是我使用议会的原因。问题是Protege设置的数据类型的资源与议会支持的不同。我必须改变它manually@loosha我很高兴这个答案帮助你找到了解决办法。然而,听起来实际的解决方案与我提到的有些不同。你应该考虑把你的实际答案写成答案,然后接受它而不是我的答案。在StackOverflow上回答您自己的问题是可以接受的,这听起来像是一个您可能想要这样做的案例。