from rocraters import PyRoCrateContext, PyRoCrate, read, zip
context = PyRoCrateContext.from_string("https://w3id.org/ro/crate/1.1/context")
crate = PyRoCrate(context)
default_crate = PyRoCrate.new_default()
print(f"Example of a default crate \n {default_crate}")
descriptor = {
"type": "CreativeWork",
"id": "ro-crate-metadata.json",
"conformsTo": {"id": "https://w3id.org/ro/crate/1.1"},
"about": {"id": "./"},
}
root = {
"id": "./",
"type": "Dataset",
"datePublished": "2017",
"name": "Example",
"description": "Example Ro-Crate for using python library",
"license": {"id": "https://creativecommons.org/licenses/by-nc-sa/3.0/au/"},
"author": {"id": "#JohnDoe"},
}
data = {"id": "output/data_file.txt", "type": "Dataset", "name": "Data file name"}
contextual = {
"id": "#JohnDoe",
"type": "Person",
}
failed_data = {"id": "this_is_not_a_file.txt", "type": "Dataset"}
crate.update_descriptor(descriptor)
crate.update_root(root)
crate.update_data(data)
crate.update_contextual(contextual)
crate.update_data(failed_data)
crate.write()
crate = read("ro-crate-metadata.json", 0)
data_target = crate.get_entity("output/data_file.txt")
data_target["description"] = "A text file dataset containing information"
crate.update_data(data_target)
contextual_target = crate.get_entity("#JohnDoe")
contextual_target.update({"id": "#JaneDoe"})
crate.update_contextual(contextual_target)
data_target.pop("description")
crate.update_data(data_target)
crate.delete_entity("#JaneDoe", True)
crate.replace_id("#JohnDoe", "#JaneDoe")
crate.write()
crate = read("ro-crate-metadata.json", 1)
zip("ro-crate-metadata.json", True, 2, True)