ruby-on-rails - SPARQL、RDF 和处理数据

标签 ruby-on-rails rdf sparql

我是整个语义学的新手,并且我已经投入到一个项目中,该项目要求我使用来自 dbpedia 的 SPARQL 端点来检索有关某些事物(例如城市)的信息。我的想法是我的应用程序收集了其中的一些关键字( ,它们是预定义的,例如城市、国家和地区 )并依靠 dbpedia 来获取有关此的一些合理信息。

在摆弄 SPARQL 端点一段时间后,我想出了以下查询:

PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX prop: <http://dbpedia.org/property/>

SELECT ?city
WHERE {
?city prop:name "X"@en; 
a dbo:PopulatedPlace
}

其中 X 代表我试图获取信息的城市名称。当我针对 SPARQL 端点运行此查询时,我在指向 DBPedia 上的 RDF 存储的 RDF 结构中收到一个 URI( 至少我是这样解释的,如果我错了,请纠正我 )

城市“Antwerpen”的返回结果如下所示:
<rdf:RDF><rdf:Description rdf:nodeID="rset"><rdf:type rdf:resource="http://www.w3.org/2005/sparql-results#ResultSet"/><res:resultVariable>city</res:resultVariable><res:solution rdf:nodeID="r0"><res:binding rdf:nodeID="r0c0"><res:variable>city</res:variable><res:value rdf:resource="http://dbpedia.org/resource/Antwerp"/></res:binding></res:solution></rdf:Description></rdf:RDF>

我正在使用 Ruby on Rails Ruby 的 RDF gem 来处理 RDF 数据。但老实说,我对如何实际处理这些信息一无所知。当我点击链接时,我似乎收到了一个 RDF 存储,其中包含有关我查询的城市的所有信息。

我是否正确,我可能需要将我的代码指向收到的 URI 并解析我想要的信息?或者是否可以例如直接通过 SPARQL 端点选择一些信息?例如描述和人口统计数据?

我知道这是一个非常模糊的问题,但我正在尽我所能掌握这项技术,并寻找一些例子来帮助我更好地理解它。

最佳答案

直接从 SPARQL 端点获取您想要的所有信息可能更容易上手。您可以使用这样的查询:

SELECT ?city ?property ?value
WHERE {
    ?city prop:name "X"@en; 
          a dbo:PopulatedPlace;
          ?property ?value .
}

这将返回一系列详细描述城市的属性和值,它会给您提供可以获得的信息类型。

下一步是专门查询您感兴趣的属性:
SELECT *
WHERE {
    ?city prop:name "Galway"@en; 
          a dbo:PopulatedPlace .
    OPTIONAL { ?city dbo:populationUrban ?pop }
    OPTIONAL { ?city foaf:homepage ?homepage }
    OPTIONAL { ?city geo:lat ?lat }
    OPTIONAL { ?city geo:long ?long }
}

我将每个三重模式放入 OPTIONAL因为有些城市可能没有所有可用的信息。没有 OPTIONAL块,如果所有三重模式都与城市匹配,您只会得到结果。

关于ruby-on-rails - SPARQL、RDF 和处理数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7147885/

相关文章:

ruby-on-rails - Rails 嵌套表单属性不保存

rdf - 如何在 RDF Schema 中声明 RDF 容器?

sparql - 使用 SPARQL 1.1 过滤 RDF Collection CONSTRUCT 中的重复头绑定(bind)

sparql - 获取 protege 中的矩阵

wikipedia - 从 dbpedia 获取 sparql 中的日期

ruby-on-rails - Spriting with Compass - 图标的大小应该一样吗?

ruby-on-rails - 如何在 Ruby-On-Rails 应用程序的用户模型中存储数组?

ruby-on-rails - 使用 Ruby on Rails 在文本区域中保留换行符

python - 使用 SPARQL 进行有限的 RDFS 和 OWL 推理

sparql - 如何查询 dbpedia.org "category"页面中的资源?