限制 Factforge sparql 端点使用的图表

2024-04-16

Using http://www.sparql.org/sparql.html http://www.sparql.org/sparql.html运行此查询

prefix oxprop: <http://ophileon.com/ox/property#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix owl:  <http://www.w3.org/2002/07/owl#>
prefix wgs84_pos: <http://www.w3.org/2003/01/geo/wgs84_pos#>
prefix gn: <http://www.geonames.org/ontology#>

select *

from <http://www.ophileon.com/ox/poi.rdf>

where
{
   ?poi rdfs:label ?poiname.
   ?poi owl:sameAs ?geonameuri.
   SERVICE <http://factforge.net/sparql>{
   ?geonameuri gn:population ?population.
   }
   FILTER(langMatches(lang(?poiname), "EN")).
}

returns

-------------------------------------------------------------------------------------------------------
| poi                            | poiname          | geonameuri                         | population |
=======================================================================================================
| <http://ophileon.com/ox/poi/2> | "Wageningen"@en  | <http://sws.geonames.org/2745088/> | "35433"    |
| <http://ophileon.com/ox/poi/3> | "Netherlands"@en | <http://sws.geonames.org/2750405/> | "16645000" |
| <http://ophileon.com/ox/poi/1> | "Amsterdam"@en   | <http://sws.geonames.org/2759794/> | "767457"   |
| <http://ophileon.com/ox/poi/1> | "Amsterdam"@en   | <http://sws.geonames.org/2759794/> | "741636"   |
-------------------------------------------------------------------------------------------------------

即具有多个人口值。显然来自factforge 正在查询的不同图表。有没有办法限制或优先考虑factforge,例如geonames图?顺便说一句,geonames 不提供开放的 SPARQL 端点,这就是我使用 Factforge 的原因。


让我们首先稍微更改一下您的查询。让我们用力?poiname to be "Amsterdam"@en,这样我们只会得到有问题的结果:

prefix oxprop: <http://ophileon.com/ox/property#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix owl:  <http://www.w3.org/2002/07/owl#>
prefix wgs84_pos: <http://www.w3.org/2003/01/geo/wgs84_pos#>
prefix gn: <http://www.geonames.org/ontology#>

select *

from <http://www.ophileon.com/ox/poi.rdf>

where
{
   values ?poiname { "Amsterdam"@en }
   ?poi rdfs:label ?poiname.
   ?poi owl:sameAs ?geonameuri.
   SERVICE <http://factforge.net/sparql> {
     ?geonameuri gn:population ?population.
   }
   FILTER(langMatches(lang(?poiname), "EN")).
}

现在,我们可以包装查询service挡在里面graph ?g { ... }找出这些三元组来自哪里。也就是说,我们现在有:

   SERVICE <http://factforge.net/sparql> {
     graph ?g { ?geonameuri gn:population ?population. }
   }
----------------------------------------------------------------------------------------------------------------------------
| poiname        | poi                            | geonameuri                         | population | g                    |
============================================================================================================================
| "Amsterdam"@en | <http://ophileon.com/ox/poi/1> | <http://sws.geonames.org/2759794/> | "741636"   | <http://nytimes.com> |
----------------------------------------------------------------------------------------------------------------------------

现在只有一个结果;似乎另一个结果在默认图表中。

您可以使用以下命令指定要查询的图表graph关键字这样。详细信息描述于13.3 查询数据集 http://www.w3.org/TR/sparql11-query/#queryDatasetSPARQL 1.1 建议的内容。

通过使用graph ?g { }在查询中,您强制数据位于命名图表中(即,您将不再从默认图表中获取三元组)。不幸的是,这似乎删除了您想要的一些结果。例如,将此应用于您的原始查询(不限于阿姆斯特丹):

prefix oxprop: <http://ophileon.com/ox/property#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix owl:  <http://www.w3.org/2002/07/owl#>
prefix wgs84_pos: <http://www.w3.org/2003/01/geo/wgs84_pos#>
prefix gn: <http://www.geonames.org/ontology#>

select *

from <http://www.ophileon.com/ox/poi.rdf>

where
{
   ?poi rdfs:label ?poiname.
   ?poi owl:sameAs ?geonameuri.
   SERVICE <http://factforge.net/sparql>{
    graph ?g { ?geonameuri gn:population ?population. }
   }
   FILTER(langMatches(lang(?poiname), "EN")).
}
------------------------------------------------------------------------------------------------------------------------------
| poi                            | poiname          | geonameuri                         | population | g                    |
==============================================================================================================================
| <http://ophileon.com/ox/poi/3> | "Netherlands"@en | <http://sws.geonames.org/2750405/> | "16645000" | <http://nytimes.com> |
| <http://ophileon.com/ox/poi/1> | "Amsterdam"@en   | <http://sws.geonames.org/2759794/> | "741636"   | <http://nytimes.com> |
------------------------------------------------------------------------------------------------------------------------------

只给出两个结果;您不再有 瓦赫宁根 的结果。您可以尝试使用或不使用图表来询问结果

{ graph ?g { ?geonameuri gn:population ?population. } }
union
{ ?geonameuri gn:population ?population. }
------------------------------------------------------------------------------------------------------------------------------
| poi                            | poiname          | geonameuri                         | population | g                    |
==============================================================================================================================
| <http://ophileon.com/ox/poi/2> | "Wageningen"@en  | <http://sws.geonames.org/2745088/> | "35433"    |                      |
| <http://ophileon.com/ox/poi/3> | "Netherlands"@en | <http://sws.geonames.org/2750405/> | "16645000" | <http://nytimes.com> |
| <http://ophileon.com/ox/poi/3> | "Netherlands"@en | <http://sws.geonames.org/2750405/> | "16645000" |                      |
| <http://ophileon.com/ox/poi/1> | "Amsterdam"@en   | <http://sws.geonames.org/2759794/> | "741636"   | <http://nytimes.com> |
| <http://ophileon.com/ox/poi/1> | "Amsterdam"@en   | <http://sws.geonames.org/2759794/> | "767457"   |                      |
| <http://ophileon.com/ox/poi/1> | "Amsterdam"@en   | <http://sws.geonames.org/2759794/> | "741636"   |                      |
------------------------------------------------------------------------------------------------------------------------------

现在我们可以更清楚地看到数据了。我们不能肯定地说,但看起来 nytimes 数据在默认图表中是重复的,这对于荷兰来说很好,否则可能没有值,但对于阿姆斯特丹来说就不好了,默认图表已经有一个值,并且它与指定图中的值不同。

那么直接的答案就是yes您可以控制查询哪些图表,但在这种情况下,您根本不清楚要使用哪些数据。您可能最好按每个位置期望相同的值进行分组,然后以某种方式组合总体结果(例如,取最大值或最小值,或连接它们,或其他方式。例如,(请注意,我们添加了一个xsd:用于投射到的前缀xsd:integer,并且?population值是字符串,因此需要转换为xsd:integer为了取平均值):

prefix oxprop: <http://ophileon.com/ox/property#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix owl:  <http://www.w3.org/2002/07/owl#>
prefix wgs84_pos: <http://www.w3.org/2003/01/geo/wgs84_pos#>
prefix gn: <http://www.geonames.org/ontology#>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>

select
  ?poi
  ?poiname
  ?geonameuri
  (min(?population) as ?minPopulation)
  (max(?population) as ?maxPopulation)
  (group_concat(?population;separator=' ') as ?allPopulations)
  (avg(xsd:integer(?population)) as ?avgPopulation)
  (sample(?population) as ?somePopulation)

from <http://www.ophileon.com/ox/poi.rdf>

where
{
   ?poi rdfs:label ?poiname.
   ?poi owl:sameAs ?geonameuri.
   SERVICE <http://factforge.net/sparql> {
     ?geonameuri gn:population ?population.
   }
   FILTER(langMatches(lang(?poiname), "EN")).
}
group by ?poi ?poiname ?geonameuri
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| poi                            | poiname          | geonameuri                         | minPopulation | maxPopulation | allPopulations  | avgPopulation | somePopulation |
=============================================================================================================================================================================
| <http://ophileon.com/ox/poi/2> | "Wageningen"@en  | <http://sws.geonames.org/2745088/> | "35433"       | "35433"       | "35433"         | 35433.0       | "35433"        |
| <http://ophileon.com/ox/poi/3> | "Netherlands"@en | <http://sws.geonames.org/2750405/> | "16645000"    | "16645000"    | "16645000"      | 16645000.0    | "16645000"     |
| <http://ophileon.com/ox/poi/1> | "Amsterdam"@en   | <http://sws.geonames.org/2759794/> | "741636"      | "767457"      | "767457 741636" | 754546.5      | "767457"       |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

限制 Factforge sparql 端点使用的图表 的相关文章

  • 创建服务(SERVICE_ACCEPT_SESSIONCHANGE)

    我正在尝试按照以下链接中记录的示例创建服务 http msdn microsoft com en us library bb540475 v VS 85 aspx http msdn microsoft com en us library
  • 如何在.NET中创建HTTP请求侦听器Windows服务

    我想创建充当 HTTP 侦听器并可以处理大约 500 个客户端的 Windows 服务 这种服务有什么特别的考虑吗 我对 HTTPListener 类和 TCPListener 类有点困惑 将哪一个用于 Windows 服务将 接受客户端连
  • 如何推断两个人之间的财产是兄弟

    我需要推断一个人是另一个人的兄弟 如果他们有同一个父亲 所以 如果我有这个 巴特有父亲荷马 丽莎有父亲荷马 Because Bart and Lisa有同一个父亲 我想推断 丽莎有弟弟巴特 有没有什么方法可以利用任何属性特征来做到这一点 使
  • SPARQL - 查找具有最相似属性的对象

    假设有一个人的 RDF 数据库 每个人都有许多三元组来定义这个人的朋友 这么多 person x hasFriend otherPerson 如何找到拥有最相似朋友的人 我是 SPARQL 的新手 这似乎是一个非常复杂的查询 基本上 结果将
  • 如果Service在另一个进程中,如何绑定它?

    显现
  • 限制 Factforge sparql 端点使用的图表

    Using http www sparql org sparql html http www sparql org sparql html运行此查询 prefix oxprop
  • 我如何知道我的应用程序是如何在 Mac OS 上启动的?

    我遇到了一个问题 并且长期以来一直在寻找解决方案 我做了一个应用程序 其中有一个option当系统启动使用启动服务时 它将自动启动应用程序 如果应用程序由用户启动 即打开 app 我想做点什么 如果应用程序是在系统启动时通过启动服务启动的
  • 服务崩溃,事件名称为 [CLR20r3] [重复]

    这个问题在这里已经有答案了 我已经创建了一项服务 Net c 基本上定期发送电子邮件 该服务在我的上运行良好x32 XP机器但是当我部署时x64 build基于另一个 x64 Windows Server 2008 R2机器 服务启动并在几
  • 来自 WEBVTT 的 RDF/JSON Javascript 解析器

    晚上好 开门见山 我需要一个脚本来从 WEBVTT 文件中的特定时间间隔获取 RDF JSON 结构 这样的事情存在吗 RDF JSON 是 Talis 指定的文件结构 如下所示 S P O WEBVTT 实现上述结构如下 0 00 00
  • RDF、RDFa、微格式和微数据之间有什么关系

    我已经做了很多研究 但我无法理解这 3 者之间的确切关系 另外 既然 W3C 已经正式认可 RDFa 考虑到它与 Microdata 的功能等相匹配 您会推荐它而不是 Microdata 吗 我无法想象你会发现什么如此令人困惑讽刺 gt 编
  • 如何访问symfony2全局帮助函数(服务)中的服务容器?

    这个问题一开始我不明白为什么我不能将变量传递给 symfony2 全局辅助函数 服务 但是感谢比我更聪明的人 我意识到我的错误是尝试在一个类中使用 security context 而该类没有没有注射所以 这是最终的结果 即有效的代码 我没
  • 作为后台进程/服务运行命令

    我有一个 Shell 命令 我想在后台运行 并且我读到这可以通过添加后缀来完成 到导致它作为后台进程运行的命令 但我需要一些更多的功能 并且想知道如何去做 我希望每次系统重新启动时该命令都在后台启动并运行 我希望能够像人们一样在需要时启动和
  • 使用 rdflib-sqlalchemy 的 SPARQL 查询性能

    我有 7200 个左右的 SKOS Concept 对象 由 rdflib sqlalchemy 通过解析存储在 Postgres DB 中的海龟文件创建 以下 SPARQL 查询需要 30 多秒才能响应数据 SELECT subject
  • 提取给定节点的所有父节点

    我正在尝试使用以下命令提取每个给定 GO Id 节点 的所有父级EBI RDF sparql 端点 https www ebi ac uk rdf services sparql 我是根据this https stackoverflow c
  • 如何通过 Angular 6 中的服务将对象发送到不相关的组件?

    所以我是 Angular 的新手 我正在尝试使用服务将对象从组件 1 发送到组件 2 当我将结果记录到 component2 中的控制台时 它没有给我对象的更新值 这可能是因为服务在第二个组件中重新初始化 你能帮忙解决这个问题吗 这是我的代
  • 用于查找艺术家属性的 dbpedia SPARQL 查询

    我试图通过 DBPedia 和 SPARQL 查询语言获取有关艺术家的详细信息 但是 根据我的理解 如何获取某些信息似乎几乎是不可能的 我正在尝试找到一位艺术家并获取诸如他们的家乡之类的信息 我猜查询应该类似于 SELECT c WHERE
  • Spring框架中的DAO和Service层到底是什么?

    Spring框架中的DAO和Service层到底是什么 我正在寻找理论答案 就 Spring 而言 没有区别 按照惯例 您可以使用以下方式标记 DAO 类 Repository和服务 Service 前者还进行一些持久层异常转换 既然您在理
  • 如何从与桌面交互的应用程序与 Windows 服务进行通信?

    使用 Net 与服务交互的最佳方式是什么 即大多数托盘应用程序如何与其服务器通信 如果这个方法也是跨平台的 那就更好了 在 Mono 中工作 所以我猜远程处理已经过时了 Edit 忘了说了 我们仍然需要在现场支持 Windows 2000
  • 共享首选项更新值未反映在服务中

    我的应用程序在应用程序启动时调用服务 在应用程序中 我正在更新给定键值对的值 SharedPreferences Editor editor getSharedPreferences getString R string shared pr
  • 棒棒糖中的 takePicture 失败

    以下代码正在使用 可在后台拍照 它对于棒棒糖以下的所有版本都工作正常 但在以下版本中给出运行时异常takePicture null null mcall 有任何想法吗 public void takePictures final int d

随机推荐