使用hypercat目录的模块
hypercat.p的Python项目详细描述
hypercat.py
使用hypercat 3.0目录的最小库。有关 hypercat请参见:http://www.hypercat.io/standard.html
起源
这个模块是一个简单的hypercat模块的重新打包 这里:https://github.com/hypercatIoT/python-tools
用例
服务器:
- 创建一个空的hypercat目录
- 或者,添加元数据来描述它
- (可选)将项目添加到目录
- 项目是另一个目录或资源
- 将其输出为json,可以是最小的,也可以是预打印的
- 查找目录层次结构的特定部分
客户:
- 加载并验证hypercat
示例-hypercat服务器
我们将创建一个包含两个项目的hypercat目录:
h / \ h2 r
用法:
from hypercat import hypercat # Create a catalogue h = hypercat.hypercat("CatalogueContainingOneCatalogueAndOneResource") # Create a second catalogue, and add it as a child of the first h2 = hypercat.hypercat("ChildCatalogue") h.addItem(h2, "/child_cat") # Create a resource, and add it as another child of the first catalogue r = hypercat.resource("resource1", "application/vnd.hypercat.sensordata+json") h.addItem(r, "/resource") # Print the raw JSON of the catalogue, and then with human-friendly formatting print h.asJSON() print h.prettyprint()
这应该输出:
{ "catalogue-metadata": [ { "rel": "urn:X-hypercat:rels:isContentType", "val": "application/vnd.hypercat.catalogue+json" }, { "rel": "urn:X-hypercat:rels:hasDescription:en", "val": "CatalogueContainingOneCatalogueAndOneResource" } ], "items": [ { "href": "/child_cat", "item-metadata": [ { "rel": "urn:X-hypercat:rels:isContentType", "val": "application/vnd.hypercat.catalogue+json" }, { "rel": "urn:X-hypercat:rels:hasDescription:en", "val": "ChildCatalogue" } ] }, { "href": "/resource", "item-metadata": [ { "rel": "urn:X-hypercat:rels:isContentType", "val": "application/vnd.hypercat.sensordata+json" }, { "rel": "urn:X-hypercat:rels:hasDescription:en", "val": "resource1" } ] } ] }
示例-hypercat客户端
用法:
from hypercat import hypercat h = hypercat.loads(inString) # Read-in and validate Hypercat print "Metadata is ",h.metadata
本模块的工作原理
根据规范,每个目录都有一个(人类可读的)描述和一个 关于它的元数据列表。它还包含一个“项目”列表,每个项目 有一个关于它的Href和元数据列表。项目可以是任何类型的 资源,包括另一个目录。
所以在概念上,目录可以有很多层次结构(即目录 可以包含包含目录的目录等)。目录没有 也必须是树,它们可以是图形、包含循环等,并且 此模块的客户端通常希望声明完整的目录结构 几个层次深入,即一次性建立整个层次结构。
但根据规范,一次只能输出一级目录, 也就是说,获得一个目录将声明它的子目录,但不是它的子目录 孙子(要看孙子,你得把孩子 目录)
更复杂的是,当 目录是父目录,而不是子目录
为了解决这个问题,在这个模块中,我们为 每一个hypercat对象。在输出过程中,我们忽略了孙子 根据需要修改属性。
许可证
该软件是在麻省理工学院的许可下发布的。详情请参阅 license.txt文件。
待办事项
4.3.3表示可以选择使用isContentType标记 第[]项,但我们在此将其视为强制性的。