Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lots of duplicated SWRL rules #35

Closed
NicolasRouquette opened this issue Nov 1, 2017 · 2 comments
Closed

Lots of duplicated SWRL rules #35

NicolasRouquette opened this issue Nov 1, 2017 · 2 comments

Comments

@NicolasRouquette
Copy link
Member

The merge of the IMCEIS-1573 branch effectively duplicates the SWRL rules corresponding to the reification pattern.

For example:

    <rdf:Description>
        <rdf:type rdf:resource="&swrl;Imp"/>
        <rdfs:label rdf:datatype="&xsd;string">contains reification rule</rdfs:label>
        <swrl:body>
            <rdf:Description>
                <rdf:type rdf:resource="&swrl;AtomList"/>
                <rdf:first>
                    <rdf:Description>
                        <rdf:type rdf:resource="&swrl;IndividualPropertyAtom"/>
                        <swrl:propertyPredicate rdf:resource="&base;hasContainsSource"/>
                        <swrl:argument1 rdf:resource="urn:swrl#r"/>
                        <swrl:argument2 rdf:resource="urn:swrl#s"/>
                    </rdf:Description>
                </rdf:first>
                <rdf:rest>
                    <rdf:Description>
                        <rdf:type rdf:resource="&swrl;AtomList"/>
                        <rdf:rest rdf:resource="&rdf;nil"/>
                        <rdf:first>
                            <rdf:Description>
                                <rdf:type rdf:resource="&swrl;IndividualPropertyAtom"/>
                                <swrl:propertyPredicate rdf:resource="&base;hasContainsTarget"/>
                                <swrl:argument1 rdf:resource="urn:swrl#r"/>
                                <swrl:argument2 rdf:resource="urn:swrl#t"/>
                            </rdf:Description>
                        </rdf:first>
                    </rdf:Description>
                </rdf:rest>
            </rdf:Description>
        </swrl:body>
        <swrl:head>
            <rdf:Description>
                <rdf:type rdf:resource="&swrl;AtomList"/>
                <rdf:rest rdf:resource="&rdf;nil"/>
                <rdf:first>
                    <rdf:Description>
                        <rdf:type rdf:resource="&swrl;IndividualPropertyAtom"/>
                        <swrl:propertyPredicate rdf:resource="&base;contains"/>
                        <swrl:argument1 rdf:resource="urn:swrl#s"/>
                        <swrl:argument2 rdf:resource="urn:swrl#t"/>
                    </rdf:Description>
                </rdf:first>
            </rdf:Description>
        </swrl:head>
    </rdf:Description>

    <rdf:Description>
        <rdf:type rdf:resource="&swrl;Imp"/>
        <swrl:head>
            <rdf:Description>
                <rdf:type rdf:resource="&swrl;AtomList"/>
                <rdf:rest rdf:resource="&rdf;nil"/>
                <rdf:first>
                    <rdf:Description>
                        <rdf:type rdf:resource="&swrl;IndividualPropertyAtom"/>
                        <swrl:propertyPredicate rdf:resource="&base;contains"/>
                        <swrl:argument1 rdf:resource="urn:swrl#s"/>
                        <swrl:argument2 rdf:resource="urn:swrl#t"/>
                    </rdf:Description>
                </rdf:first>
            </rdf:Description>
        </swrl:head>
        <swrl:body>
            <rdf:Description>
                <rdf:type rdf:resource="&swrl;AtomList"/>
                <rdf:first>
                    <rdf:Description>
                        <rdf:type rdf:resource="&swrl;IndividualPropertyAtom"/>
                        <swrl:propertyPredicate rdf:resource="&base;hasContainsSource"/>
                        <swrl:argument1 rdf:resource="urn:swrl#r"/>
                        <swrl:argument2 rdf:resource="urn:swrl#s"/>
                    </rdf:Description>
                </rdf:first>
                <rdf:rest>
                    <rdf:Description>
                        <rdf:type rdf:resource="&swrl;AtomList"/>
                        <rdf:rest rdf:resource="&rdf;nil"/>
                        <rdf:first>
                            <rdf:Description>
                                <rdf:type rdf:resource="&swrl;IndividualPropertyAtom"/>
                                <swrl:propertyPredicate rdf:resource="&base;hasContainsTarget"/>
                                <swrl:argument1 rdf:resource="urn:swrl#r"/>
                                <swrl:argument2 rdf:resource="urn:swrl#t"/>
                            </rdf:Description>
                        </rdf:first>
                    </rdf:Description>
                </rdf:rest>
            </rdf:Description>
        </swrl:body>
    </rdf:Description>

The difference is that the first rule has a label; the second does not.

For OML, a SWRL rule corresponding to the reified object property pattern is not used in OML per se. However, this label could be useful for explanation purposes with OWL2-DL + SWRL reasoners.

Recommend keeping the labelled rule and delete the unlabeled rule.

@NicolasRouquette
Copy link
Member Author

There is more than duplication of the SWRL rules.
It seems that there are two different representations of the reification pattern.

Here is an example from
https://raw.githubusercontent.com/JPL-IMCE/gov.nasa.jpl.imce.ontologies.public/17561bec3d39ee43bec5b34d48717f14867ecbf4/ontologies/imce.jpl.nasa.gov/www.omg.org/spec/UML/20110701/UML.owl

This rule was introduced as part of the IMCEIS-1573 changes:

    <rdf:Description>
        <rdf:type rdf:resource="&swrl;Imp"/>
        <rdfs:label rdf:datatype="&xsd;string">a_defaultValue_owningParameter reification rule</rdfs:label>
        <swrl:body>
            <rdf:Description>
                <rdf:type rdf:resource="&swrl;AtomList"/>
                <rdf:first>
                    <rdf:Description>
                        <rdf:type rdf:resource="&swrl;IndividualPropertyAtom"/>
                        <swrl:propertyPredicate rdf:resource="&UML;hasA_defaultValue_owningParameterSource"/>
                        <swrl:argument1 rdf:resource="urn:swrl#r"/>
                        <swrl:argument2 rdf:resource="urn:swrl#s"/>
                    </rdf:Description>
                </rdf:first>
                <rdf:rest>
                    <rdf:Description>
                        <rdf:type rdf:resource="&swrl;AtomList"/>
                        <rdf:rest rdf:resource="&rdf;nil"/>
                        <rdf:first>
                            <rdf:Description>
                                <rdf:type rdf:resource="&swrl;IndividualPropertyAtom"/>
                                <swrl:propertyPredicate rdf:resource="&UML;hasA_defaultValue_owningParameterTarget"/>
                                <swrl:argument1 rdf:resource="urn:swrl#r"/>
                                <swrl:argument2 rdf:resource="urn:swrl#t"/>
                            </rdf:Description>
                        </rdf:first>
                    </rdf:Description>
                </rdf:rest>
            </rdf:Description>
        </swrl:body>
        <swrl:head>
            <rdf:Description>
                <rdf:type rdf:resource="&swrl;AtomList"/>
                <rdf:rest rdf:resource="&rdf;nil"/>
                <rdf:first>
                    <rdf:Description>
                        <rdf:type rdf:resource="&swrl;IndividualPropertyAtom"/>
                        <swrl:propertyPredicate rdf:resource="&UML;a_defaultValue_owningParameter"/>
                        <swrl:argument1 rdf:resource="urn:swrl#s"/>
                        <swrl:argument2 rdf:resource="urn:swrl#t"/>
                    </rdf:Description>
                </rdf:first>
            </rdf:Description>
        </swrl:head>
    </rdf:Description>

The following rule was in the original ontology as of version 1.4.0:

    <rdf:Description>
        <rdf:type rdf:resource="&swrl;Imp"/>
        <swrl:body>
            <rdf:Description>
                <rdf:type rdf:resource="&swrl;AtomList"/>
                <rdf:rest>
                    <rdf:Description>
                        <rdf:type rdf:resource="&swrl;AtomList"/>
                        <rdf:rest rdf:resource="&rdf;nil"/>
                        <rdf:first>
                            <rdf:Description>
                                <rdf:type rdf:resource="&swrl;IndividualPropertyAtom"/>
                                <swrl:propertyPredicate rdf:resource="&UML;A_defaultValue_owningParameter.owningParameter"/>
                                <swrl:argument1 rdf:resource="urn:swrl#r"/>
                                <swrl:argument2 rdf:resource="urn:swrl#s"/>
                            </rdf:Description>
                        </rdf:first>
                    </rdf:Description>
                </rdf:rest>
                <rdf:first>
                    <rdf:Description>
                        <rdf:type rdf:resource="&swrl;IndividualPropertyAtom"/>
                        <swrl:propertyPredicate rdf:resource="&UML;A_defaultValue_owningParameter.defaultValue"/>
                        <swrl:argument1 rdf:resource="urn:swrl#r"/>
                        <swrl:argument2 rdf:resource="urn:swrl#t"/>
                    </rdf:Description>
                </rdf:first>
            </rdf:Description>
        </swrl:body>
        <swrl:head>
            <rdf:Description>
                <rdf:type rdf:resource="&swrl;AtomList"/>
                <rdf:rest rdf:resource="&rdf;nil"/>
                <rdf:first>
                    <rdf:Description>
                        <rdf:type rdf:resource="&swrl;IndividualPropertyAtom"/>
                        <swrl:propertyPredicate rdf:resource="&UML;a_defaultValue_owningParameter"/>
                        <swrl:argument1 rdf:resource="urn:swrl#s"/>
                        <swrl:argument2 rdf:resource="urn:swrl#t"/>
                    </rdf:Description>
                </rdf:first>
            </rdf:Description>
        </swrl:head>
    </rdf:Description>

@NicolasRouquette
Copy link
Member Author

The resolution of JPL-IMCE/gov.nasa.jpl.omf.scala.binding.owlapi#39 tackles this problem adequately.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant