RDFBones / RDFBones-O

An RDF ontology for research data from physical anthropology and related fields of expertise.
4 stars 1 forks source link

Ordering and Grouping of Data Items #140

Open cuboideum opened 3 years ago

cuboideum commented 3 years ago

Implementation of skeletal inventories in AnthroGraph has brought up the problem how the layout of data items on data entry forms can be specified. The same problem occurs with tabular output from queries. As it does not pertain to the specific implementation in AnthroGraph but rather to the implementation of RDFBones in general these specifications should be part of the core ontology.

The following two specifications should be implemented:

Here, several options for implementing these functionalities into RDFBones are outlined and discussed.

Data properties with measurement data instances

The intuitive solution that @zarquon42b and myself have come up with is to add numeric data properties to data items that describe a sequence. As datasets are made up of measurement data, the properties should be part of these elements. The following example shows two measurement data forming a group (scores of the frontal bone) and the positions 1 and 2 in the activation sequence of a skeletal inventory section. Grouping and ordering are defined by the data properties 'grouping number' and 'activation sequence number'.

RDFBones-ModellingOptionsGroupingAndActivationSequence-MeasurementDatumAnnotations

Advantages of this approach

Disadvantages

Data property restrictions on ROI classes

At least in skeletal inventories, each score is about a specifically defined anatomical region of interest (ROI). As a consequence, data property restrictions on these classes are easier to realise than with classes for measurement data.

RDFBones-ModellingOptionsGroupingAndActivationSequence-ROIClassRestrictions

Advantages

Disadvantages

Specific classes for specifications

Specification of ordering and grouping should be stated with the skeletal inventory section class instead of other elements that might be reused with other dataset types. But direct restrictions on the skeletal inventory section class would have to be very complicated and difficult to query. A solution might be to introduce specific classes for specifications pertaining to data elements in a data set. These would be about the data set (i.e. the skeletal inventory section) on the one hand and the data element (i.e. the measurement datum) on the other. Grouping and ordering would be specified through data property restrictions on the specification classes. An example for a definition of such a class would be the following:

    <owl:Class rdf:about="http://w3id.org/rdfbones/ext/standards-si/DIMFrontalLeft">
        <rdfs:subClassOf rdf:resource="http://w3id.org/rdfbones/core#DataItemSpecification"/>
        <rdfs:subClassOf>
            <owl:Restriction>
                <owl:onProperty rdf:resource="http://purl.obolibrary.org/obo/IAO_0000136"/> <!-- 'is about' -->
                <owl:someValuesFrom rdf:resource="http://w3id.org/rdfbones/ext/standards-si/SectionCranialBonesAndJointSurfaces"/>
            </owl:Restriction>
        </rdfs:subClassOf>
        <rdfs:subClassOf>
            <owl:Restriction>
                <owl:onProperty rdf:resource="http://purl.obolibrary.org/obo/IAO_0000136"/> <!-- 'is about' -->
                <owl:someValuesFrom>
                    <owl:Class>
                        <owl:intersectionOf rdf:parseType="Collection">
                            <rdf:Description rdf:about="http://w3id.org/rdfbones/ext/standards-si/Representation4States"/>
                            <owl:Restriction>
                                <owl:onProperty rdf:resource="http://purl.obolibrary.org/obo/IAO_0000136"/> <!-- 'is about' -->
                                <owl:qualifiedCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1</owl:qualifiedCardinality>
                                <owl:onClass rdf:resource="http://w3id.org/rdfbones/ext/standards-si/LeftSideOfFrontalBone"/>
                            </owl:Restriction>
                        </owl:intersectionOf>
                    </owl:Class>
                </owl:someValuesFrom>
            </owl:Restriction>
        </rdfs:subClassOf>
        <rdfs:subClassOf>
            <owl:Restriction>
                <owl:onProperty rdf:resource="http://w3id.org/rdfbones/core#groupingNumber"/>
                <owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">1</owl:hasValue>
            </owl:Restriction>
        </rdfs:subClassOf>
        <rdfs:subClassOf>
            <owl:Restriction>
                <owl:onProperty rdf:resource="http://w3id.org/rdfbones/core#activationSequenceNumber"/>
                <owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">1</owl:hasValue>
            </owl:Restriction>
        </rdfs:subClassOf>
        <rdfs:label xml:lang="en">DIM left part of frontal bone</rdfs:label>
    </owl:Class>

RDFBones-ModellingOptionsGroupingAndActivationSequence-DataItemSpecifications

Advantages

Disadvantages

cuboideum commented 3 years ago

Currently, I would opt for introducing new specification classes.

zarquon42b commented 3 years ago

How about the following: There is a generic ordering for elements in the Core ontology. If extensions want to refer to known classes but change the ordering they should do so by creating a copy of the ordering class but in their own namespace. E.g.

Bone_1 core_prefix:is_sorted 1
Bone_1 extension_prefix:is_sorted 5