Published

January 6, 2025

Collections of triple sets

The DSECollection contains a human-readable label, and list of DSETriples, and is identified by Cite2Urn. You can construct one manually, as in this example.

using CitablePhysicalText
using CitableObject
using CitableText

dseurn = Cite2Urn("urn:cite2:hmt:dse.v1:msBil4")
dselabel = "Collection of DSE records for Venetus A text of Proclus, Chrestomathy"

triplelines = """urn:cts:greekLit:tlg4036.tlg023.va:Homer.title|urn:cite2:hmt:vaimg.2017a:VA001RN_0002@0.1580,0.1633,0.4740,0.05302|urn:cite2:hmt:msA.v1:1r
urn:cts:greekLit:tlg4036.tlg023.va:Homer.1|urn:cite2:hmt:vaimg.2017a:VA001RN_0002@0.1335,0.2054,0.4637,0.04139|urn:cite2:hmt:msA.v1:1r
urn:cts:greekLit:tlg4036.tlg023.va:Homer.2|urn:cite2:hmt:vaimg.2017a:VA001RN_0002@0.1553,0.2292,0.4508,0.04678|urn:cite2:hmt:msA.v1:1r
urn:cts:greekLit:tlg4036.tlg023.va:Homer.3|urn:cite2:hmt:vaimg.2017a:VA001RN_0002@0.1449,0.2620,0.4641,0.05869|urn:cite2:hmt:msA.v1:1r
"""
triplelist = triples(triplelines)
coll = DSECollection(dseurn, dselabel, triplelist)
urn:cite2:hmt:dse.v1:msBil4 Collection of DSE records for Venetus A text of Proclus, Chrestomathy

Alternatively, you can construct a DSECollection directly from a CEX source (as illustrated below, and on the following page).

A citable object

The DSECollection is a citable object, and therefore fufills traits for citation, comparison using URN logic, and CEX serialization, as you can verify with these functions from CitableBase.

using CitableBase
citable(coll)
true
urncomparable(coll)
true
cexserializable(coll)
true

Citation

You can therefore apply the urn and label functions of CitableBase to it.

urn(coll)
urn:cite2:hmt:dse.v1:msBil4
label(coll)
"Collection of DSE records for Venetus A text of Proclus, Chrestomathy"

URN comparison

DSECollections can be compared using URN logic.

dupe = coll
urnequals(coll, dupe)
true

Since a DSECollection should be uniquely identified, however, it is more likely that you’ll want to compare a URN to the DSECollection’s URN.

common = dropobject(dseurn)
urncontains(common, urn(coll))
true
urnsimilar(common, urn(coll))
true

CEX serialization

collcex = cex(coll)
"#!datamodels\nCollection|Model|Label|Description\nurn:cite2:hmt:dse.v1:msBil4|urn:cite2:cite:datamodels.v1:dsemodel|Passage of text in a digital scholarly edition|Relations of text, manuscript page and documentary image for all edited texts\n\n#!citerelationset\nurn|urn:cite2" ⋯ 393 bytes ⋯ "\nurn:cts:greekLit:tlg4036.tlg023.va:Homer.2|urn:cite2:hmt:vaimg.2017a:VA001RN_0002@0.1553,0.2292,0.4508,0.04678|urn:cite2:hmt:msA.v1:1r\nurn:cts:greekLit:tlg4036.tlg023.va:Homer.3|urn:cite2:hmt:vaimg.2017a:VA001RN_0002@0.1449,0.2620,0.4641,0.05869|urn:cite2:hmt:msA.v1:1r"
fromcex(collcex, DSECollection) == coll
false