从geonames.org查询数据并返回rdf/semantic web数据。

geonames_rdf的Python项目详细描述


简介

这是与Geonamesrdf兼容的web-services的客户端库。此时,只有Search API提供rdf响应,因此是唯一可用的适配器。

rdf通常与Semantic Web和/或IoT结合使用。

要求

  • 请求
  • python 2.x或3.x

安装

通过PYPI:

$ sudo pip install geonames_rdf

用法

作为库:

import geonames.adapters.search

_USERNAME = 'your_username'
sa = geonames.adapters.search.Search(_USERNAME)

result = sa.query('detroit').country('us').max_rows(5).execute()
for id_, name in result.get_flat_results():
    # make_unicode() is only used here for Python version-compatibility.
    print(geonames.compat.make_unicode("[{0}]: [{1}]").format(id_, name))

当用作库时,结果对象将从execute()方法返回。以下是读取结果的方法(获取平面结果在上面使用):

  • 原始lxml对象通过xml属性公开。
  • get_xml_nodes方法将从生成的文档中返回一个featurelxml.etree对象列表,表示每个结果。
  • 如果您对其他内容不感兴趣,get_flat_results方法只会生成(id,name)2元组的列表。默认情况下,这也是从命令行实用程序返回的内容。

作为命令行实用程序:

$ gn_search dsoprea -p query detroit -p country us -p max_rows 5
[http://sws.geonames.org/4990729/]: [Detroit]
[http://sws.geonames.org/6955112/]: [Detroit-Warren-Livonia]
[http://sws.geonames.org/5024238/]: [Detroit Lakes Airport]
[http://sws.geonames.org/4990733/]: [Detroit City Airport]
[http://sws.geonames.org/4990742/]: [Detroit Metropolitan Wayne County Airport]

只能向命令行实用程序提供字符串(非布尔)参数。

注意:您还可以通过传递“-x”参数来获得完整的rdf响应。

无论您使用的是库还是工具,可用的参数是:

Library Parameter NameAPI Parameter Name
queryq
place_name_likename
place_name_equalsname_equals
place_name_starts_withname_startsWith
max_rowsmaxRows
start_rowstartRow
countrycountry
show_country_firstcountryBias
continentcontinentCode
admin_code1adminCode1
admin_code2adminCode2
admin_code3adminCode3
feature_classfeatureClass
feature_codefeatureCode
population_classcities
languagelang
verbositystyle
force_matching_nameisNameRequired
tagtag
operatoroperator
charsetcharset
fuzzyfuzzy
east_west_north_south_boxeast,west,north,south
place_name_languagesearchlang
order_byorderby

某些参数可以指定多次。有关更多信息,请参阅api文档。

设计说明

  • 请注意,库中的大多数参数的命名与api不同。通常这是违反我的策略的,但是我发现很多参数都是模棱两可的,以至于我将这些参数重命名为更清晰的参数,并在使用时将其余参数重命名为下划线分隔命名。
  • 我们主要依靠api来针对错误的参数进行正确的验证。我们不喜欢在客户机中任意验证参数,因为服务器中的规则可能会更改,而且这可能会干扰您的实现。但是,如果有一种验证,出于某种原因,是有意义的和/或会使开发更容易反对的,请告诉我。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java我想读取一个带分隔符的或csv文件,并将相应的值保存在postgres DB中   java ANT在解压任务期间连接文件   java Log4j在一行中打印嵌套异常   解压缩HTTPInputStream时,java GZIPInputStream过早关闭   java如何在GWTExt的GridPanel中的标题下放置子标题?   java词典快速排序   dll管理JAVA中的非托管代码?   java无法通过我的Springboot Servlet应用程序使用SAAJ从SOAP消息获取附件   用Java更新MySQL表   java Json格式错误,当他已经得到一个数组时请求数组   Spring数据REST中资源所有权对java的限制   java Vaadin布局扩展   java使用jsoup获取元素外部但元素旁边的文本   java使用javax从GMail获取消息的UID。用IMAP发送邮件   Java中数字到单词的转换模块   java如何减少拨号表中的字体大小   java垃圾值>��� 在springmvc中对swaggerui(io.swagger)的描述中,如何删除它?