我在服务器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中创建虚拟集?
答案 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