oracle元数据到ods,将元数据存储到Jackrabbit存储库中
小編典典
對于JCR 2.0,上傳文件基本上與對于JCR 1.0而言是相同的。但是,JCR 2.0添加了一些有用的附加內置屬性定義。
“ nt:file”節點類型旨在表示文件,并且在JCR 2.0中具有兩個內置屬性定義(這兩個屬性定義都是在創建節點時由存儲庫自動創建的):
jcr:已創建(DATE)
jcr:createdBy(STRING)
并定義一個名為“ jcr:content”的子級。該“
jcr:content”節點可以是任何節點類型,但是通常來說,與內容本身有關的所有信息都存儲在此子節點上。事實上的標準是使用“
nt:resource”節點類型,該節點類型定義了以下屬性:
jcr:data(BINARY)必選
jcr:lastModified(DATE)自動創建
jcr:lastModifiedBy(STRING)自動創建
jcr:mimeType(STRING)受保護嗎?
jcr:encoding(STRING)受保護嗎?
注意,在JCR 2.0中添加了“ jcr:mimeType”和“ jcr:encoding”。
特別是,“ jcr:mimeType”屬性的目的是完全按照您的要求執行-捕獲內容的“類型”。但是,“ jcr:mimeType”和“
jcr:encoding”屬性定義可以(通過JCR實現)定義為受保護(意味著JCR實現自動設置它們)-如果是這種情況,將不允許您手動進行設置這些屬性。我相信Jackrabbit和ModeShape不會將它們視為受保護的對象。
以下是一些代碼,顯示了如何使用這些內置節點類型將文件上傳到JCR 2.0存儲庫:
// Get an input stream for the file ...
File file = ...
InputStream stream = new BufferedInputStream(new FileInputStream(file));
Node folder = session.getNode("/absolute/path/to/folder/node");
Node file = folder.addNode("Article.pdf","nt:file");
Node content = file.addNode("jcr:content","nt:resource");
Binary binary = session.getValueFactory().createBinary(stream);
content.setProperty("jcr:data",binary);
而且,如果JCR實現未將“ jcr:mimeType”屬性視為受保護的對象(即Jackrabbit和ModeShape),則必須手動設置此屬性:
content.setProperty("jcr:mimeType","application/pdf");
元數據可以很容易地存儲在“ nt:file”和“ jcr:content”節點上,但是現成的“ nt:file”和“
nt:resource”節點類型不允許額外的屬性。因此,在添加其他屬性之前,首先需要添加一個mixin(或多個mixin),這些mixin具有要存儲的各種屬性的屬性定義。您甚至可以定義允許任何屬性的混合。這是一個定義此類混合的CND文件:
[custom:extensible] mixin
- * (undefined) multiple
- * (undefined)
注冊此節點類型定義后,可以在節點上使用它:
content.addMixin("custom:extensible");
content.setProperty("anyProp","some value");
content.setProperty("custom:otherProp","some other value");
您還可以定義并使用允許所有Dublin Core元素使用的mixin :
[dc:metadata] mixin
- dc:contributor (STRING)
- dc:coverage (STRING)
- dc:creator (STRING)
- dc:date (DATE)
- dc:description (STRING)
- dc:format (STRING)
- dc:identifier (STRING)
- dc:language (STRING)
- dc:publisher (STRING)
- dc:relation (STRING)
- dc:right (STRING)
- dc:source (STRING)
- dc:subject (STRING)
- dc:title (STRING)
- dc:type (STRING)
所有這些屬性都是可選的,并且該mixin不允許使用任何名稱或類型的屬性。我還沒有真正解決“
dc:metadata”混合問題,因為其中一些已經用內置屬性表示(例如,“ jcr:createBy”,“ jcr:lastModifiedBy”,“
jcr:created” ,“ jcr:lastModified”,“ jcr:mimeType”),其中一些可能與內容更相關,而其他一些與文件更相關。
您當然可以定義其他更適合您的元數據需求的混合,并在需要時使用繼承。但是要謹慎使用繼承與mixin-
由于JCR允許一個節點使用多個mixin,因此通常最好將mixin設計為范圍狹窄且面向方面的(例如,“ ex:taggable”,“
ex:describable”等)。然后只需根據需要將適當的mixin應用于節點。
(甚至更復雜,甚至有可能定義一個混合,以便在“ nt:file”節點下允許更多子節點,并在其中存儲一些元數據。)
Mixins非常棒,為您的JCR內容提供了極大的靈活性和力量。
哦,當您創建了所有想要的節點后,請確保保存會話:
session.save();
2020-12-03
總結
以上是生活随笔為你收集整理的oracle元数据到ods,将元数据存储到Jackrabbit存储库中的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: d630无电池升级bios_太重要,你想
- 下一篇: java heap 参数_java he