acdh-oeaw/arche-schema

ACDH存储库本体

安装数: 2,371

依赖项: 1

建议者: 0

安全: 0

星级: 5

关注者: 9

分支: 0

开放问题: 2

语言:PLpgSQL


README

这是ACDH本体存储库。本体将被用来描述acdh-repo中的资源。

发布周期

发布新的本体版本需要非常小心。这是因为本体决定了关键ARCHE组件(最显著的是门卫和GUI)的行为,并且我们必须能够确保现有的元数据与当前本体保持一致。

为了确保新的本体发布不会引起任何问题,发布过程应按以下步骤进行

  • 创建一个新的git分支(git checkout -b branchName,其中branchName可以是下一个本体版本号)。
  • 在新分支中做出更改,提交它并推送到GitHub(git push origin branchName)。
  • 创建一个pull请求
  • 等待Martina,Mateusz和Norbert的批准。
    检查清单
    • 本体检查脚本没有报告错误
    • arche-lib-schema通过新的本体测试
    • arche-doorkeeper通过新的本体测试
    • 动态根表正确显示新的本体
    • 我们有更新旧元数据的脚本来确保它们与新的本体保持一致
  • 合并pull请求并创建新版本。

约定

版本号

  • 主版本号的变化由以下任何一项构成:
    • 调整或添加基数限制
    • 删除类、属性或注释属性
    • 删除注释属性
  • 次版本号的变化由以下任何一项构成:
    • 添加新的类属性或注释属性
    • 调整类继承
    • 调整属性继承、范围或域
    • 调整驱动门卫或GUI行为的注释属性的值
  • 修订版本号的变化由以下构成:
    • 对门卫和GUI没有影响的变化(例如描述或翻译更改)

  • 如通常一样,类名必须以大写字母开头
  • 使用驼峰式命名
  • 如果需要类的并集,使用辅助类
  • 辅助类是acdh:Helper的所有子类

属性

  • 如通常一样,属性名必须以下划线字母开头
  • 使用驼峰式命名
  • 属性的方向应在属性名中说明。
    • 错误 acdh:title
    • 正确 acdh:hasTitle
    • 错误 acdh:isMember
    • 正确 acdh:isMemberOf
  • 请记住数据类型和对象属性之间的区别
    • 什么是什么是如何影响GUI的?
      • 数据类型属性有一个字面值(在ttl中,它的值写在"之间,例如_:someRes acdh:someProperty "literal value"
        • 它仍然可以是URL/URI,只是它将作为字符串存储,并且不会创建单独的存储库资源(在GUI中,它将显示为可点击的链接,在新标签页中打开URL)
      • 对象属性有一个URI值(在ttl中,它的值写在<>之间,或使用简写语法,例如_:someRes acdh:someProperty <https://some/url>_:someRes acdh:someProperty acdhi:otherResource
        • 对象属性值会创建新的存储库资源
    • 在owl中不能做什么(在owl中)
      • 数据类型属性不能从对象属性继承(反之亦然)
      • 数据类型属性和对象属性不能等价
  • 属性的意义不得依赖于类上下文。如果你觉得属性的意义(即使是稍微)对不同类不同,请创建两个(或更多)属性。
  • 不要创建属性及其反向版本,这会带来很多麻烦,并且不会使提供数据更容易

范围

  • 明智地选择数据类型属性的范围,因为它们会影响门卫和GUI
    • 使用xsd:类型除xsd:stringxsd:anyURI以外的xsd:类型的属性将由门卫转换(例如,如果范围是xsd:date并且摄入值是2018,门卫将其转换为2018-01-01
    • 具有范围xsd:anyURI的属性将在GUI中以可点击链接的形式显示,在新标签页中打开,而所有其他数据类型属性值将在GUI中按原样显示

限制

  • 不要使用有资格的基数限制——范围已经由属性定义,不应该在限制中重新定义(或更改)(在Protege术语中意味着将数据类型属性的rdfs:Literal和对象属性的owl:Thing设置为范围)
  • 尽量避免在共同父类的所有子类上重复相同的限制——在父类上定义限制(你不会失去任何东西,因为Protege仍然显示这样的继承限制,并且它将允许保持本体更小、更简单)
  • 模拟实际存储库行为(考虑到存储库中的不是本本体中定义的所有ACDH类的资源,但某些规则仍然适用于它们,例如,所有都必须有一个标题和一个标识符)
    • 使用owl:Thing表示存储库中的任何资源

注释属性

  • 仔细遵循注释属性描述