MOAI,机构知识库的开源服务器平台
项目描述
MOAI,机构知识库的开源服务器平台
MOAI是一个从不同来源聚合内容并通过开放存档初始化协议进行元数据收割进行发布的平台。它专为处理关系元数据和资产文件的教育机构知识库而构建。
它做什么?
MOAI软件可以从不同来源聚合内容,将其转换并存储在数据库中。该数据库的内容可以随后在许多单独的OAI源中发布,每个源都有自己的配置。
MOAI软件有一个非常灵活的将记录组合成集合的系统,并可以在源配置中使用这些集合。它还附带了一个简单但灵活的认证方案,可以轻松定制。除了为源提供认证外,认证还控制对资产的访问。
为什么选择MOAI
MOAI专门为大学开发,并包含了许多来之不易的智慧。该软件自2007年以来一直在生产中使用,并不断添加新功能。到2008年底,该软件被完全重构并以“MOAI”的名义打包。您可以在MOAI历史页面了解更多信息。
MOAI是一个独立的系统,因此它可以与任何带有OAI源的数据库软件配合使用,例如Fedora Commons、EPrints或DSpace。它还可以直接与SQL数据库或XML文件文件夹一起使用。
MOAI项目秉承每个存储库都是不同且独特的理念,认为机构存储库是一个活生生的实体。因此,它永远不会完成。元数据总是在变化、改进和演变。我们认为这是健康的。
由于这种观点,MOAI软件使得添加或修改存储库(OAI)服务堆栈的部分变得尽可能容易。它试图在不牺牲功能的同时鼓励组件的重用。
功能
MOAI有一些有趣的功能,这在大多数OAI服务器中是找不到的。除了提供OAI服务外,它还可以收集OAI数据。这使得MOAI可以作为管道工作,OAI数据可以在MOAI处理过程中重新配置、缓存和丰富。
更具体地说,MOAI具有以下能力:
从不同类型的源收集数据
从单个MOAI服务器提供多个OAI源,每个都有自己的配置
将元数据值动态转换为OAI集,创建新的集合
使用OAI集过滤源中的记录,每个源可配置
轻松处理关系数据(例如,如果作者更改,出版物也应更改)
通过Apache网关集成的简单而稳健的身份验证
通过Apache提供资产,同时仍使用可配置的身份验证规则
安装MOAI
MOAI软件可以在任何wsgi兼容的服务器上运行。
MOAI附带一个开发服务器,可用于测试。在生产中,可以使用mod_wsgi在Apache网关中运行Moai。
安装步骤
MOAI是一个普通的Python包。它已在python2.5和2.6上进行了测试。我建议创建一个virtualenv来安装该软件包。
http://pypi.python.org/pypi/virtualenv/
这使得开发和部署更加容易。以下说明针对Unix,但MOAI也应该在Windows上运行
进入包含setup.py的MOAI目录,并运行virtualenv命令
> cd moai > virtualenv .
现在,激活virtualenv
> source bin/activate
使用pip在virtualenv中安装MOAI
> pip install -e .
(这可能需要一段时间)
当此过程完成后,Moai及其所有依赖项将被安装。
以开发模式运行
开发服务器不应用于生产,它方便用于测试和开发。请注意,您应始终激活virtualenv,否则将找不到依赖项
> cd moai > source bin/activate > ./bin/paster serve settings.ini
这将打印如下内容:
启动服务器,PID为7306。在http://127.0.0.1:8080上启动HTTP服务器
您现在可以访问localhost:8080/oai来查看moai oaipmh源。
配置MOAI
配置在settings.ini文件中进行。默认设置文件使用Paste#urlmap应用程序将wsgi应用程序映射到URL。
在composite:main部分中有一行:
/oai = moai_example
它将/oai URL映射到Moai实例。这使得在一个服务器上运行多个Moai实例并具有各自配置变得容易。
app:moai_example配置允许您指定以下选项:
- name
OAI源(在Identify动词返回)的名称
- url
OAI数据流的URL(在oaipmh xml输出中返回)
- admin_email
管理员的电子邮件地址(在Identify动词中返回)
- formats
可用的元数据格式
- disallow_sets
不允许在此数据流输出中使用的setspec列表
- allow_sets
如果使用,则仅返回此处列出的集合
- database
用于存储的数据库的SQLAlchemy uri
- provider
moai从其中检索内容的提供者标识符
- content
将提供者格式映射到moai格式的类
添加内容
Moai系统旨在定期从提供者那里抓取内容,并将其转换为Moai的内部格式,然后可以将其转换为oaipmh数据流的不同元数据格式。
Moai附带了一个示例,展示了这一原理
在moai/moai目录中有两个XML文件。让我们假设这些文件来自一个远程系统,我们希望使用MOAI发布它们。
在settings.ini文件中,指定了以下选项
provider = file://moai/example-*.xml
这告诉moai我们想使用一个文件提供者,一些文件位于moai/example-*.xml。
以下选项指向我们想要用于将示例内容XML数据转换为Moai内部格式的类。
content = moai_example
最后一个选项告诉Moai存储数据的位置,这通常是一个sqlite数据库
database = sqlite:///moai-example.db
现在让我们尝试添加这两个XML文件,首先访问oaipmh数据流以确保没有任何内容正在被提供
http://localhost:8080/oai?verb=ListRecords&metadataPrefix=oai_dc
这应该返回一个noRecordsMatch错误。
要添加内容,运行update_content脚本,以settings.ini中的部分名称作为参数
> ./bin/update_moai moai_example
这将产生以下输出
/ 正在更新内容提供者:example-2345.xml 内容提供者返回了2个新的/修改的对象
100.0%[====================================================================>] 2 更新数据库中的2个对象耗时0秒
现在当您再次访问oaipmh数据流时,您应该看到这两个记录
http://localhost:8080/oai?verb=ListRecords&metadataPrefix=oai_dc
当您再次运行update_moai脚本时,它将创建一个新的数据库,其中包含所有记录(在本例中为moai_example.db)。您也可以使用–date开关指定数据。当指定数据时,仅添加在此日期之后修改的记录。update_moai脚本可以从每日或每小时cron作业中运行以更新数据库
添加您自己的提供者/内容和元数据类
扩展Moai以适应您的用例是可能的,也是大多数情况下需要的。如果想要这样做,示例中的提供者和内容类可能是一个很好的起点。您所有的自定义都应该通过entry_points注册到Moai中。有关更多信息,请参阅Moai的setup.py。最佳方法是将自己的python包与setup.py创建,并将其安装在与Moai相同的环境中。这将使Moai能够找到您的自定义。请注意,当您更改setup.py中的内容时,您必须重新安装包,以便Moai能够识别更改。
请注意,moai.interfaces文件包含了有关您可以实现的不同类的文档。
添加您自己的数据库
除了编写自己的提供者/内容类,您还可以注册自己的自定义数据库。实现moai.database.SQLDatabase的替代品可能比编写提供者/内容类更复杂,但它有一个优点,那就是Moai始终是最新的,并且您不需要第二个sqlite数据库。
查看MOAI代码中的setup.py文件,它注册了几个数据库。您可以使用此机制从自己的Python包中注册自己的数据库。
在settings.ini配置中,您可以引用您的数据库(“mydb://some+config+variables”)。
对于数据库,请查看database.py中的通用数据库提供程序。您需要实现的方法只有:oai_sets,oai_earliest_datestamp和oai_query。oai_query方法返回包含记录数据的字典。这些字典的键在元数据文件(例如metadata.py)中定义,请查看源代码。
对于oai_dc,有以下名称
“标题”,“创作者”,“主题”,“描述”,“出版商”,“贡献者”,“类型”,“格式”,“标识符”,“来源”,“语言”,“日期”,“关系”,“范围”,“权利
因此,返回值可能如下所示
{'id': <oai record id>, 'deleted': <bool>, 'modified': <utc datetime>, 'sets': <list of setspecs>, 'metadata': { 'title': [<list with publication title>], 'creator': [<list of creator names>], ...} }
MOAI变更
MOAI 2.0.0(2013-02-28)
2.x系列中的第一个公开版本,切换到mod_wsgi,代码更小更简单,通过entry_points实现可插拔性,而不是ZCA。
新增文档和示例,与外部数据库的直接集成更简单
更新mods格式并支持EU GAL元数据MODS扩展
菲尔ipe Correia对文档和工具进行了多项改进
MOAI 1.1.2(2010-09-30)
更改了联系信息,并将仓库从svn切换到mercurial。这次发布没有代码更改
变更
MOAI 1.1.1(2010-09-02)
变更
修复了MODS格式中的ID/IDref属性
修复了updatedb脚本进度条绘制中的ZeroDivisionError
MOAI 1.1.0(2010-04-08)
变更
添加了新的配置选项deleted_sets,可用于在特定上下文中将特定集合中的所有资源设置为oai已删除。在许多情况下,与disallowed_sets相比,这更为可取,因为资源在不允许的情况下会消失,而不留下适当的删除资源。
在Apache mod_python后端禁用范围HTTP请求。这会导致与Acrobat插件及其“快速网页查看”功能的问题。
在sqlite后端,按降序日期戳而不是按升序记录ID显示记录。
变更
MOAI 1.0.10(2010-03-25)
变更
在didl元数据格式中将DIP:objectType更改为rdf:type,这是由darenet/driver/didl 3.0格式要求的
在didl格式中添加了对修改日期和访问权限的支持
MOAI 1.0.9(2010-02-16)
变更
在update.py和update_database_iterate()中添加了对XML兼容性的检查。这可以防止OAI服务器在无效数据上崩溃。
修复了tools.py中的一个小错误。-d(调试)标志在update_database脚本中遇到错误时不会停止。
为DatabaseUpdater添加了一个flush_threshold属性。这可以在n条记录后使数据库刷新。默认值为-1,刷新仅在更新结束时发生。
修复了content.py中的断言语句(在python2.6中给出警告)
MOAI 1.0.8(2009-16-18)
变更
添加了MANIFEST.in文件,以确保所有文件都包含在Python包中。
MOAI 1.0.7(2009-16-11)
变更
更改了didl元数据扩展中的DIP名称空间
修复了ListMetadataFormats动词中的错误
使用pyoai 2.4.1,当指定日期(而非datetime)作为until参数时,默认为23:59:59而不是00:00:00。
MOAI 1.0.6(2009-08-12)
变更
修复了didl:Resource URL中的metadataPrefix值。这使用了didl而不是nl_didl
MOAI 1.0.5(2009-08-12)
Fedora提供程序中的Unicode错误
添加了对mods:location/url的支持,使url成为oai_dc:identifier的首选标识符,而不是uri
内容对象的更新方法现在可以返回False以阻止进一步处理对象。对象将被记录为忽略
MOAI 1.0.4(2009-07-15)
变更
修复了DIDL元数据前缀中的拼写错误mimeType属性
MOAI 1.0.3(2009-06-23)
变更
使用 nl_didl 前缀时 ListMetadataFormats 存在漏洞
添加了简单的 dc 示例配置文件
MOAI 1.0.2 (2009-05-20)
变更
在 mod_python 配置中的位置动态地从 Metro Server 类中提取。
MOAI 1.0.1 (2009-05-19)
变更
修复了 didl 元数据前缀中的 URL 错误
将 darenet 特定的 didl 扩展从 nl_didl 前缀中分离
MOAI 1.0 (2009-05-04)
变更
改进了文档
为 Identify 标头添加了描述
更完整的 mods 名称角色
需要更新的 pyoai 版本,以便在 OAI 请求中使用错误的 datetime 值时提供更好的错误响应
MOAI 0.9.x (2009-02-01)
变更
添加了 Apache mod_python 后端
为 fedora 提供商添加了基本身份验证
使 fedora 提供商的数据流参数可选,如果未指定,则返回整个 foxml 文件
从 EUR RePub 端口移植 SQLite 数据库后端
将 MetaDataPrefix 类重命名为 MetaDataFormat
添加了可配置的插件系统
添加了文档网站(更多信息请参阅 README.txt)
使 Fedora 提供商不在同一目录中写入所有文件
变更
OAI ListRecords 的 from 和 until 日期参数在 SQLite 引擎中不是inclusive的
OAI ListSets 不返回动态集(添加了测试)
OAI GetRecord 返回相同的记录(添加了测试)
MOAI 0.9 (2008-11-18)
初始开发借鉴了从 RepubXML 代码和想法,RepubXML 是为鹿特丹的 Erasmus 大学构建的存储库环境
项目详细信息
MOAI-2.0.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 60acfdc80ffe87d9fe7dfca6d9a815a4ef2ac7d35a4cce6dd125cc9de566856f |
|
MD5 | e2784de96d866942f9019c4def3ce6b4 |
|
BLAKE2b-256 | 52de94c98d8d3990f3650b2a1c0d39b2ccaab668cb63ad0a998a642640de761d |