Read a completed review
Betwixt review files can be read back into R after the human review has been completed. This vignette uses the finalised MuIS garment terminology review included with the package.
path <- system.file(
"examples",
"muis-garments-review_1-finalised.html",
package = "betwixt"
)
review <- read_review(path)You can also take a look at this HTML file at http://usebetwixt.com/examples/muis-garments-review_1-finalised.html.
Serialise the review as RDF
A completed review can be serialised as RDF using the Betwixt intermediate vocabulary. The serialisation preserves the reviewed assertions, their review status, and provenance of the review activity.
ttl <- serialise_review(
review,
prefix = "https://usebetwixt.com/examples/",
filename = "muis-garments-review.ttl",
title = "MuIS garment terminology review",
description = "Reviewed terminology assertions for three MuIS garments."
)
ttl_file <- file.path(tempdir(), "muis-garments-review.ttl")
writeLines(text = ttl, con = ttl_file)
cat(ttl)
#> @prefix btx: <https://usebetwixt.com/ns/> .
#> @prefix schema: <https://schema.org/> .
#> @prefix prov: <http://www.w3.org/ns/prov#> .
#> @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
#> @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/candidate>
#> a schema:Dataset
#> ; schema:name "MuIS garment terminology review"
#> ; schema:description "Reviewed terminology assertions for three MuIS garments."
#> ; prov:wasGeneratedBy <https://usebetwixt.com/examples/muis-garments-review/candidate-activity>
#> ; btx:assertion <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/1>, <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/2>, <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/3>, <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/4>, <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/5>, <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/6>, <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/7>, <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/8>, <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/9>, <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/10>, <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/11>, <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/12>, <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/13>, <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/14>, <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/15> .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/reviewed-1>
#> a schema:Dataset
#> ; schema:name "MuIS garment terminology review"
#> ; schema:description "Reviewed terminology assertions for three MuIS garments."
#> ; prov:wasGeneratedBy <https://usebetwixt.com/examples/muis-garments-review/activity>
#> ; prov:wasDerivedFrom <https://usebetwixt.com/examples/muis-garments-review/candidate>
#> ; btx:assertion <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/1>, <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/2>, <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/3>, <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/4>, <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/5>, <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/6>, <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/7>, <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/8>, <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/9>, <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/10>, <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/11>, <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/12>, <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/13>, <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/14>, <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/15> .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/candidate-activity>
#> a prov:Activity
#> ; prov:wasAssociatedWith <https://usebetwixt.com/examples/muis-garments-review/data-manager>
#> ; prov:endedAtTime "2026-09-10T16:20:53Z"^^xsd:dateTime .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/data-manager>
#> a prov:Agent
#> ; rdfs:label "NA" .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/activity>
#> a prov:Activity
#> ; prov:wasAssociatedWith <https://orcid.org/0000-0001-7513-6760>
#> ; prov:wasInformedBy <https://usebetwixt.com/examples/muis-garments-review/candidate-activity>
#> ; prov:startedAtTime "2026-09-10T16:21:13Z"^^xsd:dateTime
#> ; prov:endedAtTime "2026-09-10T17:29:39Z"^^xsd:dateTime .
#>
#> <https://orcid.org/0000-0001-7513-6760>
#> a prov:Agent
#> ; rdfs:label "Daniel Antal" .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/1>
#> a btx:Assertion
#> ; btx:rowNumber 1
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=ebc07930-f719-44f2-a108-6698bcecc20b"
#> ; btx:predicate "label"
#> ; btx:value "sweater, women's" .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/2>
#> a btx:Assertion
#> ; btx:rowNumber 1
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=ebc07930-f719-44f2-a108-6698bcecc20b"
#> ; btx:predicate "description"
#> ; btx:value "MuIS museum record 635780." .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/3>
#> a btx:Assertion
#> ; btx:rowNumber 1
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=ebc07930-f719-44f2-a108-6698bcecc20b"
#> ; btx:predicate "alternative_label"
#> ; btx:value "női kardigán" .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/4>
#> a btx:Assertion
#> ; btx:rowNumber 1
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=ebc07930-f719-44f2-a108-6698bcecc20b"
#> ; btx:predicate "alternative_description"
#> ; btx:value "A MuIS 635780 számú múzeumi rekordja." .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/5>
#> a btx:Assertion
#> ; btx:rowNumber 1
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=ebc07930-f719-44f2-a108-6698bcecc20b"
#> ; btx:predicate "depicts"
#> ; btx:value "300209900" .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/6>
#> a btx:Assertion
#> ; btx:rowNumber 2
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=6440f24f-eaad-4cd4-84d7-1ae7a9d44d5a"
#> ; btx:predicate "label"
#> ; btx:value "gloves" .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/7>
#> a btx:Assertion
#> ; btx:rowNumber 2
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=6440f24f-eaad-4cd4-84d7-1ae7a9d44d5a"
#> ; btx:predicate "description"
#> ; btx:value "MuIS museum record 633053." .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/8>
#> a btx:Assertion
#> ; btx:rowNumber 2
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=6440f24f-eaad-4cd4-84d7-1ae7a9d44d5a"
#> ; btx:predicate "alternative_label"
#> ; btx:value "kesztyű" .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/9>
#> a btx:Assertion
#> ; btx:rowNumber 2
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=6440f24f-eaad-4cd4-84d7-1ae7a9d44d5a"
#> ; btx:predicate "alternative_description"
#> ; btx:value "A MuIS 633053 számú múzeumi rekordja." .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/10>
#> a btx:Assertion
#> ; btx:rowNumber 2
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=6440f24f-eaad-4cd4-84d7-1ae7a9d44d5a"
#> ; btx:predicate "depicts"
#> ; btx:value "300148821" .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/11>
#> a btx:Assertion
#> ; btx:rowNumber 3
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=826c402e-c130-4860-b11e-9538bd403ecf"
#> ; btx:predicate "label"
#> ; btx:value "shirt, women's" .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/12>
#> a btx:Assertion
#> ; btx:rowNumber 3
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=826c402e-c130-4860-b11e-9538bd403ecf"
#> ; btx:predicate "description"
#> ; btx:value "MuIS museum record 635778." .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/13>
#> a btx:Assertion
#> ; btx:rowNumber 3
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=826c402e-c130-4860-b11e-9538bd403ecf"
#> ; btx:predicate "alternative_label"
#> ; btx:value "női ing" .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/14>
#> a btx:Assertion
#> ; btx:rowNumber 3
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=826c402e-c130-4860-b11e-9538bd403ecf"
#> ; btx:predicate "alternative_description"
#> ; btx:value "A MuIS 635778 számú múzeumi rekordja." .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/candidate/assertion/15>
#> a btx:Assertion
#> ; btx:rowNumber 3
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=826c402e-c130-4860-b11e-9538bd403ecf"
#> ; btx:predicate "depicts"
#> ; btx:value "300212499" .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/1>
#> a btx:Assertion
#> ; btx:rowNumber 1
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=ebc07930-f719-44f2-a108-6698bcecc20b"
#> ; btx:predicate "label"
#> ; btx:value "sweater, women's"
#> ; btx:status btx:Corroborated .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/2>
#> a btx:Assertion
#> ; btx:rowNumber 1
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=ebc07930-f719-44f2-a108-6698bcecc20b"
#> ; btx:predicate "description"
#> ; btx:value "MuIS museum record 635780."
#> ; btx:status btx:Corroborated .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/3>
#> a btx:Assertion
#> ; btx:rowNumber 1
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=ebc07930-f719-44f2-a108-6698bcecc20b"
#> ; btx:predicate "alternative_label"
#> ; btx:value "női pulóver"
#> ; btx:status btx:Corrected .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/4>
#> a btx:Assertion
#> ; btx:rowNumber 1
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=ebc07930-f719-44f2-a108-6698bcecc20b"
#> ; btx:predicate "alternative_description"
#> ; btx:value "A MuIS 635780 számú múzeumi rekordja."
#> ; btx:status btx:Corroborated .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/5>
#> a btx:Assertion
#> ; btx:rowNumber 1
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=ebc07930-f719-44f2-a108-6698bcecc20b"
#> ; btx:predicate "depicts"
#> ; btx:value "300209900"
#> ; btx:status btx:Corroborated .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/6>
#> a btx:Assertion
#> ; btx:rowNumber 2
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=6440f24f-eaad-4cd4-84d7-1ae7a9d44d5a"
#> ; btx:predicate "label"
#> ; btx:value "gloves"
#> ; btx:status btx:Corroborated .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/7>
#> a btx:Assertion
#> ; btx:rowNumber 2
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=6440f24f-eaad-4cd4-84d7-1ae7a9d44d5a"
#> ; btx:predicate "description"
#> ; btx:value "MuIS museum record 633053."
#> ; btx:status btx:Corroborated .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/8>
#> a btx:Assertion
#> ; btx:rowNumber 2
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=6440f24f-eaad-4cd4-84d7-1ae7a9d44d5a"
#> ; btx:predicate "alternative_label"
#> ; btx:value "kesztyű"
#> ; btx:status btx:Corroborated .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/9>
#> a btx:Assertion
#> ; btx:rowNumber 2
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=6440f24f-eaad-4cd4-84d7-1ae7a9d44d5a"
#> ; btx:predicate "alternative_description"
#> ; btx:value "A MuIS 633053 számú múzeumi rekordja."
#> ; btx:status btx:Corroborated .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/10>
#> a btx:Assertion
#> ; btx:rowNumber 2
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=6440f24f-eaad-4cd4-84d7-1ae7a9d44d5a"
#> ; btx:predicate "depicts"
#> ; btx:value "300148821"
#> ; btx:status btx:Corroborated .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/11>
#> a btx:Assertion
#> ; btx:rowNumber 3
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=826c402e-c130-4860-b11e-9538bd403ecf"
#> ; btx:predicate "label"
#> ; btx:value "shirt, women's"
#> ; btx:status btx:Corroborated .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/12>
#> a btx:Assertion
#> ; btx:rowNumber 3
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=826c402e-c130-4860-b11e-9538bd403ecf"
#> ; btx:predicate "description"
#> ; btx:value "MuIS museum record 635778."
#> ; btx:status btx:Corroborated .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/13>
#> a btx:Assertion
#> ; btx:rowNumber 3
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=826c402e-c130-4860-b11e-9538bd403ecf"
#> ; btx:predicate "alternative_label"
#> ; btx:value "női ing"
#> ; btx:status btx:Corroborated .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/14>
#> a btx:Assertion
#> ; btx:rowNumber 3
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=826c402e-c130-4860-b11e-9538bd403ecf"
#> ; btx:predicate "alternative_description"
#> ; btx:value "A MuIS 635778 számú múzeumi rekordja."
#> ; btx:status btx:Corroborated .
#>
#> <https://usebetwixt.com/examples/muis-garments-review/reviewed-1/assertion/15>
#> a btx:Assertion
#> ; btx:rowNumber 3
#> ; btx:subject "https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=826c402e-c130-4860-b11e-9538bd403ecf"
#> ; btx:predicate "depicts"
#> ; btx:value "300212499"
#> ; btx:status btx:Corroborated .You can download this file from http://usebetwixt.com/examples/muis-garments-review.ttl.
Tabular projections
The RDF representation is useful for semantic exchange, but reviewed knowledge can also be projected into ordinary tabular structures. Betwixt provides wide and long projections for different downstream uses.
Wide projection
The wide projection preserves the structure of the original review. It contains three aligned tables representing the candidate values, the reviewed values, and their review status.
wide <- project_review_wide(review)Candidate state
The candidate table contains the semantic assertions presented to the reviewer. These may originate from existing metadata, computational transformations, or other candidate-generating processes.
wide[wide$plane == "candidate", ]
#> row_number plane evidence_url
#> 1 1 candidate https://www.muis.ee/museaalview/635780
#> 2 2 candidate https://www.muis.ee/museaalview/633053
#> 3 3 candidate https://www.muis.ee/museaalview/635778
#> evidence_media_url
#> 1 https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=ebc07930-f719-44f2-a108-6698bcecc20b
#> 2 https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=6440f24f-eaad-4cd4-84d7-1ae7a9d44d5a
#> 3 https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=826c402e-c130-4860-b11e-9538bd403ecf
#> evidence_text context_held_by label
#> 1 sweater, women's Estonian National Museum sweater, women's
#> 2 gloves Estonian National Museum gloves
#> 3 shirt, women's Estonian National Museum shirt, women's
#> description alternative_label
#> 1 MuIS museum record 635780. női kardigán
#> 2 MuIS museum record 633053. kesztyű
#> 3 MuIS museum record 635778. női ing
#> alternative_description
#> 1 A MuIS 635780 számú múzeumi rekordja.
#> 2 A MuIS 633053 számú múzeumi rekordja.
#> 3 A MuIS 635778 számú múzeumi rekordja.
#> subject
#> 1 https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=ebc07930-f719-44f2-a108-6698bcecc20b
#> 2 https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=6440f24f-eaad-4cd4-84d7-1ae7a9d44d5a
#> 3 https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=826c402e-c130-4860-b11e-9538bd403ecf
#> depicts
#> 1 300209900
#> 2 300148821
#> 3 300212499At this stage, these values should be understood as proposed knowledge rather than accepted facts.
Reviewed state
The reviewed table contains the values after human review.
wide[wide$plane == "reviewed", ]
#> row_number plane evidence_url
#> 4 1 reviewed https://www.muis.ee/museaalview/635780
#> 5 2 reviewed https://www.muis.ee/museaalview/633053
#> 6 3 reviewed https://www.muis.ee/museaalview/635778
#> evidence_media_url
#> 4 https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=ebc07930-f719-44f2-a108-6698bcecc20b
#> 5 https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=6440f24f-eaad-4cd4-84d7-1ae7a9d44d5a
#> 6 https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=826c402e-c130-4860-b11e-9538bd403ecf
#> evidence_text context_held_by label
#> 4 sweater, women's Estonian National Museum sweater, women's
#> 5 gloves Estonian National Museum gloves
#> 6 shirt, women's Estonian National Museum shirt, women's
#> description alternative_label
#> 4 MuIS museum record 635780. női pulóver
#> 5 MuIS museum record 633053. kesztyű
#> 6 MuIS museum record 635778. női ing
#> alternative_description
#> 4 A MuIS 635780 számú múzeumi rekordja.
#> 5 A MuIS 633053 számú múzeumi rekordja.
#> 6 A MuIS 635778 számú múzeumi rekordja.
#> subject
#> 4 https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=ebc07930-f719-44f2-a108-6698bcecc20b
#> 5 https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=6440f24f-eaad-4cd4-84d7-1ae7a9d44d5a
#> 6 https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=826c402e-c130-4860-b11e-9538bd403ecf
#> depicts
#> 4 300209900
#> 5 300148821
#> 6 300212499Most values may remain unchanged, while others can be corrected, rejected, or left unresolved. Because the table has the same structure as the candidate state, the two can be compared directly.
Review status
The status table records what happened to each reviewable value.
wide[wide$plane == "status", ]
#> row_number plane evidence_url
#> 7 1 status https://www.muis.ee/museaalview/635780
#> 8 2 status https://www.muis.ee/museaalview/633053
#> 9 3 status https://www.muis.ee/museaalview/635778
#> evidence_media_url
#> 7 https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=ebc07930-f719-44f2-a108-6698bcecc20b
#> 8 https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=6440f24f-eaad-4cd4-84d7-1ae7a9d44d5a
#> 9 https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=826c402e-c130-4860-b11e-9538bd403ecf
#> evidence_text context_held_by label description
#> 7 sweater, women's Estonian National Museum corroborated corroborated
#> 8 gloves Estonian National Museum corroborated corroborated
#> 9 shirt, women's Estonian National Museum corroborated corroborated
#> alternative_label alternative_description subject depicts
#> 7 corrected corroborated corroborated corroborated
#> 8 corroborated corroborated corroborated corroborated
#> 9 corroborated corroborated corroborated corroboratedThe status distinguishes values that were corroborated,
corrected, rejected, or deferred.
It therefore records the review decision separately from the reviewed
value itself.
The three tables are structurally aligned: the same coordinate refers to the candidate assertion, its reviewed state, and the corresponding review decision.
Long projection
For semantic processing, the reviewed state can instead be projected into atomic assertions.
long <- project_review_long(review)
long
#> # A tibble: 30 × 21
#> assertion_number row_number context_held_by plane subject predicate value
#> <int> <int> <chr> <chr> <chr> <chr> <chr>
#> 1 1 1 Estonian National … cand… https:… label swea…
#> 2 2 1 Estonian National … cand… https:… descript… MuIS…
#> 3 3 1 Estonian National … cand… https:… alternat… női …
#> 4 4 1 Estonian National … cand… https:… alternat… A Mu…
#> 5 5 1 Estonian National … revi… https:… label swea…
#> 6 6 1 Estonian National … revi… https:… descript… MuIS…
#> 7 7 1 Estonian National … revi… https:… alternat… női …
#> 8 8 1 Estonian National … revi… https:… alternat… A Mu…
#> 9 9 1 Estonian National … cand… https:… depicts 3002…
#> 10 10 1 Estonian National … revi… https:… depicts 3002…
#> # ℹ 20 more rows
#> # ℹ 14 more variables: status <chr>, reviewer <chr>, reviewer_email <chr>,
#> # reviewer_iri <chr>, started_at <chr>, saved_at <chr>, ended_at <chr>,
#> # data_manager <chr>, data_manager_email <chr>, data_manager_iri <chr>,
#> # candidate_generated_at <chr>, software_agent <chr>, software_version <chr>,
#> # project_id <chr>Each row now represents one reviewed assertion with its subject,
predicate, value, and review status. The original
row_number is retained as a coordinate linking the
assertion back to the wide review layout, while
assertion_number provides a unique identifier within the
projection.
The wide and long forms therefore represent the same reviewed knowledge for different purposes: the wide form preserves the human review layout, while the long form exposes individual semantic assertions for further processing and serialisation.
Export to Excel
The three aligned projections can also be written to separate
worksheets in a single Excel workbook. Excel export is not part of the
Betwixt API; here we use the optional writexl package.
require(writexl)
#> Loading required package: writexl
xlsx_file <- file.path(tempdir(), "muis-garments-review.xlsx")
writexl::write_xlsx(
x = list(
candidate = wide[wide$plane == "candidate", ],
reviewed = wide[wide$plane == "reviewed", ],
status = wide[wide$plane == "status", ],
long = long
),
path = xlsx_file
)
xlsx_file
#> [1] "C:\\Users\\DANIEL~1\\AppData\\Local\\Temp\\RtmpGm9yNf/muis-garments-review.xlsx"The resulting workbook preserves the same separation between candidate knowledge, reviewed knowledge, and review status that we saw above. You can review this Excel workbook at http://usebetwixt.com/examples/muis-garments-review.xlsx.
