moai,一个面向机构存储库的开放访问服务器平台

MOAI-iplweb的Python项目详细描述



MOAI,一个开放存取的机构存储库服务器平台
arvesting.
它是为处理关系元数据和资产文件的学术机构存储库而构建的。


-------


MOAI软件可以聚合来自不同来源的内容,对其进行转换并将其存储在数据库中。然后,这个数据库的内容可以发布在许多单独的oai提要中,每个提要都有自己的配置。

moai软件有一个非常灵活的系统,可以将记录组合成一组,并可以在feed配置中使用这些集合。它还提供了一个简单而灵活的身份验证方案,可以很容易地定制。除了为feed提供身份验证外,身份验证还控制对资产的访问。

为什么moai
——


moai是专门为大学开发的,包含了很多来之不易的智慧。该软件自2007年开始投入生产使用,并不断增加新功能。2008年底,该软件被彻底重构,并以"moai"的名义打包。您可以在"moai history"页面上阅读更多关于此的信息。

moai是一个独立的系统,因此它可以与任何带有oai提要的存储库软件(如"fedora commons"、"eprints"或"dspace")结合使用。它还可以直接与sql数据库或xml文件文件夹一起使用。

moai项目采用的理念是,每个存储库都是不同和唯一的,并且机构存储库是一个活的东西。因此,它从未结束。元数据总是不断变化、改进和演变的。我们认为这是健康的。

基于这种观点,moai软件使添加或修改存储库(oai)服务堆栈的部分尽可能简单。它试图在不牺牲电源的情况下做到这一点,并鼓励重用组件。

features
--


moai有一些在大多数oai服务器中找不到的有趣功能。
除了提供OAI外,它还可以收获OAI。这使得moai可以像管道一样工作,在这里,oai数据可以在moai处理过程中重新配置、缓存和丰富。




>更具体地说,moai能够:

-从不同来源获取数据
-提供许多oai feed from一个moai服务器,每个服务器都有自己的配置
-动态地将元数据值转换为oai集,创建新的集合
-使用oai集过滤feed中显示的记录,每个feed都可以配置
-轻松处理关系数据(例如,如果作者更改,则发布should也会发生变化)
-通过与apache web服务器集成实现简单而健壮的身份验证
-通过apache提供资产,同时仍然使用可配置的身份验证规则



。_ MOAI历史:http://moai.infrae.com/history.html
…_ Fedora Commons:http://www.fedora.info
_电子打印:http://www.eprints.org
…_ dspace:http://www.dspace.org/


这是一个fork
==


这是一个原始项目的fork,可以在https://github.com/infrae/moai/上找到,其中
包括travisci集成和python 3支持。这两个文件都以pull请求的形式返回给了最初的作者:https://github.com/infrae/moai/pull/5。如果
原始作者决定集成建议的更改并支持python 3,则此fork将不相关。


请注意,除了更新此自述文件和重命名setup.py文件之外,没有更大的更改。这意味着文档在某些部分可能会过时。接受修补程序。



===============
安装MOAI
====


…图片::https://img.shields.io/travis/iplweb/moai iplweb.svg
:目标:https://travis ci.org/iplweb/moai iplweb



moai软件可以在任何符合wsgi的服务器上运行。

moai附带了一个可用于测试的开发服务器。在生产模式中,wsgi可用于在apache web服务器中运行moai。


它是用python 2.7、3.4、3.5、3.6进行测试的。
我建议创建一个virtualenv来安装软件包。

使用setup.py进入moai目录,并运行virtualenv命令

>;cd moai
>;virtualenv。

同时)

此过程完成后,将安装MOAI及其所有依赖项。


在开发模式下运行
请注意,您应该始终激活virtualenv,否则将找不到依赖项

>;cd moai
>;source bin/activate
>;/bin/paster serve settings.ini

http://127.0.0.1:8080



在settings.ini文件中完成配置MOAI
默认设置文件使用粘贴url map应用程序将wsgi应用程序映射到url。


在"composite:main"部分有一行:

/oai=moai-example


这使得在一台服务器上运行多个maoi实例变得很容易,每个实例都有自己的配置。


app:moai_示例配置让您指定以下选项:


name
oai feed的名称(在identify verb中返回)
url
oai feed的url(re在OAIPMH XML输出中打开)
管理电子邮件
amdin的电子邮件地址(在标识动词中返回)
格式
可用的元数据格式
不允许设置
此馈送输出中不允许的设置规范列表
允许设置
如果使用,则仅列出此处的设置l返回
database
sqlalchemy uri以标识用于存储的数据库
provider
provider identifier,其中moai从
content
content将元数据从provider格式映射到moai格式的类检索内容


adding content
=moai系统被设计成周期性地从"provider"获取内容,并将其转换为moai的内部格式,然后可以将其转换为oaipmh提要的不同元数据格式。

moai附带了一个示例,展示了这一原理:

有两个XML文件。假设这些文件来自远程系统,我们希望用moai发布它们。

r/>`moai/example-*.xml`.

以下选项指向要用于将示例内容XML数据转换为MOAIS内部格式的类。


///moai example.db

现在让我们尝试添加t在这两个XML文件中,我们首先访问OAIPMH提要,以确保没有任何内容准备就绪:

http://localhost:8080/OAI?verb=listRecords&metadataprefix=oai dc

这将返回一个norecordsmatch错误。

tput:

/更新内容提供程序:example-2345.xml
内容提供程序返回两个新的/修改过的对象

100.0%[=======================2
用两个对象更新数据库需要0秒

现在,当您再次访问oaipmh提要时,您应该看到两条记录:

http://localhost:8080/oai?verb=listrecks&;metadataprefix=oai dc

再次运行update_moai脚本时,它将创建一个包含所有记录的新数据库(在本例中为moai_example.db)。也可以使用--date开关指定数据。指定数据时,将只添加在此日期之后修改的记录。
可以从每日或每小时的cron作业运行update-moai脚本来更新数据库

-案例。
如果您想这样做,示例中的提供者和内容类可能是一个很好的起点。所有定制都应该通过"入口点"注册到MOAI。查看moais setup.py以获取更多信息。
最好的方法是使用setup.py创建自己的python包,并将其安装在与moai相同的环境中。这将让摩艾找到你的定制。请注意,当您在setup.py中更改某些内容时,必须重新安装包,以便MOAI获取更改。


========================


您也可以注册自己的自定义数据库,而不是编写自己的提供者/内容类。实现moai.database.sqldatabase的替换比编写提供程序/内容类更复杂,但它的优点是moai始终是最新的,并且不需要第二个sqlite数据库。

Veral数据库。您可以使用此机制从自己的python包中注册自己的数据库。

您需要实现的唯一方法是:oai_set、oai_earliest_datestamp和oai_query。
oai_query方法返回包含记录数据的字典。这些字典的键是在元数据文件(例如metadata.py)中定义的,请查看源代码。

对于OAI DC,有以下名称:


"标题"、"创建者"、"主题"、"描述"、"发布者"、"参与者"、"类型"、"格式"、"标识符"、"源"、"语言"、"日期"、"关系"、"覆盖范围"、"权限"

ai记录id>;,
"已删除":<;bool>;,
"已修改":<;utc datetime>;,
"集合":<;setspecs列表>;,
"元数据":{
"标题":[<;带发布标题的列表>;],
"创建者":[<;创建者名称列表>;],
…}
}









==


moai 2.0.0(2013-02-28)
=-


-2.x系列的首次公开发行,改为mod_wsgi,
更小更简单的代码库,通过入口点而不是zca的可插入性。
-新的文档和示例,更简单的与外部数据库的直接集成
-更新mods格式和对eu-gal元数据mods扩展的支持
-filip的一些文档和工具改进e correia

=-


-更改了联系人信息,并将存储库从svn切换到mercurial
此版本没有代码更改




~~~~

-


s
~~~~~~~

-以mods格式固定id/idref属性
-在更新的b脚本的progressbar绘图中修复了零分区错误

>moai 1.1.0(2010-04-08)
——在
特定提要的上下文中,将特定集合"oai deleted"中的所有
资源设为"已删除"。在许多情况下,与"不允许的"集合相比,这是更可取的,因为如果不留下适当的已删除资源,资源将在不允许的情况下消失。
-在apache mod_python后端禁用范围内的http请求。这给Acrobat插件及其"快速Web视图"功能带来了
问题。
-在Sqlite后端显示按降序日期戳排序的记录,而不是按升序记录ID排序的记录。

s
~~~~~~~

-将dip:objecttype更改为rdf:didl元数据格式,
根据darenet/driver/didl 3.0格式的要求
-添加了对didl格式的修改日期和访问权限的支持



moai 1.0.9(2010-02-16)
anges
~~~~~~~

-在update.py,update_database_iterate()中添加了对XML兼容性的检查。
这可防止OAI服务器在无效数据上崩溃。
-修复了tools.py中的一个小错误。update_数据库的-d(调试)标志
脚本没有在出现错误时停止。

-向databaseupdater添加了flush_threshold属性。这可以
用于使数据库在n条记录之后刷新。默认情况下,值
为-1,刷新仅在更新结束时发生。
-在content.py中修复了断言语句(在python2.6中给出警告)



-


确保所有文件都包含在python包中。


moai 1.0.7(2009-16-11)
——


更改
~~~~~

-更改了didl元数据扩展中的dip命名空间
-修复了listmataformats动词中的错误
-使用pyoai 2.4.1,在指定g until参数的日期(而不是日期时间)
,默认值为23:59:59,而不是00:00:00。

=--


这是使用
"didl"而不是"nl_didl"

moai 1.0.5(2009-08-12)
——

-fedora provider中的unicode错误
-添加了对mods的支持:location/url
make url preferred identifier in oai_dc:identifier而不是uri
-更新内容o的方法对象现在可以返回false以防止对象的进一步处理。对象将被记录为
`ignored`


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)
=--


~~~~~

-l更改mod_python config中的位置是从metro服务器类中动态提取的。


moai 1.0.1(2009-05-19)
=--


/>MOAI 1.0(2009-05-04)
----

在OAI请求中,sed


moai 0.9.x(2009-02-01)
=-


更改
~~~~~~~
-添加apache mod_python backend
-添加Fedora提供程序的基本身份验证
-使Fedora提供程序数据流参数成为可选参数,
如果未指定整个FoxML FI返回le
-从eur repub移植sqlite数据库后端
-将metadataprefix类重命名为metadataformat
-添加可配置的插件系统
-添加文档网站(更多信息见readme.txt)
-使fedora提供程序不将所有文件写入同一目录

chanGES
~~~~~~~~
-OAI ListRecords,其中From和Until DateParams在SQLite引擎中不包含
-OAI ListSets未返回动态集(添加的测试)
-OAI GetRecord返回相同的记录(添加的测试)



MOAI 0.9(2008-11-18)
-最初的开发借用了repubxml的代码和思想,
为鹿特丹伊拉斯谟大学构建了一个存储库环境

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

推荐PyPI第三方库


热门话题
java通过Spring MVC web应用程序向客户端发送文本文件   java是否可以在运行时动态实例化DAO类?   调用VB。来自Java的net函数   java在Android中通过单击打开特定文件夹   java如何使用maven pom。xml标识非标准项目结构中的testng测试用例?   java为什么FOP在大文件上崩溃?   Architecture python+flask和spring boot+java   java Kafka工具根本没有启动Ubuntu 19.10   如何使用Eclipse运行Java USB API for Windows   java如何在Eclipse中查看J2EE预览服务器/容器的日志/控制台?   网页抓取是否可以使用Java crawler crawler4j暂停和恢复抓取?   java当我第二次按下按钮时,应用程序停止工作   带有偏移量和限制的java SQLite分页问题   java如何在OSX mavericks中将端口80转发到8080   java从泛型方法调用非泛型方法   java My代码未按预期工作。十进制输出不是它应该的样子   节点。java中的js加密(jasypt)和nodejs中的解密   java乘法表不工作数组索引超出范围   java将JDBC与Firebirdsql连接起来