comicmeta / ComicBookOntology

An OWL ontology and RDF metadata vocabulary for describing comic books and comic book collections.
40 stars 12 forks source link

Having trouble with an RDF/XML multiple children issue #39

Open elkym opened 3 years ago

elkym commented 3 years ago

I'm not sure if I've organized this wrong, or if there's a deeper problem with how CBO or RDF allows for multiple children of the same type.

I figured that a comic page could have multiple panels... but this is not yet working.

Is this because of some relationship to the sequence property/term? Does it need to built into the same document?

If Mr. Petiya (or anyone else) can help, let me know.

This is the relevant section:

<!-- Comic Page and Panels -->
    <rdf:Description rdf:about="https://dsps.lib.uiowa.edu/gibberishproject/wp-content/uploads/sites/84/2021/04/06-Asterix-and-Cleopatra_p17.jpg">
        <cbo:page>
            <cbo:panel rdf:resource="https://dsps.lib.uiowa.edu/gibberishproject/wp-content/uploads/sites/84/2021/04/06-Asterix-and-Cleopatra_p17-panel6.jpg"></cbo:panel>
            <cbo:panel rdf:resource="https://dsps.lib.uiowa.edu/gibberishproject/wp-content/uploads/sites/84/2021/04/06-Asterix-and-Cleopatra_p17-panel9.jpg"></cbo:panel>
        </cbo:page>
    </rdf:Description>

Here's the entire document:

<rdf:RDF xmlns="http://www.w3.org/2002/07/owl#"
      xml:base="http://www.w3.org/2002/07/owl"
      xmlns:dc="http://purl.org/dc/elements/1.1/"
      xmlns:cbo="http://comicmeta.org/cbo/"
      xmlns:owl="http://www.w3.org/2002/07/owl#"
      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
      xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
      xmlns:schema="http://schema.org/">

    <!--Comic Series: Asterix (1969) -->
    <rdf:Description rdf:about="https://www.comics.org/series/20005/">
        <cbo:seriesTitle>Asterix</cbo:seriesTitle>
        <cbo:seriesYear>1969</cbo:seriesYear>
        <cbo:volumeNumber>6</cbo:volumeNumber>
        <cbo:issue rdf:resource="https://www.comics.org/issue/315214/"></cbo:issue>
        <cbo:publisher rdf:resource="https://www.comics.org/brand_group/2549/"></cbo:publisher>
        <cbo:language>en</cbo:language>
    </rdf:Description>

    <!-- Comic Issue: Asterix and Cleopatra (1969) #6 -->
    <rdf:Description rdf:about="https://www.comics.org/issue/315214/">
        <cbo:issueNumber>6</cbo:issueNumber>
        <cbo:publicationDate>1969</cbo:publicationDate>
        <cbo:edition>5</cbo:edition>

        <!-- Comic Story: 'Asterix and Cleopatra' -->
        <cbo:story>
        <rdf:Description>
            <cbo:storyTitle>Asterix and Cleopatra</cbo:storyTitle>
            <cbo:character rdf:resource="https://www.wikidata.org/wiki/Q7620503" schema:name="Asterix"></cbo:character>
            <cbo:character rdf:resource="https://www.wikidata.org/wiki/Q715597" schema:name="Obelix"></cbo:character>
            <cbo:character rdf:resource="https://www.wikidata.org/wiki/Q1752911" schema:name="Dogmatix"></cbo:character>
            <cbo:character rdf:resource="https://www.wikidata.org/wiki/Q635" schema:name="Cleopatra"></cbo:character>
            <cbo:character rdf:resource="https://www.wikidata.org/wiki/Q3188509" schema:name="Julius Caesar"></cbo:character>
            <cbo:writer rdf:resource="https://viaf.org/viaf/22142570/" schema:name="Rene Goscinny"></cbo:writer>
        </rdf:Description>
        </cbo:story>
    </rdf:Description>

    <!-- Comic Page and Panels -->
    <rdf:Description rdf:about="https://dsps.lib.uiowa.edu/gibberishproject/wp-content/uploads/sites/84/2021/04/06-Asterix-and-Cleopatra_p17.jpg">
        <cbo:page>
            <cbo:panel rdf:resource="https://dsps.lib.uiowa.edu/gibberishproject/wp-content/uploads/sites/84/2021/04/06-Asterix-and-Cleopatra_p17-panel6.jpg"></cbo:panel>
            <cbo:panel rdf:resource="https://dsps.lib.uiowa.edu/gibberishproject/wp-content/uploads/sites/84/2021/04/06-Asterix-and-Cleopatra_p17-panel9.jpg"></cbo:panel>
        </cbo:page>
    </rdf:Description>

    <!-- Panel and Speech Balloons -->
    <rdf:Description rdf:about="https://dsps.lib.uiowa.edu/gibberishproject/wp-content/uploads/sites/84/2021/04/06-Asterix-and-Cleopatra_p17-panel6.jpg">
        <cbo:balloon rdf:resource="https://dsps.lib.uiowa.edu/gibberishproject/wp-content/uploads/sites/84/2021/04/06-Asterix-and-Cleopatra_p17-panel6-balloon1.jpg"></cbo:balloon>
        <cbo:balloon rdf:resource="https://dsps.lib.uiowa.edu/gibberishproject/wp-content/uploads/sites/84/2021/04/06-Asterix-and-Cleopatra_p17-panel6-balloon2.jpg"></cbo:balloon>
        <cbo:balloon rdf:resource="https://dsps.lib.uiowa.edu/gibberishproject/wp-content/uploads/sites/84/2021/04/06-Asterix-and-Cleopatra_p17-panel6-balloon3.jpg"></cbo:balloon>
    </rdf:Description>

    <!-- Panel and Speech Balloons -->
    <rdf:Description rdf:about="https://dsps.lib.uiowa.edu/gibberishproject/wp-content/uploads/sites/84/2021/04/06-Asterix-and-Cleopatra_p17-panel9.jpg">
        <cbo:balloon rdf:resource="https://dsps.lib.uiowa.edu/gibberishproject/wp-content/uploads/sites/84/2021/04/06-Asterix-and-Cleopatra_p17-panel9-balloon1.jpg" ></cbo:balloon>
    </rdf:Description>

</rdf:RDF>
seanpetiya commented 3 years ago

This looks pretty good so far!

The child node of cbo:page needs to be a rdf:Description if the element does not contain a rdf:resource attribute.

    <!-- Comic Page and Panels -->
    <rdf:Description rdf:about="https://dsps.lib.uiowa.edu/gibberishproject/wp-content/uploads/sites/84/2021/04/06-Asterix-and-Cleopatra_p17.jpg">
        <cbo:page>
            <rdf:Description>
                <cbo:panel rdf:resource="https://dsps.lib.uiowa.edu/gibberishproject/wp-content/uploads/sites/84/2021/04/06-Asterix-and-Cleopatra_p17-panel6.jpg"></cbo:panel>
                <cbo:panel rdf:resource="https://dsps.lib.uiowa.edu/gibberishproject/wp-content/uploads/sites/84/2021/04/06-Asterix-and-Cleopatra_p17-panel9.jpg"></cbo:panel>
            </rdf:Description>
        </cbo:page>
    </rdf:Description>

Another way to model this could be:

    <!-- Comic Issue: Asterix and Cleopatra (1969) #6 -->
    <rdf:Description rdf:about="https://www.comics.org/issue/315214/">
        <cbo:issueNumber>6</cbo:issueNumber>
        <cbo:publicationDate>1969</cbo:publicationDate>
        <cbo:edition>5</cbo:edition>

        <!-- Comic Story: 'Asterix and Cleopatra' -->
        <cbo:story>
        <rdf:Description>
            <cbo:storyTitle>Asterix and Cleopatra</cbo:storyTitle>
                         ...
        </rdf:Description>
        </cbo:story>
        <cbo:page rdf:resource="https://dsps.lib.uiowa.edu/gibberishproject/wp-content/uploads/sites/84/2021/04/06-Asterix-and-Cleopatra_p17.jpg"></cbo:page>
    </rdf:Description>

    <!-- Comic Page and Panels -->
    <rdf:Description rdf:about="https://dsps.lib.uiowa.edu/gibberishproject/wp-content/uploads/sites/84/2021/04/06-Asterix-and-Cleopatra_p17.jpg">
        <cbo:panel rdf:resource="https://dsps.lib.uiowa.edu/gibberishproject/wp-content/uploads/sites/84/2021/04/06-Asterix-and-Cleopatra_p17-panel6.jpg"></cbo:panel>
        <cbo:panel rdf:resource="https://dsps.lib.uiowa.edu/gibberishproject/wp-content/uploads/sites/84/2021/04/06-Asterix-and-Cleopatra_p17-panel9.jpg"></cbo:panel>
    </rdf:Description>

I think the question I would have though is does cbo:page describe the comic itself or the story?

elkym commented 3 years ago

This is very helpful. I'm undecided about the story element at this point. There are lots of pieces of information that could be added here, but at this point, I'm mostly focused on the page/panel/balloon linking, and I've included story as an element for correlative purposes, given that some characters consistently speak in unusual ways, reflected in pictographs, scripts, stylizations, etc.