跳到内容

OBOFoundry/purl.obolibrary.org

海外建筑运营管理局PURL

该存储库提供了用于管理海外建筑运营管理局铸造厂永久URL(PURL)的工具。喜欢https://github.com/perma-id/w3id.org我们使用每个目录的Apache配置文件(.ht访问文件),每个文件都使用重定向匹配将PURL请求重定向到相应目标的指令。与w3id.org不同,我们不手动编辑Apache配置文件。相反,我们有一个简单的YAML配置格式,以及将YAML的配置转换为Apache配置的脚本。YAML文件更易于读取和写入,并允许我们自动验证和测试PURL。

状态

全部http://purl.obolibrary.org/obo/PURL现在由这个系统处理,除了一些未决问题.PURL与此系统中的任何规则都不匹配,将回退到旧的PURL.org公司系统。

添加和更新PURL

请使用以下四个选项之一更改PURL:

  1. 创建新问题描述您需要的更改。

  2. 浏览到要更改的配置文件然后单击“铅笔”图标进行编辑。

  3. 添加新配置文件.

  4. 分叉此存储库提出拉取请求.

在将所有更改合并到主人分支。合并后,更新的PURL将在20分钟内激活。

配置格式

使用此服务的每个海外建筑运营管理局项目都可以获得亚马尔中的配置文件配置/。该YAML配置文件用于生成Apache.ht访问该本体的文件。该Apache配置将应用于该项目的所有PURL。

每个YAML配置文件都必须具有以下字段:

  • id空间:项目的IDSPACE公司,区分大小写,通常为大写
  • 基本url(_U):PURL中位于域之后的部分,通常为小写
  • 术语浏览器(_B):通常个体蜜蜂ols公司但也可以习俗(见下文)
  • 产品:本体的主文件列表和重定向到的URL;一个.owl(猫头鹰)文件是必需的,并且.obo文件文件是可选的

可选字段包括:

  • 示例术语:用于自动测试的一个或多个术语ID的列表
  • 基本_直接:如果您的项目重定向其基本url,那么您需要一个基本_直接:条目。所以基本_直接:http://obi-ontology.org将重定向http://purl.obolibrary.org/obo/obihttp://obi-ontology.org.
  • 条目:下的其他PURL列表基本url,参见下文

下面是一个改编自配置/obi.yml文件:

idspace:OBI基本url:/obo/obi产品:-obi.owl公司:http://svn.code.sf.net/p/obi/code/releases/2015-09-15/obi.owlterm_browser:本体示例术语:-OBI_ 0000070条目:-精确:/wiki更换:http://obi-ontology.org

大多数字段都很简单,但条目:需要更多的解释。

条目

每个YAML配置文件都包含关键字条目:然后是条目列表。每个条目定义一个Apache重定向匹配用于匹配URL和重定向到新URL的指令。每个条目都以-,后跟缩进行上的关键字和值。有三种类型的条目:

  1. 准确的:最简单的条目匹配精确的URL并返回精确的替换项
  2. 前缀:这些条目与URL的第一部分匹配,并仅替换前缀部分
  3. 正则表达式:这些条目使用强大的正则表达式,除非绝对必要,否则应避免使用。

这个#字符表示注释,该注释不被视为配置的一部分。

请参阅工具/示例/test2/test2.yml工具/示例/test2/test2.htaccess例如。

完全正确

在最常见的情况下,您的PURL应该匹配唯一的URL并重定向到唯一的URL配置/obi.yml文件:

-精确:/obi.owl更换:http://svn.code.sf.net/p/obi/code/releases/2015-10-20/obi.owl

此条目将与URL完全匹配http://purl.obolibrary.org/obo/obi/obi.owl,它将重定向到http://svn.code.sf.net/p/obi/code/releases/2015-10-20/obi.owl。匹配的域名是固定的http://purl.obolibrary.org; 下一部分是特定于项目的/obo/obi操作系统/; 最后一部分取自条目/欧比旺猫头鹰。替换应该是一个有效的绝对URL,以开头http协议.

在幕后,该条目被转换为中不区分大小写的Apache RedirectMatch指令obo/obi/.ht访问通过转义特殊字符并用首字母“锚定”^、项目的基本URL和final$:

RedirectMatch temp“(?i)^/2015\-09\-15/obi\.owl$”http://svn.code.sf.net/p/obi/code/releases/2015-09-15/obi.owl"

前缀

您还可以只匹配和替换URL的第一部分,其余部分保持不变。这允许您定义一个条目,重定向与公共前缀匹配的多个URL。另一个例子来自配置/obi.yml:

-前缀:/分支/更换:http://obi.svn.sourceforge.net/svnroot/obi/trunk/src/ontology/brances/

此条目将与URL匹配http://purl.obalibrary.org/obo/obi/branches/obi.owl(例如),更换第一个零件http://purl.obolibrary.org/obo/obi/brances/具有http://obi.svn.sourceforge.net/svnroot/obi/trunk/src/ontology/brances/,导致http://obi.svn.sourceforge.net/svnroot/obi/trunk/src/ontology/branches/obi.owl。实际上欧比旺猫头鹰附加到替换项。

译文类似,添加了(.*)通配符和$1给定字符串末尾的“反向引用”:

重定向Match temp“(?i)^/brances/(.*)$”http://obi.svn.sourceforge.net/svnroot/obi/trunk/src/ontology/brances/$1"

Regex公司

正则表达式条目应该只在极少的情况下使用,并且应该始终非常小心地使用。

对于正则表达式类型正则表达式:更换:关键字应包含完全符合Apache预期格式的正则表达式重定向匹配。将引用这些值,但不会对其进行其他更改。考虑使用(?i)使匹配不区分大小写。

测验

前缀正则表达式条目还应具有测验:关键字,以及要检查的其他URL列表。每个测试都需要发件人:值(如精确到:)和一个收件人:值(如更换:). 下面是一个示例:

-前缀:/分支/更换:http://obi.svn.sourceforge.net/svnroot/obi/trunk/src/ontology/branches/测验:-发件人:/brances/obi.owl收件人:http://obi.svn.sourceforge.net/svnroot/obi/trunk/src/ontology/branches/obi.owl

参赛顺序

Apache RedirectMatch指令在它们出现的顺序在配置文件中。小心你的前缀正则表达式条目与其他条目不冲突。YAML到Apache的转换保留了条目的顺序,因此您可以控制处理的顺序,但最好避免冲突。

自定义术语浏览器

如果您的项目不使用Ontobe或OLS作为术语浏览器,则必须指定term_browser:自定义在项目的YAML配置文件中,并提供正则表达式中的条目配置/obo.yml配置文件。下面是一个示例中国电子商务研究院:

#CHEBI术语-正则表达式:^/obo/CHEBI_(\d+)$更换:http://www.ebi.ac.uk/chebi/searchId.do?chebiId=chebi:$1测验:-发件人:/CHEBI_15377收件人:http://www.ebi.ac.uk/chebi/searchId.do?chebiId=chebi:15377

请注意,术语重定向规则区分大小写。

因为这些是正则表达式条目,并可能影响多个项目,我们希望海外建筑运营管理局管理员是唯一可以编辑的人obo.yml公司。如果您需要更改项目的术语重定向条目,请创建新问题.

开发和测试

PURL系统在Ubuntu Linux上运行,但您可以使用在Windows、Mac或Linux上运行的虚拟机(VM)测试您的更改。您的本地开发机器(Windows、Mac或Linux)将成为“主机”。虚拟机将是在您的主机上运行的Ubuntu Linux的一个副本,当您完成测试时,它可能会被丢弃。

您必须在主机上安装这三个工具:

  1. 虚拟机运行VM
  2. 流浪者设置虚拟机
  3. Ansible公司为VM提供正确的软件

所有这些工具都是免费的。如果您使用macOS自制软件,然后可以安装以下三个工具:

酿造装置--木桶储藏室/木桶/流浪者brew安装--木桶储藏室/木桶/虚拟盒子brew安装可用

安装三个工具后,请签出此存储库的副本并启动VM:

git克隆https://github.com/OBOFoundry/purl.obolibrary.org.gitcd purl.obolibrary.org/tools游荡起来

这将:

  1. 下载Ubuntu Linux虚拟机(使用Vagrant和工具/Vagrantfile)
  2. 运行它(使用VirtualBox)
  3. 将其配置为web服务器(使用Ansible和工具/站点.yml文件)

如果步骤3出现问题流浪食品命令将再次运行Ansible。拜托报告任何问题你遇到的。

使用主机上您最喜欢的文本编辑器对中的文件进行更改purl.obolibrary.org目录。该目录将与同步/var/www/purl.obolibrary.org虚拟机内的目录。当您准备好测试更改时,请登录到VM并重新构建.ht访问文件夹:

流浪者sshcd/var/www/purl.obolibrary.org使全部干净

您可以使用主机上的web浏览器查看结果,使用以开头的URLhttp://172.16.100.10/obo/,例如http://172.16.100.10/obo/OBI_0000070。您也可以运行自动测试。要检查单个配置/foo.yml配置文件,运行以下命令之一

make clean验证foo制作干净的build-foo

要更新和测试整个系统,请运行

进行清洁所有测试

详细测试结果将列在测试/开发/*.tsv文件及其预期值和实际值。如果您正在对项目工具进行更改,可以根据工具/示例/文件具有:

制作干净的测试示例

需要运行更广泛测试的专家用户可以考虑(暂时)修改他们的主机要重定向的文件purl.obolibrary.org到测试服务器。

完成VM后,使用注销出口。然后您可以选择使用挂起VM

流浪者停职

或使用删除VM

流浪破坏

您可以使用以下命令对生产PURL服务器进行测试制作测试产品。我们每秒只发出一个请求,以避免滥用服务器,因此这可能需要很长时间。

可选:同步VirtualBox来宾添加

如果您将开发虚拟机保留一段时间,启动虚拟机时可能会出现以下消息:

==>默认值:有更新版本的方框“ubuntu/trusty64”!您当前==>默认:版本为“20190122.1.1”。最新版本为“20190206.0.0”。运行==>默认值:要更新的`vagrant box update`。

如果升级,则下次恢复您的盒子时,您可能会收到警告:

[default]此VM上的来宾添加与的安装版本不匹配VirtualBox!这可能会导致诸如转发端口、共享文件夹等无法正常工作。如果其中任何一个失败了此机器,请更新来宾添加内容并重新打包框。

要在启动时自动与VirtualBox的Guest Additions同步(从而避免此警告),可以安装流浪的vbguest如此:

  • vagrant插件安装vagrant-vbguest(位于主机上的tools目录中)

现在,无论何时启动VM,它都会检查VM的来宾添加的版本,并在需要时自动将其更新。

部署

使用自动部署Ansible公司,并以安装了Python的库存Ubuntu Linux服务器为目标。您应该安装在新鲜的服务器,而不是运行其他应用程序的服务器,除非您真正地知道你在做什么。

在您的上安装Ansible地方的计算机,添加您的IP地址或主机名目标服务器到工具/主机,然后运行:

cd工具ansible-playbook-我主持site.yml

Ansible使用SSH连接到目标服务器并执行中定义的任务工具/站点.yml。如果您在连接时遇到问题,您可能需要调整SSH配置,使其更加自动化,例如通过编辑您的.ssh/config文件.

您可以在进行更改时重新运行Ansible。一旦系统运行,它将每隔10分钟从主Git存储库获取更改。从本地计算机上,您可以针对任何目标服务器测试所有URL,例如:

export PRODUCTION=url.ontodev.org;制作干净的测试产品

这个使安全更新任务将进行检查Travis-CI公司确保主分支上的最新构建通过了所有自动测试,并且比上次更新安全更新完整的。然后它将从Git存储库中提取并重建站点。这个应该确保安全克罗将PURL与存储库同步的任务。

版权

海外建筑运营管理局PURL代码和文件的版权归各自作者所有。代码分布在BSD3许可证.