使用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标记 第[]项,但我们在此将其视为强制性的。

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

推荐PyPI第三方库


热门话题
java传递位置作为FragmentPagerAdapter中片段的参数   html Java Jsoup循环打印   java如何使用FileOutputStream写入数据而不丢失旧数据?   java在测试用例类/方法中执行sql before/after/in   java在javafx中注册鼠标处理程序,但处理程序不是内联的   Android嵌入了一个C++库的java代码,不需要TopPLE程序来嵌入它?   片段类内部的java ProgressBar导致setMax方法出现NullPointerException?   带有google app engine的java Activator Play框架   java如何解析星级而不是字符串?   java如何在基本实体中定义通用主键字段?   通过扩展实现Java克隆   使用CipherOutputStream的java递归加密提供一个空字节[]   在运行时提取字段值的Java服务   Java 11和spring boot从spring boot应用程序的fat jar中的依赖项jar加载资源   java尝试使用J2SE枚举所有可用的Wifi网络   使用Java库进行SWIFT MT消息解析   java拆分非逗号分隔的字符串   java为什么toString()不能是静态方法?   java在连接到集群数据库时遇到mongo异常   java访问Hashmap中存储的json有效负载值