Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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)
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
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)
Exemplo n.º 7
0
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)