如何在DSpace的集合中创建虚拟集?

时间:2018-09-17 03:14:29

标签: dspace oai

我在服务器A中有一个集合,该集合是不同项目类型的混合。现在,我想从服务器B中收集我针对每种可用物品类型设置的不同集合中的集合。

情况如下:

Server A -> CommunityA -> CollectionA
Server B -> CommunityB -> CollectionB1 (Article)
Server B -> CommunityB -> CollectionB2 (Book chapter)
Server B -> CommunityB -> CollectionB3 (Conference paper)

因此,在上述情况下,集合B1,B2和B3都将具有相同的OAI提供程序,并且服务器A中的同一集合(即集合A)中的记录来自集合A,不同之处在于集合B1仅收获商品类型为商品,商品B2和商品类型为本书章节和CollectionB3的项目类型为会议论文。

我已经在一些示例中看到了如何基于元数据或项目类型创建虚拟集,但据我所知,这些虚拟集已应用于存储库中的所有内容。

我的问题是如何仅通过集合A中的项目类型在服务器A中创建虚拟集?

1 个答案:

答案 0 :(得分:1)

如果控制服务器A,则可以定义一个按项目类型过滤的自定义OAI人行横道。

DSpace代码库包含一个OAI人行横道,该人行横道可以过滤类型为“论文”的项目。

    <!-- This condition determines if an Item has a "dc.type" field
         which contains "Thesis". -->
    <CustomCondition id="thesisDocumentTypeCondition">
        <Class>org.dspace.xoai.filter.DSpaceAtLeastOneMetadataFilter</Class>
        <Configuration>
            <string name="field">dc.type</string>
            <string name="operator">contains</string>
            <string name="value">Thesis</string>
        </Configuration>
    </CustomCondition>

https://github.com/DSpace/DSpace/blob/master/dspace/config/crosswalks/oai/xoai.xml#L310-L319