def main(print_queries: bool, submit_queries: bool): user_vcard = "https://testuser.trompa-solid.upf.edu/profile/card#me" # Our vocabulary vocabulary_ids = fixed_vocabulary(print_queries, submit_queries) audio_id = audio_file_liebestraum(print_queries, submit_queries) # The annotation target. We're annotating the URL that is at the `source` field of the above audio object target = annotation.create_annotation_ce_target( creator=user_vcard, field= "source", # we want to annotate the URL that is at the 'source' field of the AudioObject node # Optionally, set the 'fragment' parameter to annotate a time range in the file ) target_id = "ce-target-id" print("AnnotationCETarget") if print_queries: print(target) if submit_queries: target_id = send_query_and_get_id(target, "CreateAnnotationCETarget") print("Join AnnotationCETarget-Target") target_join = annotation.merge_annotation_target_target( target_id, audio_id) if print_queries: print(target_join) if submit_queries: send_query_and_get_id(target_join) # The annotation ann = annotation.create_annotation( creator=user_vcard, motivation=annotation.AnnotationSchemaMotivation.tagging) ann_id = "annotation-id" print("Annotation") if print_queries: print(ann) if submit_queries: ann_id = send_query_and_get_id(ann, "CreateAnnotation") # Join the annotation with the AnnotationCETarget annotation_target_join = annotation.merge_annotation_targetnode( ann_id, target_id) # Join the annotation with the Body. In this case, the body is the "Happy" DefinedTerm # from the DefinedTermSet that we provided body_id = vocabulary_ids["dt_happy_id"] annotation_body_join = annotation.merge_annotation_bodynode( ann_id, body_id) print("Annotation - link to target and body") if print_queries: print(annotation_target_join) print(annotation_body_join) if submit_queries: send_query_and_get_id(annotation_target_join) send_query_and_get_id(annotation_body_join)
def main(print_queries: bool, submit_queries: bool): user_vcard = "https://testuser.trompa-solid.upf.edu/profile/card#me" # An annotation where the target is a specific field of an existing node. # For simplicity we don't have a body audio_id = audio_file_pierri_etude(print_queries, submit_queries) # The annotation target. We're annotating the URL that is at the `source` field of the above audio object target = annotation.create_annotation_ce_target( creator=user_vcard, field="source", # we want to annotate the URL that is at the 'source' field of the AudioObject node fragment="t=10,20" # only annotate 10 seconds of audio from 10sec - 20sec ) target_id = "ce-target-id" print("AnnotationCETarget") if print_queries: print(target) if submit_queries: target_id = send_query_and_get_id(target, "CreateAnnotationCETarget") print("Join AnnotationCETarget-Target") target_join = annotation.merge_annotation_target_target(target_id, audio_id) if print_queries: print(target_join) if submit_queries: send_query_and_get_id(target_join) # The annotation ann = annotation.create_annotation( creator=user_vcard, motivation=annotation.AnnotationSchemaMotivation.tagging ) ann_id = "annotation-id" print("Annotation") if print_queries: print(ann) if submit_queries: ann_id = send_query_and_get_id(ann, "CreateAnnotation") # Join the annotation with the AnnotationCETarget annotation_target_join = annotation.merge_annotation_targetnode(ann_id, target_id) print("Annotation - link to target") if print_queries: print(annotation_target_join) if submit_queries: send_query_and_get_id(annotation_target_join) # An annotation where the target is an actual node in the CE (not the item at a field) # The annotation target. We're annotating the URL that is at the `source` field of the above audio object ann_target = annotation.create_annotation_ce_target( creator=user_vcard # no field or fragment set ) ann_target_id = "ce-target-id" print("AnnotationCETarget - no field") if print_queries: print(ann_target) if submit_queries: ann_target_id = send_query_and_get_id(ann_target, "CreateAnnotationCETarget") print("Join AnnotationCETarget-Target") # Here, the target field of the AnnotationCETarget object is the previous annotation object ann_target_join = annotation.merge_annotation_target_target(ann_target_id, ann_id) if print_queries: print(ann_target_join) if submit_queries: send_query_and_get_id(ann_target_join) # A new annotation, this one is an annotation about the _other_ annotation ann = annotation.create_annotation( creator=user_vcard, motivation=annotation.AnnotationSchemaMotivation.tagging ) ann_id = "annotation-id" print("Annotation") if print_queries: print(ann) if submit_queries: ann_id = send_query_and_get_id(ann, "CreateAnnotation") # Join the annotation with the AnnotationCETarget annotation_target_join = annotation.merge_annotation_targetnode(ann_id, target_id) print("Annotation - link to target") if print_queries: print(annotation_target_join) if submit_queries: send_query_and_get_id(annotation_target_join) # Annotation target 3: external target # This style of annotation doesn't need an AnnotationCETarget object, because the target isn't in the CE ann = annotation.create_annotation( creator=user_vcard, motivation=annotation.AnnotationSchemaMotivation.tagging, target_url="https://example.com/audio.mp3" ) print("Annotation - external URL target") if print_queries: print(ann) if submit_queries: send_query_and_get_id(ann, "CreateAnnotation")
def main(print_queries: bool, submit_queries: bool): admin_vcard = "https://alastair.trompa-solid.upf.edu/profile/card#me" user_vcard = "https://testuser.trompa-solid.upf.edu/profile/card#me" audio_id = audio_file_liebestraum(print_queries, submit_queries) # A 'template' of the rating that we're using. This can be used to show a graphical widget, # and also as a common template that can be used to join together multiple annotations rating_definition = rating.create_rating_definition(creator=admin_vcard, worstrating=0, bestrating=10) rating_definition_id = "rating-definition-id" print("Rating (definition)") if print_queries: print(rating_definition) if submit_queries: rating_definition_id = send_query_and_get_id(rating_definition, "CreateRating") # The annotation target. We're annotating the URL that is at the `source` field of the above audio object target = annotation.create_annotation_ce_target( creator=user_vcard, field= "source", # we want to annotate the URL that is at the 'source' field of the AudioObject node # Optionally, set the 'fragment' parameter to annotate a time range in the file ) target_id = "ce-target-id" print("AnnotationCETarget") if print_queries: print(target) if submit_queries: target_id = send_query_and_get_id(target, "CreateAnnotationCETarget") print("Join AnnotationCETarget-Target") target_join = annotation.merge_annotation_target_target( target_id, audio_id) if print_queries: print(target_join) if submit_queries: send_query_and_get_id(target_join) # The annotation ann = annotation.create_annotation( creator=user_vcard, motivation=annotation.AnnotationSchemaMotivation.assessing) ann_id = "annotation-id" print("Annotation") if print_queries: print(ann) if submit_queries: ann_id = send_query_and_get_id(ann, "CreateAnnotation") # Make a rating user_rating = rating.create_rating(creator=user_vcard, bestrating=10, worstrating=1, ratingvalue=8) print("Rating") rating_id = "rating-id" if print_queries: print(user_rating) if submit_queries: rating_id = send_query_and_get_id(user_rating, "CreateRating") # Say that the rating was derived from the original definition that we created rating_was_derived_from_definition = rating.rating_add_was_derived_from_rating( rating_id, rating_definition_id) print("Rating - join to definition template") if print_queries: print(rating_was_derived_from_definition) if submit_queries: send_query_and_get_id(rating_was_derived_from_definition) # Join the annotation with the AnnotationCETarget annotation_target_join = annotation.merge_annotation_targetnode( ann_id, target_id) # Join the annotation with the Body. In this case, the body is the Rating that we just made annotation_body_join = annotation.merge_annotation_bodynode( ann_id, rating_id) print("Annotation - link to target and body") if print_queries: print(annotation_target_join) print(annotation_body_join) if submit_queries: send_query_and_get_id(annotation_target_join) send_query_and_get_id(annotation_body_join)
def main(print_queries: bool, submit_queries: bool): user_vcard = "https://testuser.trompa-solid.upf.edu/profile/card#me" # An annotation requires a target, but we omit it from this demo. # An annotation whose body is an external URL ann_url = annotation.create_annotation( creator=user_vcard, motivation=annotation.AnnotationSchemaMotivation.describing, body_url=["https://trompamusic.eu/something", "http://example.com/somethingelse"] ) ann_url_id = "annotation-id" print("Annotation - url body") if print_queries: print(ann_url) if submit_queries: ann_url_id = send_query_and_get_id(ann_url, "CreateAnnotation") # An annotation whose body is some text body = annotation.create_annotation_textual_body( creator=user_vcard, value="if the <i>format</i> field is set correctly, the value of the <b>textualbody</b> can even be html!", format_="text/html", language="en" ) body_id = "text-body-id" print("AnnotationTextualBody") if print_queries: print(body) if submit_queries: body_id = send_query_and_get_id(body, "CreateAnnotationTextualBody") ann_text = annotation.create_annotation( creator=user_vcard, motivation=annotation.AnnotationSchemaMotivation.commenting ) ann_text_id = "annotation-id" print("Annotation - Textual body") if print_queries: print(ann_text) if submit_queries: ann_text_id = send_query_and_get_id(ann_text, "CreateAnnotation") # Join the annotation with the and the Body annotation_text_body_join = annotation.merge_annotation_bodytext(ann_text_id, body_id) print("Annotation - link to body") if print_queries: print(annotation_text_body_join) if submit_queries: send_query_and_get_id(annotation_text_body_join) # An annotation whose body is another node in the CE. In this case, the previous annotation ann_node = annotation.create_annotation( creator=user_vcard, motivation=annotation.AnnotationSchemaMotivation.linking ) ann_node_id = "annotation-id" print("Annotation - node body") if print_queries: print(ann_node) if submit_queries: ann_node_id = send_query_and_get_id(ann_node, "CreateAnnotation") # Join the annotation with the and the Body annotation_node_body_join = annotation.merge_annotation_bodynode(ann_node_id, ann_text_id) print("Annotation - link to body") if print_queries: print(annotation_node_body_join) if submit_queries: send_query_and_get_id(annotation_node_body_join)
def main(print_queries: bool, submit_queries: bool): user_vcard = "https://testuser.trompa-solid.upf.edu/profile/card#me" audio1_id = audio_file_liebestraum(print_queries, submit_queries) audio2_id = audio_file_pierri_etude(print_queries, submit_queries) session = annotation.create_annotation_session(creator=user_vcard, name="Some session") print("Annotation session") session_id = "session-id" if print_queries: print(session) if submit_queries: session_id = send_query_and_get_id(session, "CreateItemList") # We have three annotations in this session. One of audio1_id, and two of audio2_id at different points in time # For simplicity we don't set any body target1 = annotation.create_annotation_ce_target(creator=user_vcard, field="contenturl", fragment="#t=8") annotation1 = annotation.create_annotation( creator=user_vcard, motivation=annotation.AnnotationSchemaMotivation.highlighting) target2 = annotation.create_annotation_ce_target(creator=user_vcard, field="contenturl") annotation2 = annotation.create_annotation( creator=user_vcard, motivation=annotation.AnnotationSchemaMotivation.highlighting) target3 = annotation.create_annotation_ce_target(creator=user_vcard, field="contenturl", fragment="#t=15") annotation3 = annotation.create_annotation( creator=user_vcard, motivation=annotation.AnnotationSchemaMotivation.highlighting) print("Annotation - Create CE Target and Annotation objects") target1_id = "target1-id" target2_id = "target2-id" target3_id = "target3-id" annotation1_id = "annotation1-id" annotation2_id = "annotation2-id" annotation3_id = "annotation3-id" if print_queries: print(target1) print(target2) print(target3) print(annotation1) print(annotation2) print(annotation3) if submit_queries: target1_id = send_query_and_get_id(target1, "CreateAnnotationCETarget") target2_id = send_query_and_get_id(target2, "CreateAnnotationCETarget") target3_id = send_query_and_get_id(target3, "CreateAnnotationCETarget") annotation1_id = send_query_and_get_id(annotation1, "CreateAnnotation") annotation2_id = send_query_and_get_id(annotation2, "CreateAnnotation") annotation3_id = send_query_and_get_id(annotation3, "CreateAnnotation") # Linking audio to AnnotationCETarget and AnnotationCETarget to Annotation target1_audio = annotation.merge_annotation_target_target( target1_id, audio1_id) target2_audio = annotation.merge_annotation_target_target( target2_id, audio2_id) target3_audio = annotation.merge_annotation_target_target( target3_id, audio2_id) annotation1_target = annotation.merge_annotation_targetnode( annotation1_id, target1_id) annotation2_target = annotation.merge_annotation_targetnode( annotation2_id, target2_id) annotation3_target = annotation.merge_annotation_targetnode( annotation3_id, target3_id) print("Annotation - join audio to target and target to annotation") if print_queries: print(target1_audio) print(target2_audio) print(target3_audio) print(annotation1_target) print(annotation2_target) print(annotation3_target) if submit_queries: send_query_and_get_id(target1_audio) send_query_and_get_id(target2_audio) send_query_and_get_id(target3_audio) send_query_and_get_id(annotation1_target) send_query_and_get_id(annotation2_target) send_query_and_get_id(annotation3_target) # Make a container ListItem to add to the Session annotation1_item = annotation.create_annotation_session_element( creator=user_vcard) annotation2_item = annotation.create_annotation_session_element( creator=user_vcard) annotation3_item = annotation.create_annotation_session_element( creator=user_vcard) print("Annotation - create ListItem") annotation1_item_id = "annotation1-listitem-id" annotation2_item_id = "annotation2-listitem-id" annotation3_item_id = "annotation3-listitem-id" if print_queries: print(annotation1_item) print(annotation2_item) print(annotation3_item) if submit_queries: annotation1_item_id = send_query_and_get_id(annotation1_item, "CreateListItem") annotation2_item_id = send_query_and_get_id(annotation2_item, "CreateListItem") annotation3_item_id = send_query_and_get_id(annotation3_item, "CreateListItem") # Linking Annotations to ListItems, and add ListItems to the session item1_annotation = itemlist.mutation_add_listitem_item( annotation1_item_id, annotation1_id) item2_annotation = itemlist.mutation_add_listitem_item( annotation2_item_id, annotation2_id) item3_annotation = itemlist.mutation_add_listitem_item( annotation3_item_id, annotation3_id) session_item1 = itemlist.mutation_add_itemlist_itemlist_element( session_id, annotation1_item_id) session_item2 = itemlist.mutation_add_itemlist_itemlist_element( session_id, annotation2_item_id) session_item3 = itemlist.mutation_add_itemlist_itemlist_element( session_id, annotation3_item_id) print( "Annotation - join annotation to ListItem and and add ListItem to session" ) if print_queries: print(item1_annotation) print(item2_annotation) print(item3_annotation) print(session_item1) print(session_item2) print(session_item3) if submit_queries: send_query_and_get_id(item1_annotation) send_query_and_get_id(item2_annotation) send_query_and_get_id(item3_annotation) send_query_and_get_id(session_item1) send_query_and_get_id(session_item2) send_query_and_get_id(session_item3)
def main(print_queries: bool, submit_queries: bool): user_vcard = "https://testuser.trompa-solid.upf.edu/profile/card#me" vocabulary_ids = fixed_vocabulary(print_queries, submit_queries) audio_id = audio_file_liebestraum(print_queries, submit_queries) # The annotation target. We're annotating the URL that is at the `source` field of the above audio object target = annotation.create_annotation_ce_target( creator=user_vcard, field="source", ) target_id = "ce-target-id" print("AnnotationCETarget") if print_queries: print(target) if submit_queries: target_id = send_query_and_get_id(target, "CreateAnnotationCETarget") print("Join AnnotationCETarget-Target") target_join = annotation.merge_annotation_target_target( target_id, audio_id) if print_queries: print(target_join) if submit_queries: send_query_and_get_id(target_join) # Annotation 1 - "Happy" tag ann1 = annotation.create_annotation( creator=user_vcard, motivation=annotation.AnnotationSchemaMotivation.tagging) ann1_id = "annotation1-id" print("Annotation1") if print_queries: print(ann1) if submit_queries: ann1_id = send_query_and_get_id(ann1, "CreateAnnotation") # Join the annotation with the AnnotationCETarget annotation_target_join = annotation.merge_annotation_targetnode( ann1_id, target_id) # Join the annotation with the Body. In this case, the body is the "Happy" DefinedTerm # from the DefinedTermSet that we provided body_id = vocabulary_ids["dt_happy_id"] annotation_body_join = annotation.merge_annotation_bodynode( ann1_id, body_id) print("Annotation1 - link to target and body") if print_queries: print(annotation_target_join) print(annotation_body_join) if submit_queries: send_query_and_get_id(annotation_target_join) send_query_and_get_id(annotation_body_join) # Annotation 2 - freeform tag ann2 = annotation.create_annotation( creator=user_vcard, motivation=annotation.AnnotationSchemaMotivation.tagging) ann2_id = "annotation2-id" print("Annotation2") if print_queries: print(ann2) if submit_queries: ann2_id = send_query_and_get_id(ann2, "CreateAnnotation") # The annotation text body body = annotation.create_annotation_textual_body( creator=user_vcard, value="favourite-song", # the tag format_="text/plain", language="en") body_id = "text-body-id" print("AnnotationTextualBody") if print_queries: print(body) if submit_queries: body_id = send_query_and_get_id(body, "CreateAnnotationTextualBody") # Join the annotation with the AnnotationCETarget and body. Note that we can use the same # target as we know that all annotations are of the same thing annotation_target_join = annotation.merge_annotation_targetnode( ann2_id, target_id) annotation_body_join = annotation.merge_annotation_bodynode( ann2_id, body_id) print("Annotation1 - link to target and body") if print_queries: print(annotation_target_join) print(annotation_body_join) if submit_queries: send_query_and_get_id(annotation_target_join) send_query_and_get_id(annotation_body_join) # Linking Annotation, this joins together the two previous annotations into a third one # Make a custom motivation which describes what this linking represents custom_motivation = annotation.create_annotation_motivation( creator=user_vcard, title="Music scholars feedback grouping", description= "This motivation groups together 4 different annotations into a single meta-annotation" "which represents the full description of a recording by a user", broader_schema=annotation.AnnotationSchemaMotivation.linking) custom_motivation_id = "custom-motivation-id" print("Linking Annotation - create Motivation") if print_queries: print(custom_motivation) if submit_queries: custom_motivation_id = send_query_and_get_id( custom_motivation, "CreateAnnotationCEMotivation") ann_link = annotation.create_annotation( creator=user_vcard, motivation=annotation.AnnotationSchemaMotivation.linking) ann_link_id = "annotation2-id" print("Linking Annotation") if print_queries: print(ann2) if submit_queries: ann_link_id = send_query_and_get_id(ann_link, "CreateAnnotation") # Add the custom motivation as the motivation of the linking annotation link_annotation_target_join = annotation.merge_annotation_targetnode( ann_link_id, target_id) link_annotation_motivation_join = annotation.merge_annotation_cemotivation( ann_link_id, custom_motivation_id) # Add the two prior annotations as the body of the linking annotation link_annotation_body1_join = annotation.merge_annotation_bodynode( ann_link_id, ann1_id) link_annotation_body2_join = annotation.merge_annotation_bodynode( ann_link_id, ann2_id) print("Linking Annotation - join with target, motivation, and bodies") if print_queries: print(link_annotation_target_join) print(link_annotation_motivation_join) print(link_annotation_body1_join) print(link_annotation_body2_join) if submit_queries: send_query_and_get_id(link_annotation_target_join) send_query_and_get_id(link_annotation_motivation_join) send_query_and_get_id(link_annotation_body1_join) send_query_and_get_id(link_annotation_body2_join)
def main(print_queries: bool, submit_queries: bool): user_vcard = "https://testuser.trompa-solid.upf.edu/profile/card#me" audio_id = audio_file_liebestraum(print_queries, submit_queries) # The annotation text body body = annotation.create_annotation_textual_body( creator=user_vcard, value="favourite-song", # the tag format_="text/plain", language="en") body_id = "text-body-id" print("AnnotationTextualBody") if print_queries: print(body) if submit_queries: body_id = send_query_and_get_id(body, "CreateAnnotationTextualBody") # The annotation target. We're annotating the URL that is at the `source` field of the above audio object target = annotation.create_annotation_ce_target( creator=user_vcard, field= "source", # we want to annotate the URL that is at the 'source' field of the AudioObject node # Optionally, set the 'fragment' parameter to annotate a time range in the file ) target_id = "ce-target-id" print("AnnotationCETarget") if print_queries: print(target) if submit_queries: target_id = send_query_and_get_id(target, "CreateAnnotationCETarget") print("Join AnnotationCETarget-Target") target_join = annotation.merge_annotation_target_target( target_id, audio_id) if print_queries: print(target_join) if submit_queries: send_query_and_get_id(target_join) # The annotation ann = annotation.create_annotation( creator=user_vcard, motivation=annotation.AnnotationSchemaMotivation.tagging) ann_id = "annotation-id" print("Annotation") if print_queries: print(ann) if submit_queries: ann_id = send_query_and_get_id(ann, "CreateAnnotation") # Join the annotation with the AnnotationCETarget, and the Body annotation_target_join = annotation.merge_annotation_targetnode( ann_id, target_id) annotation_body_join = annotation.merge_annotation_bodytext( ann_id, body_id) print("Annotation - link to target and body") if print_queries: print(annotation_target_join) print(annotation_body_join) if submit_queries: send_query_and_get_id(annotation_target_join) send_query_and_get_id(annotation_body_join)