diff --git a/v2/2_1_1/schemas/dbl-xhtml.rnc b/v2/2_1_1/schemas/dbl-xhtml.rnc
index 58f85f1..adfd04a 100644
--- a/v2/2_1_1/schemas/dbl-xhtml.rnc
+++ b/v2/2_1_1/schemas/dbl-xhtml.rnc
@@ -1,6 +1,6 @@
# dbl-xhtml.rnc v2.1.1
# Generated by mark@notamacbook using makeRNC.py
-# Generated Tue Jan 30 16:46:24 2018
+# Generated Tue Feb 6 19:20:05 2018
# Standalone xhtml schema
diff --git a/v2/2_1_1/schemas/dbl-xhtml.rng b/v2/2_1_1/schemas/dbl-xhtml.rng
index f46cf73..6656118 100644
--- a/v2/2_1_1/schemas/dbl-xhtml.rng
+++ b/v2/2_1_1/schemas/dbl-xhtml.rng
@@ -3,7 +3,7 @@
diff --git a/v2/2_1_1/schemas/dbl-xhtml.xsd b/v2/2_1_1/schemas/dbl-xhtml.xsd
index 1274925..05fb177 100644
--- a/v2/2_1_1/schemas/dbl-xhtml.xsd
+++ b/v2/2_1_1/schemas/dbl-xhtml.xsd
@@ -3,7 +3,7 @@
diff --git a/v2/2_1_1/schemas/job-spec-upload.rnc b/v2/2_1_1/schemas/job-spec-upload.rnc
index 08f84ad..cafdf27 100644
--- a/v2/2_1_1/schemas/job-spec-upload.rnc
+++ b/v2/2_1_1/schemas/job-spec-upload.rnc
@@ -1,6 +1,6 @@
# job-spec-upload.rnc v2.1.1
# Generated by mark@notamacbook using makeRNC.py
-# Generated Tue Jan 30 16:46:24 2018
+# Generated Tue Feb 6 19:20:05 2018
# job specification
@@ -17,7 +17,7 @@ start = element job-request {
# Document types
-dblMetadataElement = (translationMetadata | expressionMetadata | translationAndExpressionMetadata)
+dblMetadataElement = (translationMetadata | expressionMetadata | translationAndExpressionMetadata | paratextZipResourceMetadata)
translationMetadata = textTranslationMetadata | audioTranslationMetadata | videoTranslationMetadata
@@ -124,6 +124,20 @@ videoTranslationAndExpressionMetadata = element DBLMetadata {
videoFormatElement
}
+paratextZipResourceMetadata = element DBLMetadata {
+ dblMetadataCommonAtts &
+ paratextZipResourceIdentificationElement &
+ paratextZipResourceTypeElement &
+ relationshipsElement &
+ paratextZipResourceAgenciesElement &
+ shortLanguageElement &
+ translationManifestElement &
+ paratextZipResourceSourceElement &
+ paratextZipResourcePublicationsElement &
+ copyrightElement &
+ archiveStatusElement
+}
+
translationCommonElements = (
commonElements &
translationManifestElement &
@@ -202,9 +216,19 @@ identificationElement =
element descriptionLocal { lenGe2String }? &
element scope { scopeEnum } &
canonSpecElement? &
+ element dateCompleted { dateCompletedValue }? &
+ (gbcSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
+ element bundleProducer { lenGe2String }
+ }
+paratextZipResourceIdentificationElement =
+ element identification {
+ element name { lenGe2String } &
+ element nameLocal { lenGe2String }? &
+ element abbreviation { abbreviationString } &
+ element abbreviationLocal { localAbbreviationString }? &
element dateCompleted { dateCompletedValue }? &
- (gbcSystemId | ptSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId)* &
+ (ptSystemId | gbcSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
element bundleProducer { lenGe2String }
}
@@ -218,9 +242,8 @@ textIdentificationElement =
element descriptionLocal { lenGe2String }? &
element scope { scopeEnum } &
canonSpecElement? &
-
element dateCompleted { dateCompletedValue }? &
- (gbcSystemId | ptSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
+ (ptSystemId | gbcSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
element bundleProducer { lenGe2String }
}
@@ -262,7 +285,11 @@ ptElements =
element name { lenGe2String } &
element fullName { lenGe2String } &
element csetId { lenGe2String }? &
- element id { ptId }
+ element id { ptId } &
+ (
+ element baseId { ptId } &
+ element baseName { lenGe2String }
+ )?
ptregElements =
element id { ptregId }
@@ -426,6 +453,13 @@ agenciesElement =
contributorElement+
}
+paratextZipResourceAgenciesElement =
+ element agencies {
+ rightsHolderElement+ &
+ rightsAdminElement? &
+ contributorElement?
+ }
+
rightsHolderElement =
element rightsHolder {
element abbr { lenGe2String } &
@@ -826,6 +860,16 @@ videoTranslationAndExpressionTypeElement =
element isConfidential { xsd:boolean }
}
+paratextZipResourceTypeElement =
+ element type {
+ element medium { "paratextZipResource" } &
+ element hasCharacters { "true" } &
+ element isTranslation { "false" } &
+ element isExpression { "false" } &
+ element isConfidential { xsd:boolean } &
+ element projectType { paratextZipResourceProjectType }
+}
+
commonTextTranslationTypeElements = (
commonTranslationTypeElements
)
@@ -885,6 +929,20 @@ translationLevelEnum = (
"Children"
)
+paratextZipResourceProjectType = (
+ "Standard" |
+ "Daughter" |
+ "StudyBible" |
+ "StudyBibleAdditions" |
+ "BackTranslation" |
+ "Auxiliary" |
+ "TransliterationManual"|
+ "TransliterationWithEncoder" |
+ "ConsultantNotes" |
+ "GlobalConsultantNotes" |
+ "GlobalAnthropologyNotes"
+)
+
# format
textFormatElement =
@@ -1071,6 +1129,11 @@ translationSourceElement =
( element canonicalContent { canonicalContentBook+} & element structure { (sourceStructureDivision | sourceStructureContent)+ } )
}
+paratextZipResourceSourceElement =
+ element source {
+ element structure { (sourceStructureDivision | sourceStructureContent)+ }
+ }
+
sourceStructureDivision =
element division {
attribute name {nameIdString},
@@ -1089,11 +1152,16 @@ sourceStructureContent =
srcPathString = xsd:string { pattern = "[A-Za-z0-9][\-A-Za-z0-9_\.]+(/[A-Za-z0-9][\-A-Za-z0-9_\.]+)*" }
+srcPathPartString = xsd:string { pattern = "(((zip|xpath)://)|#).+" }
+
# publications
publicationsElement = # DCMI: tableOfContents
element publications { publicationElement+ }
+paratextZipResourcePublicationsElement =
+ element publications { paratextZipResourcePublicationElement+ }
+
publicationElement =
element publication {
attribute id { publicationId },
@@ -1101,6 +1169,13 @@ publicationElement =
publicationChildElements
}
+paratextZipResourcePublicationElement =
+ element publication {
+ attribute id { publicationId },
+ attribute default { xsd:boolean }?,
+ paratextZipResourcePublicationChildElements
+ }
+
publicationChildElements = (
element name { lenGe2String }? &
element nameLocal { lenGe2String }? &
@@ -1114,6 +1189,11 @@ publicationChildElements = (
element canonicalContent { canonicalContentBook+} &
element structure { (publicationStructureDivision | publicationStructureContent)+ }
)
+paratextZipResourcePublicationChildElements = (
+ element name { lenGe2String }? &
+ element nameLocal { lenGe2String }? &
+ element structure { (publicationStructureDivision | publicationStructureContent)+ }
+)
publicationCountriesElement = element countries { countryElement+ }
@@ -1133,12 +1213,13 @@ publicationStructureContent =
element content {
attribute name {nameIdString}? &
attribute src {srcPathString} &
- attribute role {roleId}?
+ attribute role {roleId}? &
+ attribute srcPart {srcPathPartString}?
}
# publications text
-roleId = ptReference | knownRole | extensionRole
+roleId = ptReference | nonCanonicalBookIdEnum | knownRole | extensionRole
ptReference = xsd:string { pattern = "((GEN|EXO|LEV|NUM|DEU|JOS|JDG|RUT|1SA|2SA|1KI|2KI|1CH|2CH|EZR|NEH|EST|JOB|PSA|PRO|ECC|SNG|ISA|JER|LAM|EZK|DAN|HOS|JOL|AMO|OBA|JON|MIC|NAM|HAB|ZEP|HAG|ZEC|MAL|MAT|MRK|LUK|JHN|ACT|ROM|1CO|2CO|GAL|EPH|PHP|COL|1TH|2TH|1TI|2TI|TIT|PHM|HEB|JAS|1PE|2PE|1JN|2JN|3JN|JUD|REV|TOB|JDT|ESG|WIS|SIR|BAR|LJE|S3Y|SUS|BEL|1MA|2MA|3MA|4MA|1ES|2ES|MAN|PS2|ODA|PSS|JSA|JDB|TBS|SST|DNT|BLT|EZA|5EZ|6EZ|DAG|PS3|2BA|LBA|JUB|ENO|1MQ|2MQ|3MQ|REP|4BA|LAO)(( [1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?((,([1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?))*))|( [1-9][0-9]{0,2}:[1-9][0-9]{0,2}(-[1-9][0-9]{0,2}(:[1-9][0-9]{0,2})?)?(,(([1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?)|([1-9][0-9]{0,2}:[1-9][0-9]{0,2}(-[1-9][0-9]{0,2}(:[1-9][0-9]{0,2})?)?)))*))?)(;(((GEN|EXO|LEV|NUM|DEU|JOS|JDG|RUT|1SA|2SA|1KI|2KI|1CH|2CH|EZR|NEH|EST|JOB|PSA|PRO|ECC|SNG|ISA|JER|LAM|EZK|DAN|HOS|JOL|AMO|OBA|JON|MIC|NAM|HAB|ZEP|HAG|ZEC|MAL|MAT|MRK|LUK|JHN|ACT|ROM|1CO|2CO|GAL|EPH|PHP|COL|1TH|2TH|1TI|2TI|TIT|PHM|HEB|JAS|1PE|2PE|1JN|2JN|3JN|JUD|REV|TOB|JDT|ESG|WIS|SIR|BAR|LJE|S3Y|SUS|BEL|1MA|2MA|3MA|4MA|1ES|2ES|MAN|PS2|ODA|PSS|JSA|JDB|TBS|SST|DNT|BLT|EZA|5EZ|6EZ|DAG|PS3|2BA|LBA|JUB|ENO|1MQ|2MQ|3MQ|REP|4BA|LAO)(( [1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?((,([1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?))*))|( [1-9][0-9]{0,2}:[1-9][0-9]{0,2}(-[1-9][0-9]{0,2}(:[1-9][0-9]{0,2})?)?(,(([1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?)|([1-9][0-9]{0,2}:[1-9][0-9]{0,2}(-[1-9][0-9]{0,2}(:[1-9][0-9]{0,2})?)?)))*))?)))*" }
diff --git a/v2/2_1_1/schemas/job-spec-upload.rng b/v2/2_1_1/schemas/job-spec-upload.rng
index 04c1582..5b6d3f0 100644
--- a/v2/2_1_1/schemas/job-spec-upload.rng
+++ b/v2/2_1_1/schemas/job-spec-upload.rng
@@ -2,7 +2,7 @@
@@ -34,6 +34,7 @@
+
@@ -191,6 +192,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -367,11 +385,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -420,8 +479,8 @@
-
+
@@ -493,6 +552,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -755,6 +824,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1413,6 +1497,30 @@
+
+
+
+
+ paratextZipResource
+
+
+ true
+
+
+ false
+
+
+ false
+
+
+
+
+
+
+
+
+
+
@@ -1483,6 +1591,21 @@
Children
+
+
+ Standard
+ Daughter
+ StudyBible
+ StudyBibleAdditions
+ BackTranslation
+ Auxiliary
+ TransliterationManual
+ TransliterationWithEncoder
+ ConsultantNotes
+ GlobalConsultantNotes
+ GlobalAnthropologyNotes
+
+
@@ -1876,6 +1999,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1919,6 +2054,11 @@
[A-Za-z0-9][\-A-Za-z0-9_\.]+(/[A-Za-z0-9][\-A-Za-z0-9_\.]+)*
+
+
+ (((zip|xpath)://)|#).+
+
+
@@ -1928,6 +2068,13 @@
+
+
+
+
+
+
+
@@ -1941,6 +2088,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1999,6 +2159,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2047,6 +2229,11 @@
+
+
+
+
+
@@ -2054,6 +2241,7 @@
+
diff --git a/v2/2_1_1/schemas/metadata-lax.rnc b/v2/2_1_1/schemas/metadata-lax.rnc
index 07e6b16..260b063 100644
--- a/v2/2_1_1/schemas/metadata-lax.rnc
+++ b/v2/2_1_1/schemas/metadata-lax.rnc
@@ -1,6 +1,6 @@
# metadata-lax.rnc v2.1.1
# Generated by mark@notamacbook using makeRNC.py
-# Generated Tue Jan 30 16:46:24 2018
+# Generated Tue Feb 6 19:20:04 2018
default namespace = ""
namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
@@ -11,7 +11,7 @@ start = dblMetadataElement
# Document types
-dblMetadataElement = (translationMetadata | expressionMetadata | translationAndExpressionMetadata)
+dblMetadataElement = (translationMetadata | expressionMetadata | translationAndExpressionMetadata | paratextZipResourceMetadata)
translationMetadata = textTranslationMetadata | audioTranslationMetadata | videoTranslationMetadata
@@ -118,6 +118,20 @@ videoTranslationAndExpressionMetadata = element DBLMetadata {
videoFormatElement
}
+paratextZipResourceMetadata = element DBLMetadata {
+ dblMetadataCommonAtts &
+ paratextZipResourceIdentificationElement &
+ paratextZipResourceTypeElement &
+ relationshipsElement &
+ paratextZipResourceAgenciesElement &
+ shortLanguageElement &
+ translationManifestElement &
+ paratextZipResourceSourceElement &
+ paratextZipResourcePublicationsElement &
+ copyrightElement &
+ archiveStatusElement
+}
+
translationCommonElements = (
commonElements &
translationManifestElement &
@@ -196,9 +210,19 @@ identificationElement =
element descriptionLocal { lenGe2String }? &
element scope { scopeEnum } &
canonSpecElement? &
+ element dateCompleted { dateCompletedValue }? &
+ (gbcSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
+ element bundleProducer { lenGe2String }
+ }
+paratextZipResourceIdentificationElement =
+ element identification {
+ element name { lenGe2String } &
+ element nameLocal { lenGe2String }? &
+ element abbreviation { abbreviationString } &
+ element abbreviationLocal { localAbbreviationString }? &
element dateCompleted { dateCompletedValue }? &
- (gbcSystemId | ptSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId)* &
+ (ptSystemId | gbcSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
element bundleProducer { lenGe2String }
}
@@ -212,9 +236,8 @@ textIdentificationElement =
element descriptionLocal { lenGe2String }? &
element scope { scopeEnum } &
canonSpecElement? &
-
element dateCompleted { dateCompletedValue }? &
- (gbcSystemId | ptSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
+ (ptSystemId | gbcSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
element bundleProducer { lenGe2String }
}
@@ -256,7 +279,11 @@ ptElements =
element name { lenGe2String } &
element fullName { lenGe2String } &
element csetId { lenGe2String }? &
- element id { ptId }
+ element id { ptId } &
+ (
+ element baseId { ptId } &
+ element baseName { lenGe2String }
+ )?
ptregElements =
element id { ptregId }
@@ -359,6 +386,13 @@ agenciesElement =
contributorElement+
}
+paratextZipResourceAgenciesElement =
+ element agencies {
+ rightsHolderElement+ &
+ rightsAdminElement? &
+ contributorElement?
+ }
+
rightsHolderElement =
element rightsHolder {
element abbr { lenGe2String } &
@@ -559,6 +593,16 @@ videoTranslationAndExpressionTypeElement =
element isConfidential { xsd:boolean }
}
+paratextZipResourceTypeElement =
+ element type {
+ element medium { "paratextZipResource" } &
+ element hasCharacters { "true" } &
+ element isTranslation { "false" } &
+ element isExpression { "false" } &
+ element isConfidential { xsd:boolean } &
+ element projectType { paratextZipResourceProjectType }
+}
+
commonTextTranslationTypeElements = (
commonTranslationTypeElements
)
@@ -760,6 +804,11 @@ translationSourceElement =
( element canonicalContent { canonicalContentBook+} & element structure { (sourceStructureDivision | sourceStructureContent)+ } )
}
+paratextZipResourceSourceElement =
+ element source {
+ element structure { (sourceStructureDivision | sourceStructureContent)+ }
+ }
+
sourceStructureDivision =
element division {
attribute name {nameIdString},
@@ -783,6 +832,9 @@ srcPathString = text
publicationsElement = # DCMI: tableOfContents
element publications { publicationElement+ }
+paratextZipResourcePublicationsElement =
+ element publications { paratextZipResourcePublicationElement+ }
+
publicationElement =
element publication {
attribute id { publicationId },
@@ -790,6 +842,13 @@ publicationElement =
publicationChildElements
}
+paratextZipResourcePublicationElement =
+ element publication {
+ attribute id { publicationId },
+ attribute default { xsd:boolean }?,
+ paratextZipResourcePublicationChildElements
+ }
+
publicationChildElements = (
element name { lenGe2String }? &
element nameLocal { lenGe2String }? &
@@ -803,6 +862,11 @@ publicationChildElements = (
element canonicalContent { canonicalContentBook+} &
element structure { (publicationStructureDivision | publicationStructureContent)+ }
)
+paratextZipResourcePublicationChildElements = (
+ element name { lenGe2String }? &
+ element nameLocal { lenGe2String }? &
+ element structure { (publicationStructureDivision | publicationStructureContent)+ }
+)
publicationCountriesElement = element countries { countryElement+ }
@@ -822,7 +886,8 @@ publicationStructureContent =
element content {
attribute name {nameIdString}? &
attribute src {srcPathString} &
- attribute role {roleId}?
+ attribute role {roleId}? &
+ attribute srcPart {srcPathPartString}?
}
# publications text
diff --git a/v2/2_1_1/schemas/metadata-lax.rng b/v2/2_1_1/schemas/metadata-lax.rng
index 93b23a1..17d9bbe 100644
--- a/v2/2_1_1/schemas/metadata-lax.rng
+++ b/v2/2_1_1/schemas/metadata-lax.rng
@@ -2,7 +2,7 @@
@@ -15,6 +15,7 @@
+
@@ -172,6 +173,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -326,11 +344,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -379,8 +438,8 @@
-
+
@@ -452,6 +511,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -617,6 +686,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1060,6 +1144,30 @@
+
+
+
+
+ paratextZipResource
+
+
+ true
+
+
+ false
+
+
+ false
+
+
+
+
+
+
+
+
+
+
@@ -1439,6 +1547,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1489,6 +1609,13 @@
+
+
+
+
+
+
+
@@ -1502,6 +1629,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1560,6 +1700,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1608,6 +1770,11 @@
+
+
+
+
+
diff --git a/v2/2_1_1/schemas/metadata-template.rnc b/v2/2_1_1/schemas/metadata-template.rnc
index e53a75b..5ba40b1 100644
--- a/v2/2_1_1/schemas/metadata-template.rnc
+++ b/v2/2_1_1/schemas/metadata-template.rnc
@@ -1,6 +1,6 @@
# metadata-template.rnc v2.1.1
# Generated by mark@notamacbook using makeRNC.py
-# Generated Tue Jan 30 16:46:24 2018
+# Generated Tue Feb 6 19:20:05 2018
default namespace = ""
namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
@@ -11,7 +11,7 @@ start = dblMetadataElement
# Document types
-dblMetadataElement = (translationMetadata | expressionMetadata | translationAndExpressionMetadata)
+dblMetadataElement = (translationMetadata | expressionMetadata | translationAndExpressionMetadata | paratextZipResourceMetadata)
translationMetadata = textTranslationMetadata | audioTranslationMetadata | videoTranslationMetadata
@@ -118,6 +118,20 @@ videoTranslationAndExpressionMetadata = element DBLMetadata {
videoFormatElement
}
+paratextZipResourceMetadata = element DBLMetadata {
+ dblMetadataCommonAtts &
+ paratextZipResourceIdentificationElement &
+ paratextZipResourceTypeElement &
+ relationshipsElement &
+ paratextZipResourceAgenciesElement &
+ shortLanguageElement &
+ translationManifestElement &
+ paratextZipResourceSourceElement &
+ paratextZipResourcePublicationsElement &
+ copyrightElement &
+ archiveStatusElement
+}
+
translationCommonElements = (
commonElements &
translationManifestElement &
@@ -196,9 +210,19 @@ identificationElement =
element descriptionLocal { lenGe2String }? &
element scope { scopeEnum } &
canonSpecElement? &
+ element dateCompleted { dateCompletedValue }? &
+ (gbcSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
+ element bundleProducer { lenGe2String }
+ }
+paratextZipResourceIdentificationElement =
+ element identification {
+ element name { lenGe2String } &
+ element nameLocal { lenGe2String }? &
+ element abbreviation { abbreviationString } &
+ element abbreviationLocal { localAbbreviationString }? &
element dateCompleted { dateCompletedValue }? &
- (gbcSystemId | ptSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId)* &
+ (ptSystemId | gbcSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
element bundleProducer { lenGe2String }
}
@@ -212,9 +236,8 @@ textIdentificationElement =
element descriptionLocal { lenGe2String }? &
element scope { scopeEnum } &
canonSpecElement? &
-
element dateCompleted { dateCompletedValue }? &
- (gbcSystemId | ptSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
+ (ptSystemId | gbcSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
element bundleProducer { lenGe2String }
}
@@ -256,7 +279,11 @@ ptElements =
element name { lenGe2String } &
element fullName { lenGe2String } &
element csetId { lenGe2String }? &
- element id { ptId }
+ element id { ptId } &
+ (
+ element baseId { ptId } &
+ element baseName { lenGe2String }
+ )?
ptregElements =
element id { ptregId }
@@ -566,6 +593,16 @@ videoTranslationAndExpressionTypeElement =
element isConfidential { xsd:boolean }
}
+paratextZipResourceTypeElement =
+ element type {
+ element medium { "paratextZipResource" } &
+ element hasCharacters { "true" } &
+ element isTranslation { "false" } &
+ element isExpression { "false" } &
+ element isConfidential { xsd:boolean } &
+ element projectType { paratextZipResourceProjectType }
+}
+
commonTextTranslationTypeElements = (
commonTranslationTypeElements
)
@@ -767,6 +804,11 @@ translationSourceElement =
( element canonicalContent { canonicalContentBook+} & element structure { (sourceStructureDivision | sourceStructureContent)+ } )
}
+paratextZipResourceSourceElement =
+ element source {
+ element structure { (sourceStructureDivision | sourceStructureContent)+ }
+ }
+
sourceStructureDivision =
element division {
attribute name {nameIdString},
@@ -790,6 +832,9 @@ srcPathString = text
publicationsElement = # DCMI: tableOfContents
element publications { publicationElement+ }
+paratextZipResourcePublicationsElement =
+ element publications { paratextZipResourcePublicationElement+ }
+
publicationElement =
element publication {
attribute id { publicationId },
@@ -797,6 +842,13 @@ publicationElement =
publicationChildElements
}
+paratextZipResourcePublicationElement =
+ element publication {
+ attribute id { publicationId },
+ attribute default { xsd:boolean }?,
+ paratextZipResourcePublicationChildElements
+ }
+
publicationChildElements = (
element name { lenGe2String }? &
element nameLocal { lenGe2String }? &
@@ -810,6 +862,11 @@ publicationChildElements = (
element canonicalContent { canonicalContentBook+} &
element structure { (publicationStructureDivision | publicationStructureContent)+ }
)
+paratextZipResourcePublicationChildElements = (
+ element name { lenGe2String }? &
+ element nameLocal { lenGe2String }? &
+ element structure { (publicationStructureDivision | publicationStructureContent)+ }
+)
publicationCountriesElement = element countries { countryElement+ }
@@ -829,7 +886,8 @@ publicationStructureContent =
element content {
attribute name {nameIdString}? &
attribute src {srcPathString} &
- attribute role {roleId}?
+ attribute role {roleId}? &
+ attribute srcPart {srcPathPartString}?
}
# publications text
diff --git a/v2/2_1_1/schemas/metadata-template.rng b/v2/2_1_1/schemas/metadata-template.rng
index f841209..471b724 100644
--- a/v2/2_1_1/schemas/metadata-template.rng
+++ b/v2/2_1_1/schemas/metadata-template.rng
@@ -2,7 +2,7 @@
@@ -15,6 +15,7 @@
+
@@ -172,6 +173,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -326,11 +344,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -379,8 +438,8 @@
-
+
@@ -452,6 +511,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -1075,6 +1144,30 @@
+
+
+
+
+ paratextZipResource
+
+
+ true
+
+
+ false
+
+
+ false
+
+
+
+
+
+
+
+
+
+
@@ -1454,6 +1547,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1504,6 +1609,13 @@
+
+
+
+
+
+
+
@@ -1517,6 +1629,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1575,6 +1700,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1623,6 +1770,11 @@
+
+
+
+
+
diff --git a/v2/2_1_1/schemas/metadata-upload.rnc b/v2/2_1_1/schemas/metadata-upload.rnc
index 7f80b3a..54b167b 100644
--- a/v2/2_1_1/schemas/metadata-upload.rnc
+++ b/v2/2_1_1/schemas/metadata-upload.rnc
@@ -1,6 +1,6 @@
# metadata-upload.rnc v2.1.1
# Generated by mark@notamacbook using makeRNC.py
-# Generated Tue Jan 30 16:46:24 2018
+# Generated Tue Feb 6 19:20:04 2018
default namespace = ""
namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
@@ -11,7 +11,7 @@ start = dblMetadataElement
# Document types
-dblMetadataElement = (translationMetadata | expressionMetadata | translationAndExpressionMetadata)
+dblMetadataElement = (translationMetadata | expressionMetadata | translationAndExpressionMetadata | paratextZipResourceMetadata)
translationMetadata = textTranslationMetadata | audioTranslationMetadata | videoTranslationMetadata
@@ -118,6 +118,20 @@ videoTranslationAndExpressionMetadata = element DBLMetadata {
videoFormatElement
}
+paratextZipResourceMetadata = element DBLMetadata {
+ dblMetadataCommonAtts &
+ paratextZipResourceIdentificationElement &
+ paratextZipResourceTypeElement &
+ relationshipsElement &
+ paratextZipResourceAgenciesElement &
+ shortLanguageElement &
+ translationManifestElement &
+ paratextZipResourceSourceElement &
+ paratextZipResourcePublicationsElement &
+ copyrightElement &
+ archiveStatusElement
+}
+
translationCommonElements = (
commonElements &
translationManifestElement &
@@ -196,9 +210,19 @@ identificationElement =
element descriptionLocal { lenGe2String }? &
element scope { scopeEnum } &
canonSpecElement? &
+ element dateCompleted { dateCompletedValue }? &
+ (gbcSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
+ element bundleProducer { lenGe2String }
+ }
+paratextZipResourceIdentificationElement =
+ element identification {
+ element name { lenGe2String } &
+ element nameLocal { lenGe2String }? &
+ element abbreviation { abbreviationString } &
+ element abbreviationLocal { localAbbreviationString }? &
element dateCompleted { dateCompletedValue }? &
- (gbcSystemId | ptSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId)* &
+ (ptSystemId | gbcSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
element bundleProducer { lenGe2String }
}
@@ -212,9 +236,8 @@ textIdentificationElement =
element descriptionLocal { lenGe2String }? &
element scope { scopeEnum } &
canonSpecElement? &
-
element dateCompleted { dateCompletedValue }? &
- (gbcSystemId | ptSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
+ (ptSystemId | gbcSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
element bundleProducer { lenGe2String }
}
@@ -256,7 +279,11 @@ ptElements =
element name { lenGe2String } &
element fullName { lenGe2String } &
element csetId { lenGe2String }? &
- element id { ptId }
+ element id { ptId } &
+ (
+ element baseId { ptId } &
+ element baseName { lenGe2String }
+ )?
ptregElements =
element id { ptregId }
@@ -420,6 +447,13 @@ agenciesElement =
contributorElement+
}
+paratextZipResourceAgenciesElement =
+ element agencies {
+ rightsHolderElement+ &
+ rightsAdminElement? &
+ contributorElement?
+ }
+
rightsHolderElement =
element rightsHolder {
element abbr { lenGe2String } &
@@ -820,6 +854,16 @@ videoTranslationAndExpressionTypeElement =
element isConfidential { xsd:boolean }
}
+paratextZipResourceTypeElement =
+ element type {
+ element medium { "paratextZipResource" } &
+ element hasCharacters { "true" } &
+ element isTranslation { "false" } &
+ element isExpression { "false" } &
+ element isConfidential { xsd:boolean } &
+ element projectType { paratextZipResourceProjectType }
+}
+
commonTextTranslationTypeElements = (
commonTranslationTypeElements
)
@@ -879,6 +923,20 @@ translationLevelEnum = (
"Children"
)
+paratextZipResourceProjectType = (
+ "Standard" |
+ "Daughter" |
+ "StudyBible" |
+ "StudyBibleAdditions" |
+ "BackTranslation" |
+ "Auxiliary" |
+ "TransliterationManual"|
+ "TransliterationWithEncoder" |
+ "ConsultantNotes" |
+ "GlobalConsultantNotes" |
+ "GlobalAnthropologyNotes"
+)
+
# format
textFormatElement =
@@ -1065,6 +1123,11 @@ translationSourceElement =
( element canonicalContent { canonicalContentBook+} & element structure { (sourceStructureDivision | sourceStructureContent)+ } )
}
+paratextZipResourceSourceElement =
+ element source {
+ element structure { (sourceStructureDivision | sourceStructureContent)+ }
+ }
+
sourceStructureDivision =
element division {
attribute name {nameIdString},
@@ -1083,11 +1146,16 @@ sourceStructureContent =
srcPathString = xsd:string { pattern = "[A-Za-z0-9][\-A-Za-z0-9_\.]+(/[A-Za-z0-9][\-A-Za-z0-9_\.]+)*" }
+srcPathPartString = xsd:string { pattern = "(((zip|xpath)://)|#).+" }
+
# publications
publicationsElement = # DCMI: tableOfContents
element publications { publicationElement+ }
+paratextZipResourcePublicationsElement =
+ element publications { paratextZipResourcePublicationElement+ }
+
publicationElement =
element publication {
attribute id { publicationId },
@@ -1095,6 +1163,13 @@ publicationElement =
publicationChildElements
}
+paratextZipResourcePublicationElement =
+ element publication {
+ attribute id { publicationId },
+ attribute default { xsd:boolean }?,
+ paratextZipResourcePublicationChildElements
+ }
+
publicationChildElements = (
element name { lenGe2String }? &
element nameLocal { lenGe2String }? &
@@ -1108,6 +1183,11 @@ publicationChildElements = (
element canonicalContent { canonicalContentBook+} &
element structure { (publicationStructureDivision | publicationStructureContent)+ }
)
+paratextZipResourcePublicationChildElements = (
+ element name { lenGe2String }? &
+ element nameLocal { lenGe2String }? &
+ element structure { (publicationStructureDivision | publicationStructureContent)+ }
+)
publicationCountriesElement = element countries { countryElement+ }
@@ -1127,12 +1207,13 @@ publicationStructureContent =
element content {
attribute name {nameIdString}? &
attribute src {srcPathString} &
- attribute role {roleId}?
+ attribute role {roleId}? &
+ attribute srcPart {srcPathPartString}?
}
# publications text
-roleId = ptReference | knownRole | extensionRole
+roleId = ptReference | nonCanonicalBookIdEnum | knownRole | extensionRole
ptReference = xsd:string { pattern = "((GEN|EXO|LEV|NUM|DEU|JOS|JDG|RUT|1SA|2SA|1KI|2KI|1CH|2CH|EZR|NEH|EST|JOB|PSA|PRO|ECC|SNG|ISA|JER|LAM|EZK|DAN|HOS|JOL|AMO|OBA|JON|MIC|NAM|HAB|ZEP|HAG|ZEC|MAL|MAT|MRK|LUK|JHN|ACT|ROM|1CO|2CO|GAL|EPH|PHP|COL|1TH|2TH|1TI|2TI|TIT|PHM|HEB|JAS|1PE|2PE|1JN|2JN|3JN|JUD|REV|TOB|JDT|ESG|WIS|SIR|BAR|LJE|S3Y|SUS|BEL|1MA|2MA|3MA|4MA|1ES|2ES|MAN|PS2|ODA|PSS|JSA|JDB|TBS|SST|DNT|BLT|EZA|5EZ|6EZ|DAG|PS3|2BA|LBA|JUB|ENO|1MQ|2MQ|3MQ|REP|4BA|LAO)(( [1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?((,([1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?))*))|( [1-9][0-9]{0,2}:[1-9][0-9]{0,2}(-[1-9][0-9]{0,2}(:[1-9][0-9]{0,2})?)?(,(([1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?)|([1-9][0-9]{0,2}:[1-9][0-9]{0,2}(-[1-9][0-9]{0,2}(:[1-9][0-9]{0,2})?)?)))*))?)(;(((GEN|EXO|LEV|NUM|DEU|JOS|JDG|RUT|1SA|2SA|1KI|2KI|1CH|2CH|EZR|NEH|EST|JOB|PSA|PRO|ECC|SNG|ISA|JER|LAM|EZK|DAN|HOS|JOL|AMO|OBA|JON|MIC|NAM|HAB|ZEP|HAG|ZEC|MAL|MAT|MRK|LUK|JHN|ACT|ROM|1CO|2CO|GAL|EPH|PHP|COL|1TH|2TH|1TI|2TI|TIT|PHM|HEB|JAS|1PE|2PE|1JN|2JN|3JN|JUD|REV|TOB|JDT|ESG|WIS|SIR|BAR|LJE|S3Y|SUS|BEL|1MA|2MA|3MA|4MA|1ES|2ES|MAN|PS2|ODA|PSS|JSA|JDB|TBS|SST|DNT|BLT|EZA|5EZ|6EZ|DAG|PS3|2BA|LBA|JUB|ENO|1MQ|2MQ|3MQ|REP|4BA|LAO)(( [1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?((,([1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?))*))|( [1-9][0-9]{0,2}:[1-9][0-9]{0,2}(-[1-9][0-9]{0,2}(:[1-9][0-9]{0,2})?)?(,(([1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?)|([1-9][0-9]{0,2}:[1-9][0-9]{0,2}(-[1-9][0-9]{0,2}(:[1-9][0-9]{0,2})?)?)))*))?)))*" }
diff --git a/v2/2_1_1/schemas/metadata-upload.rng b/v2/2_1_1/schemas/metadata-upload.rng
index 21afe6b..462b336 100644
--- a/v2/2_1_1/schemas/metadata-upload.rng
+++ b/v2/2_1_1/schemas/metadata-upload.rng
@@ -2,7 +2,7 @@
@@ -15,6 +15,7 @@
+
@@ -172,6 +173,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -348,11 +366,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -401,8 +460,8 @@
-
+
@@ -474,6 +533,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -736,6 +805,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1394,6 +1478,30 @@
+
+
+
+
+ paratextZipResource
+
+
+ true
+
+
+ false
+
+
+ false
+
+
+
+
+
+
+
+
+
+
@@ -1464,6 +1572,21 @@
Children
+
+
+ Standard
+ Daughter
+ StudyBible
+ StudyBibleAdditions
+ BackTranslation
+ Auxiliary
+ TransliterationManual
+ TransliterationWithEncoder
+ ConsultantNotes
+ GlobalConsultantNotes
+ GlobalAnthropologyNotes
+
+
@@ -1857,6 +1980,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1900,6 +2035,11 @@
[A-Za-z0-9][\-A-Za-z0-9_\.]+(/[A-Za-z0-9][\-A-Za-z0-9_\.]+)*
+
+
+ (((zip|xpath)://)|#).+
+
+
@@ -1909,6 +2049,13 @@
+
+
+
+
+
+
+
@@ -1922,6 +2069,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1980,6 +2140,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2028,6 +2210,11 @@
+
+
+
+
+
@@ -2035,6 +2222,7 @@
+
diff --git a/v2/2_1_1/schemas/metadata.rnc b/v2/2_1_1/schemas/metadata.rnc
index 1934db4..5a9752e 100644
--- a/v2/2_1_1/schemas/metadata.rnc
+++ b/v2/2_1_1/schemas/metadata.rnc
@@ -1,6 +1,6 @@
# metadata.rnc v2.1.1
# Generated by mark@notamacbook using makeRNC.py
-# Generated Tue Jan 30 16:46:24 2018
+# Generated Tue Feb 6 19:20:04 2018
default namespace = ""
namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
@@ -11,7 +11,7 @@ start = dblMetadataElement
# Document types
-dblMetadataElement = (translationMetadata | expressionMetadata | translationAndExpressionMetadata)
+dblMetadataElement = (translationMetadata | expressionMetadata | translationAndExpressionMetadata | paratextZipResourceMetadata)
translationMetadata = textTranslationMetadata | audioTranslationMetadata | videoTranslationMetadata
@@ -118,6 +118,20 @@ videoTranslationAndExpressionMetadata = element DBLMetadata {
videoFormatElement
}
+paratextZipResourceMetadata = element DBLMetadata {
+ dblMetadataCommonAtts &
+ paratextZipResourceIdentificationElement &
+ paratextZipResourceTypeElement &
+ relationshipsElement &
+ paratextZipResourceAgenciesElement &
+ shortLanguageElement &
+ translationManifestElement &
+ paratextZipResourceSourceElement &
+ paratextZipResourcePublicationsElement &
+ copyrightElement &
+ archiveStatusElement
+}
+
translationCommonElements = (
commonElements &
translationManifestElement &
@@ -196,9 +210,19 @@ identificationElement =
element descriptionLocal { lenGe2String }? &
element scope { scopeEnum } &
canonSpecElement? &
+ element dateCompleted { dateCompletedValue }? &
+ (gbcSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
+ element bundleProducer { lenGe2String }
+ }
+paratextZipResourceIdentificationElement =
+ element identification {
+ element name { lenGe2String } &
+ element nameLocal { lenGe2String }? &
+ element abbreviation { abbreviationString } &
+ element abbreviationLocal { localAbbreviationString }? &
element dateCompleted { dateCompletedValue }? &
- (gbcSystemId | ptSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId)* &
+ (ptSystemId | gbcSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
element bundleProducer { lenGe2String }
}
@@ -212,9 +236,8 @@ textIdentificationElement =
element descriptionLocal { lenGe2String }? &
element scope { scopeEnum } &
canonSpecElement? &
-
element dateCompleted { dateCompletedValue }? &
- (gbcSystemId | ptSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
+ (ptSystemId | gbcSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
element bundleProducer { lenGe2String }
}
@@ -256,7 +279,11 @@ ptElements =
element name { lenGe2String } &
element fullName { lenGe2String } &
element csetId { lenGe2String }? &
- element id { ptId }
+ element id { ptId } &
+ (
+ element baseId { ptId } &
+ element baseName { lenGe2String }
+ )?
ptregElements =
element id { ptregId }
@@ -420,6 +447,13 @@ agenciesElement =
contributorElement+
}
+paratextZipResourceAgenciesElement =
+ element agencies {
+ rightsHolderElement+ &
+ rightsAdminElement? &
+ contributorElement?
+ }
+
rightsHolderElement =
element rightsHolder {
element abbr { lenGe2String } &
@@ -820,6 +854,16 @@ videoTranslationAndExpressionTypeElement =
element isConfidential { xsd:boolean }
}
+paratextZipResourceTypeElement =
+ element type {
+ element medium { "paratextZipResource" } &
+ element hasCharacters { "true" } &
+ element isTranslation { "false" } &
+ element isExpression { "false" } &
+ element isConfidential { xsd:boolean } &
+ element projectType { paratextZipResourceProjectType }
+}
+
commonTextTranslationTypeElements = (
commonTranslationTypeElements
)
@@ -879,6 +923,20 @@ translationLevelEnum = (
"Children"
)
+paratextZipResourceProjectType = (
+ "Standard" |
+ "Daughter" |
+ "StudyBible" |
+ "StudyBibleAdditions" |
+ "BackTranslation" |
+ "Auxiliary" |
+ "TransliterationManual"|
+ "TransliterationWithEncoder" |
+ "ConsultantNotes" |
+ "GlobalConsultantNotes" |
+ "GlobalAnthropologyNotes"
+)
+
# format
textFormatElement =
@@ -1053,6 +1111,11 @@ translationSourceElement =
( element canonicalContent { canonicalContentBook+} & element structure { (sourceStructureDivision | sourceStructureContent)+ } )
}
+paratextZipResourceSourceElement =
+ element source {
+ element structure { (sourceStructureDivision | sourceStructureContent)+ }
+ }
+
sourceStructureDivision =
element division {
attribute name {nameIdString},
@@ -1071,11 +1134,16 @@ sourceStructureContent =
srcPathString = xsd:string { pattern = "[A-Za-z0-9][\-A-Za-z0-9_\.]+(/[A-Za-z0-9][\-A-Za-z0-9_\.]+)*" }
+srcPathPartString = xsd:string { pattern = "(((zip|xpath)://)|#).+" }
+
# publications
publicationsElement = # DCMI: tableOfContents
element publications { publicationElement+ }
+paratextZipResourcePublicationsElement =
+ element publications { paratextZipResourcePublicationElement+ }
+
publicationElement =
element publication {
attribute id { publicationId },
@@ -1083,6 +1151,13 @@ publicationElement =
publicationChildElements
}
+paratextZipResourcePublicationElement =
+ element publication {
+ attribute id { publicationId },
+ attribute default { xsd:boolean }?,
+ paratextZipResourcePublicationChildElements
+ }
+
publicationChildElements = (
element name { lenGe2String }? &
element nameLocal { lenGe2String }? &
@@ -1096,6 +1171,11 @@ publicationChildElements = (
element canonicalContent { canonicalContentBook+} &
element structure { (publicationStructureDivision | publicationStructureContent)+ }
)
+paratextZipResourcePublicationChildElements = (
+ element name { lenGe2String }? &
+ element nameLocal { lenGe2String }? &
+ element structure { (publicationStructureDivision | publicationStructureContent)+ }
+)
publicationCountriesElement = element countries { countryElement+ }
@@ -1115,12 +1195,13 @@ publicationStructureContent =
element content {
attribute name {nameIdString}? &
attribute src {srcPathString} &
- attribute role {roleId}?
+ attribute role {roleId}? &
+ attribute srcPart {srcPathPartString}?
}
# publications text
-roleId = ptReference | knownRole | extensionRole
+roleId = ptReference | nonCanonicalBookIdEnum | knownRole | extensionRole
ptReference = xsd:string { pattern = "((GEN|EXO|LEV|NUM|DEU|JOS|JDG|RUT|1SA|2SA|1KI|2KI|1CH|2CH|EZR|NEH|EST|JOB|PSA|PRO|ECC|SNG|ISA|JER|LAM|EZK|DAN|HOS|JOL|AMO|OBA|JON|MIC|NAM|HAB|ZEP|HAG|ZEC|MAL|MAT|MRK|LUK|JHN|ACT|ROM|1CO|2CO|GAL|EPH|PHP|COL|1TH|2TH|1TI|2TI|TIT|PHM|HEB|JAS|1PE|2PE|1JN|2JN|3JN|JUD|REV|TOB|JDT|ESG|WIS|SIR|BAR|LJE|S3Y|SUS|BEL|1MA|2MA|3MA|4MA|1ES|2ES|MAN|PS2|ODA|PSS|JSA|JDB|TBS|SST|DNT|BLT|EZA|5EZ|6EZ|DAG|PS3|2BA|LBA|JUB|ENO|1MQ|2MQ|3MQ|REP|4BA|LAO)(( [1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?((,([1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?))*))|( [1-9][0-9]{0,2}:[1-9][0-9]{0,2}(-[1-9][0-9]{0,2}(:[1-9][0-9]{0,2})?)?(,(([1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?)|([1-9][0-9]{0,2}:[1-9][0-9]{0,2}(-[1-9][0-9]{0,2}(:[1-9][0-9]{0,2})?)?)))*))?)(;(((GEN|EXO|LEV|NUM|DEU|JOS|JDG|RUT|1SA|2SA|1KI|2KI|1CH|2CH|EZR|NEH|EST|JOB|PSA|PRO|ECC|SNG|ISA|JER|LAM|EZK|DAN|HOS|JOL|AMO|OBA|JON|MIC|NAM|HAB|ZEP|HAG|ZEC|MAL|MAT|MRK|LUK|JHN|ACT|ROM|1CO|2CO|GAL|EPH|PHP|COL|1TH|2TH|1TI|2TI|TIT|PHM|HEB|JAS|1PE|2PE|1JN|2JN|3JN|JUD|REV|TOB|JDT|ESG|WIS|SIR|BAR|LJE|S3Y|SUS|BEL|1MA|2MA|3MA|4MA|1ES|2ES|MAN|PS2|ODA|PSS|JSA|JDB|TBS|SST|DNT|BLT|EZA|5EZ|6EZ|DAG|PS3|2BA|LBA|JUB|ENO|1MQ|2MQ|3MQ|REP|4BA|LAO)(( [1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?((,([1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?))*))|( [1-9][0-9]{0,2}:[1-9][0-9]{0,2}(-[1-9][0-9]{0,2}(:[1-9][0-9]{0,2})?)?(,(([1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?)|([1-9][0-9]{0,2}:[1-9][0-9]{0,2}(-[1-9][0-9]{0,2}(:[1-9][0-9]{0,2})?)?)))*))?)))*" }
diff --git a/v2/2_1_1/schemas/metadata.rng b/v2/2_1_1/schemas/metadata.rng
index 70a173c..918f8af 100644
--- a/v2/2_1_1/schemas/metadata.rng
+++ b/v2/2_1_1/schemas/metadata.rng
@@ -2,7 +2,7 @@
@@ -15,6 +15,7 @@
+
@@ -172,6 +173,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -349,11 +367,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -402,8 +461,8 @@
-
+
@@ -475,6 +534,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -737,6 +806,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1395,6 +1479,30 @@
+
+
+
+
+ paratextZipResource
+
+
+ true
+
+
+ false
+
+
+ false
+
+
+
+
+
+
+
+
+
+
@@ -1465,6 +1573,21 @@
Children
+
+
+ Standard
+ Daughter
+ StudyBible
+ StudyBibleAdditions
+ BackTranslation
+ Auxiliary
+ TransliterationManual
+ TransliterationWithEncoder
+ ConsultantNotes
+ GlobalConsultantNotes
+ GlobalAnthropologyNotes
+
+
@@ -1821,6 +1944,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1864,6 +1999,11 @@
[A-Za-z0-9][\-A-Za-z0-9_\.]+(/[A-Za-z0-9][\-A-Za-z0-9_\.]+)*
+
+
+ (((zip|xpath)://)|#).+
+
+
@@ -1873,6 +2013,13 @@
+
+
+
+
+
+
+
@@ -1886,6 +2033,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1944,6 +2104,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1992,6 +2174,11 @@
+
+
+
+
+
@@ -1999,6 +2186,7 @@
+
diff --git a/v2/2_1_1/src/agencies_rnc_2_1_1.template b/v2/2_1_1/src/agencies_rnc_2_1_1.template
index 55ef425..ba230ff 100644
--- a/v2/2_1_1/src/agencies_rnc_2_1_1.template
+++ b/v2/2_1_1/src/agencies_rnc_2_1_1.template
@@ -7,6 +7,13 @@ agenciesElement =
contributorElement+
}
+paratextZipResourceAgenciesElement =
+ element agencies {
+ rightsHolderElement+ &
+ rightsAdminElement? &
+ contributorElement?
+ }
+
rightsHolderElement =
element rightsHolder {
element abbr { lenGe2String } &
@@ -16,7 +23,6 @@ rightsHolderElement =
element name { lenGe2String }
}
-
rightsAdminElement =
element rightsAdmin {
element url { anyURI }? &
diff --git a/v2/2_1_1/src/document_types_rnc_2_1_1.template b/v2/2_1_1/src/document_types_rnc_2_1_1.template
index 5df3f70..e221df3 100644
--- a/v2/2_1_1/src/document_types_rnc_2_1_1.template
+++ b/v2/2_1_1/src/document_types_rnc_2_1_1.template
@@ -1,6 +1,6 @@
# Document types
-dblMetadataElement = (translationMetadata | expressionMetadata | translationAndExpressionMetadata)
+dblMetadataElement = (translationMetadata | expressionMetadata | translationAndExpressionMetadata | paratextZipResourceMetadata)
translationMetadata = textTranslationMetadata | audioTranslationMetadata | videoTranslationMetadata
@@ -107,6 +107,20 @@ videoTranslationAndExpressionMetadata = element DBLMetadata {
videoFormatElement
}
+paratextZipResourceMetadata = element DBLMetadata {
+ dblMetadataCommonAtts &
+ paratextZipResourceIdentificationElement &
+ paratextZipResourceTypeElement &
+ relationshipsElement &
+ paratextZipResourceAgenciesElement &
+ shortLanguageElement &
+ translationManifestElement &
+ paratextZipResourceSourceElement &
+ paratextZipResourcePublicationsElement &
+ copyrightElement &
+ archiveStatusElement
+}
+
translationCommonElements = (
commonElements &
translationManifestElement &
diff --git a/v2/2_1_1/src/identification_rnc_2_1_1.template b/v2/2_1_1/src/identification_rnc_2_1_1.template
index c6a9814..33c2065 100644
--- a/v2/2_1_1/src/identification_rnc_2_1_1.template
+++ b/v2/2_1_1/src/identification_rnc_2_1_1.template
@@ -10,9 +10,19 @@ identificationElement =
element descriptionLocal { lenGe2String }? &
element scope { scopeEnum } &
canonSpecElement? &
+ element dateCompleted { dateCompletedValue }? &
+ (gbcSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
+ element bundleProducer { lenGe2String }
+ }
+paratextZipResourceIdentificationElement =
+ element identification {
+ element name { lenGe2String } &
+ element nameLocal { lenGe2String }? &
+ element abbreviation { abbreviationString } &
+ element abbreviationLocal { localAbbreviationString }? &
element dateCompleted { dateCompletedValue }? &
- (gbcSystemId | ptSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId)* &
+ (ptSystemId | gbcSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
element bundleProducer { lenGe2String }
}
@@ -26,9 +36,8 @@ textIdentificationElement =
element descriptionLocal { lenGe2String }? &
element scope { scopeEnum } &
canonSpecElement? &
-
element dateCompleted { dateCompletedValue }? &
- (gbcSystemId | ptSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
+ (ptSystemId | gbcSystemId | reapSystemId | biblicaSystemId | tmsSystemId | ptregSystemId | dbpSystemId)* &
element bundleProducer { lenGe2String }
}
@@ -70,7 +79,11 @@ ptElements =
element name { lenGe2String } &
element fullName { lenGe2String } &
element csetId { lenGe2String }? &
- element id { ptId }
+ element id { ptId } &
+ (
+ element baseId { ptId } &
+ element baseName { lenGe2String }
+ )?
ptregElements =
element id { ptregId }
diff --git a/v2/2_1_1/src/publications_rnc_2_1_1.template b/v2/2_1_1/src/publications_rnc_2_1_1.template
index 54375f4..3ec5ae1 100644
--- a/v2/2_1_1/src/publications_rnc_2_1_1.template
+++ b/v2/2_1_1/src/publications_rnc_2_1_1.template
@@ -3,6 +3,9 @@
publicationsElement = # DCMI: tableOfContents
element publications { publicationElement+ }
+paratextZipResourcePublicationsElement =
+ element publications { paratextZipResourcePublicationElement+ }
+
publicationElement =
element publication {
attribute id { publicationId },
@@ -10,6 +13,13 @@ publicationElement =
publicationChildElements
}
+paratextZipResourcePublicationElement =
+ element publication {
+ attribute id { publicationId },
+ attribute default { xsd:boolean }?,
+ paratextZipResourcePublicationChildElements
+ }
+
publicationChildElements = (
element name { lenGe2String }? &
element nameLocal { lenGe2String }? &
@@ -23,6 +33,11 @@ publicationChildElements = (
element canonicalContent { canonicalContentBook+} &
element structure { (publicationStructureDivision | publicationStructureContent)+ }
)
+paratextZipResourcePublicationChildElements = (
+ element name { lenGe2String }? &
+ element nameLocal { lenGe2String }? &
+ element structure { (publicationStructureDivision | publicationStructureContent)+ }
+)
publicationCountriesElement = element countries { countryElement+ }
@@ -42,7 +57,8 @@ publicationStructureContent =
element content {
attribute name {nameIdString}? &
attribute src {srcPathString} &
- attribute role {roleId}?
+ attribute role {roleId}? &
+ attribute srcPart {srcPathPartString}?
}
%%insert canon_rnc_2_1_1.template%%
diff --git a/v2/2_1_1/src/publications_text_rnc_2_1_1.template b/v2/2_1_1/src/publications_text_rnc_2_1_1.template
index 5bd9bde..8d71085 100644
--- a/v2/2_1_1/src/publications_text_rnc_2_1_1.template
+++ b/v2/2_1_1/src/publications_text_rnc_2_1_1.template
@@ -1,6 +1,6 @@
# publications text
-roleId = ptReference | knownRole | extensionRole
+roleId = ptReference | nonCanonicalBookIdEnum | knownRole | extensionRole
ptReference = xsd:string { pattern = "((GEN|EXO|LEV|NUM|DEU|JOS|JDG|RUT|1SA|2SA|1KI|2KI|1CH|2CH|EZR|NEH|EST|JOB|PSA|PRO|ECC|SNG|ISA|JER|LAM|EZK|DAN|HOS|JOL|AMO|OBA|JON|MIC|NAM|HAB|ZEP|HAG|ZEC|MAL|MAT|MRK|LUK|JHN|ACT|ROM|1CO|2CO|GAL|EPH|PHP|COL|1TH|2TH|1TI|2TI|TIT|PHM|HEB|JAS|1PE|2PE|1JN|2JN|3JN|JUD|REV|TOB|JDT|ESG|WIS|SIR|BAR|LJE|S3Y|SUS|BEL|1MA|2MA|3MA|4MA|1ES|2ES|MAN|PS2|ODA|PSS|JSA|JDB|TBS|SST|DNT|BLT|EZA|5EZ|6EZ|DAG|PS3|2BA|LBA|JUB|ENO|1MQ|2MQ|3MQ|REP|4BA|LAO)(( [1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?((,([1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?))*))|( [1-9][0-9]{0,2}:[1-9][0-9]{0,2}(-[1-9][0-9]{0,2}(:[1-9][0-9]{0,2})?)?(,(([1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?)|([1-9][0-9]{0,2}:[1-9][0-9]{0,2}(-[1-9][0-9]{0,2}(:[1-9][0-9]{0,2})?)?)))*))?)(;(((GEN|EXO|LEV|NUM|DEU|JOS|JDG|RUT|1SA|2SA|1KI|2KI|1CH|2CH|EZR|NEH|EST|JOB|PSA|PRO|ECC|SNG|ISA|JER|LAM|EZK|DAN|HOS|JOL|AMO|OBA|JON|MIC|NAM|HAB|ZEP|HAG|ZEC|MAL|MAT|MRK|LUK|JHN|ACT|ROM|1CO|2CO|GAL|EPH|PHP|COL|1TH|2TH|1TI|2TI|TIT|PHM|HEB|JAS|1PE|2PE|1JN|2JN|3JN|JUD|REV|TOB|JDT|ESG|WIS|SIR|BAR|LJE|S3Y|SUS|BEL|1MA|2MA|3MA|4MA|1ES|2ES|MAN|PS2|ODA|PSS|JSA|JDB|TBS|SST|DNT|BLT|EZA|5EZ|6EZ|DAG|PS3|2BA|LBA|JUB|ENO|1MQ|2MQ|3MQ|REP|4BA|LAO)(( [1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?((,([1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?))*))|( [1-9][0-9]{0,2}:[1-9][0-9]{0,2}(-[1-9][0-9]{0,2}(:[1-9][0-9]{0,2})?)?(,(([1-9][0-9]{0,2}(-[1-9][0-9]{0,2})?)|([1-9][0-9]{0,2}:[1-9][0-9]{0,2}(-[1-9][0-9]{0,2}(:[1-9][0-9]{0,2})?)?)))*))?)))*" }
@@ -144,4 +144,4 @@ nonCanonicalBookIdEnum = (
"NDX" # Names Index
)
-publicationId = xsd:string { pattern = "[A-Za-z][A-Za-z0-9_\-]{0,31}" }
\ No newline at end of file
+publicationId = xsd:string { pattern = "[A-Za-z][A-Za-z0-9_\-]{0,31}" }
diff --git a/v2/2_1_1/src/source_rnc_2_1_1.template b/v2/2_1_1/src/source_rnc_2_1_1.template
index 000d77b..c1e2eba 100644
--- a/v2/2_1_1/src/source_rnc_2_1_1.template
+++ b/v2/2_1_1/src/source_rnc_2_1_1.template
@@ -6,6 +6,11 @@ translationSourceElement =
( element canonicalContent { canonicalContentBook+} & element structure { (sourceStructureDivision | sourceStructureContent)+ } )
}
+paratextZipResourceSourceElement =
+ element source {
+ element structure { (sourceStructureDivision | sourceStructureContent)+ }
+ }
+
sourceStructureDivision =
element division {
attribute name {nameIdString},
diff --git a/v2/2_1_1/src/source_text_rnc_2_1_1.template b/v2/2_1_1/src/source_text_rnc_2_1_1.template
index ddebbec..22131b0 100644
--- a/v2/2_1_1/src/source_text_rnc_2_1_1.template
+++ b/v2/2_1_1/src/source_text_rnc_2_1_1.template
@@ -1,3 +1,5 @@
# source text
srcPathString = xsd:string { pattern = "[A-Za-z0-9][\-A-Za-z0-9_\.]+(/[A-Za-z0-9][\-A-Za-z0-9_\.]+)*" }
+
+srcPathPartString = xsd:string { pattern = "(((zip|xpath)://)|#).+" }
\ No newline at end of file
diff --git a/v2/2_1_1/src/type_rnc_2_1_1.template b/v2/2_1_1/src/type_rnc_2_1_1.template
index ef14f4a..e8a5bdf 100644
--- a/v2/2_1_1/src/type_rnc_2_1_1.template
+++ b/v2/2_1_1/src/type_rnc_2_1_1.template
@@ -112,6 +112,16 @@ videoTranslationAndExpressionTypeElement =
element isConfidential { xsd:boolean }
}
+paratextZipResourceTypeElement =
+ element type {
+ element medium { "paratextZipResource" } &
+ element hasCharacters { "true" } &
+ element isTranslation { "false" } &
+ element isExpression { "false" } &
+ element isConfidential { xsd:boolean } &
+ element projectType { paratextZipResourceProjectType }
+}
+
commonTextTranslationTypeElements = (
commonTranslationTypeElements
)
diff --git a/v2/2_1_1/src/type_text_rnc_2_1_1.template b/v2/2_1_1/src/type_text_rnc_2_1_1.template
index 642805f..aff3fc0 100644
--- a/v2/2_1_1/src/type_text_rnc_2_1_1.template
+++ b/v2/2_1_1/src/type_text_rnc_2_1_1.template
@@ -17,3 +17,17 @@ translationLevelEnum = (
"Liturgical" |
"Children"
)
+
+paratextZipResourceProjectType = (
+ "Standard" |
+ "Daughter" |
+ "StudyBible" |
+ "StudyBibleAdditions" |
+ "BackTranslation" |
+ "Auxiliary" |
+ "TransliterationManual"|
+ "TransliterationWithEncoder" |
+ "ConsultantNotes" |
+ "GlobalConsultantNotes" |
+ "GlobalAnthropologyNotes"
+)
\ No newline at end of file
diff --git a/v2/2_1_1/test_docs/broken_converted_2_1.xml b/v2/2_1_1/test_docs/broken_converted_2_1.xml
new file mode 100644
index 0000000..2ade96d
--- /dev/null
+++ b/v2/2_1_1/test_docs/broken_converted_2_1.xml
@@ -0,0 +1,315 @@
+from Eric's uri: ```
+
+ English: NT Background Notes - Craig Keener
+
+ NTBN
+
+ Paratext/7.6.54.151
+
+ d825aeedcdfea7ae4e1fe9d33aade4ea1e70fd16
+ 81764f7cba5f6e4d4d7a4af1923f41bba215ec0b
+ NTBN
+ English: NT Background Notes - Craig Keener
+
+
+
+ text
+ true
+ true
+ true
+ true
+ Revision
+ Common
+
+
+
+
+ WBT
+ http://www.wycliffe.org
+ Wycliffe Bible Translators, Inc.
+ 545d2cb00be06579ca809b57
+ Wycliffe Bible Translators, Inc.
+
+
+
+ eng
+ English
+
+ Zzzz
+ LTR
+ en
+
+
+
+
+
+
+
+
+ false
+
+
+
+ Matt
+ Matthew
+ MATTHEW
+
+
+ Mk
+ Mark
+ MARK
+
+
+ Lk
+ Luke
+ LUKE
+
+
+ Jn
+ John
+ JOHN
+
+
+ Acts
+ Acts
+ ACTS
+
+
+ Rom
+ Romans
+ ROMANS
+
+
+ 1 Cor
+ 1 Corinthians
+ 1 CORINTHIANS
+
+
+ 2 Cor
+ 2 Corinthians
+ 2 CORINTHIANS
+
+
+ Gal
+ Galatians
+ GALATIANS
+
+
+ Eph
+ Ephesians
+ EPHESIANS
+
+
+ Phil
+ Philippians
+ PHILIPPIANS
+
+
+ Col
+ Colossians
+ COLOSSIANS
+
+
+ 1 Thess
+ 1 Thessalonians
+ 1 THESSALONIANS
+
+
+ 2 Thess
+ 2 Thessalonians
+ 2 THESSALONIANS
+
+
+ 1 Tim
+ 1 Timothy
+ 1 TIMOTHY
+
+
+ 2 Tim
+ 2 Timothy
+ 2 TIMOTHY
+
+
+ Tit
+ Titus
+ TITUS
+
+
+ Phlm
+ Philemon
+ PHILEMON
+
+
+ Heb
+ Hebrews
+ HEBREWS
+
+
+ Jms
+ James
+ JAMES
+
+
+ 1 Pet
+ 1 Peter
+ 1 PETER
+
+
+ 2 Pet
+ 2 Peter
+ 2 PETER
+
+
+ 1 Jn
+ 1 John
+ 1 JOHN
+
+
+ 2 Jn
+ 2 John
+ 2 JOHN
+
+
+ 3 Jn
+ 3 John
+ 3 JOHN
+
+
+ Jude
+ Jude
+ JUDE
+
+
+ Rev
+ Revelation
+ REVELATION
+
+
+ Tob
+ Tobit
+
+
+ Glossary
+ Glossary
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AdHocCanon_BooksPresent_IncludePeripherals
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Lois Gourley
+ 2017-07-19T21:36:30.284353
+ 2017-11-01T17:23:53.336625
+
+
+```
\ No newline at end of file
diff --git a/v2/2_1_1/test_docs/edp_2_1_1_proposal.xml b/v2/2_1_1/test_docs/edp_2_1_1_proposal.xml
new file mode 100644
index 0000000..0dc2402
--- /dev/null
+++ b/v2/2_1_1/test_docs/edp_2_1_1_proposal.xml
@@ -0,0 +1,74 @@
+
+
+
+ REQUIRED
+
+ REQUIRED
+
+ REQUIRED
+
+ REQUIRED
+ REQUIRED
+ REQUIRED
+ REQUIRED
+ **REQUIRED**
+ ****
+
+
+
+
+
+
+ text
+ **true**
+ **true**
+ **true**
+ **true**
+ **false**
+
+
+
+
+
+
+ REQUIRED
+
+
+ REQUIRED
+ REQUIRED
+
+
+
+ REQUIRED
+ REQUIRED
+
+
+
+ REQUIRED
+
+
+
+ REQUIRED?
+
+
+
+
+
+
+
+
+
+
+
+ REQUIRED
+ REQUIRED (after upload)
+ REQUIRED (after upload)
+
+
+
diff --git a/v2/2_1_1/test_docs/valid_2_1_1.xml b/v2/2_1_1/test_docs/valid_2_1_1.xml
new file mode 100644
index 0000000..f46e2e7
--- /dev/null
+++ b/v2/2_1_1/test_docs/valid_2_1_1.xml
@@ -0,0 +1,65 @@
+
+
+ English: NT Background Notes - Craig Keener
+ NTBN
+ Paratext/7.6.54.151
+
+ d825aeedcdfea7ae4e1fe9d33aade4ea1e70fd16
+ 81764f7cba5f6e4d4d7a4af1923f41bba215ec0b
+ NTBN
+ English: NT Background Notes - Craig Keener
+ 0123456789abcdef0123456789abcdef01234567
+ StPaulsShorterNotesOnHowToWriteTheBible
+
+
+
+ paratextZipResource
+ false
+ true
+ false
+ false
+ BackTranslation
+
+
+
+
+ WBT
+ http://www.wycliffe.org
+ Wycliffe Bible Translators, Inc.
+ 545d2cb00be06579ca809b57
+ Wycliffe Bible Translators, Inc.
+
+
+
+ eng
+ English
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Lois Gourley
+ 2017-07-19T21:36:30.284353
+ 2017-11-01T17:23:53.336625
+ Need a comment here
+
+
\ No newline at end of file