0

I made a simple ontology with Protege 4.3. It has three object properties (padre_de, hijo_de, hermano_de) and one annotation property named ‘tiene_sinonimo’. This is my ontology:

        <?xml version="1.0"?>


        <!DOCTYPE rdf:RDF [
            <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
            <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
            <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
            <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
            <!ENTITY ontoPizza "http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#" >
        ]>

        <rdf:RDF xmlns="http://www.w3.org/2002/07/owl#"
             xml:base="http://www.w3.org/2002/07/owl"
             xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
             xmlns:ontoPizza="http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#"
             xmlns:owl="http://www.w3.org/2002/07/owl#"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
            <Ontology rdf:about="http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza"/>

            <!-- 
            ///////////////////////////////////////////////////////////////////////////////////////
            //
            // Annotation properties
            //
            ///////////////////////////////////////////////////////////////////////////////////////
             -->



            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#tiene_sinonimo -->
            <AnnotationProperty rdf:about="&ontoPizza;tiene_sinonimo"/>

            <!-- 
            ///////////////////////////////////////////////////////////////////////////////////////
            //
            // Object Properties
            //
            ///////////////////////////////////////////////////////////////////////////////////////
             -->




            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#hermano_de -->

            <ObjectProperty rdf:about="&ontoPizza;hermano_de">
                <rdf:type rdf:resource="&owl;TransitiveProperty"/>
            </ObjectProperty>



            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#hijo_de -->

            <ObjectProperty rdf:about="&ontoPizza;hijo_de">
                <rdf:type rdf:resource="&owl;TransitiveProperty"/>
                <rdfs:subPropertyOf rdf:resource="&owl;topObjectProperty"/>
            </ObjectProperty>



            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#padre_de -->

            <ObjectProperty rdf:about="&ontoPizza;padre_de">
                <rdf:type rdf:resource="&owl;TransitiveProperty"/>
                <inverseOf rdf:resource="&ontoPizza;hijo_de"/>
            </ObjectProperty>



            <!-- 
            ///////////////////////////////////////////////////////////////////////////////////////
            //
            // Classes
            //
            ///////////////////////////////////////////////////////////////////////////////////////
             -->

            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#azul -->
            <Class rdf:about="&ontoPizza;azul">
                <rdfs:subClassOf rdf:resource="&ontoPizza;pizza_francesa"/>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hijo_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;pizza_francesa"/>
                    </Restriction>
                </rdfs:subClassOf>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hermano_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;roja"/>
                    </Restriction>
                </rdfs:subClassOf>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hermano_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;verde"/>
                    </Restriction>
                </rdfs:subClassOf>
                <ontoPizza:tiene_sinonimo xml:lang="es">sinonimo_de_azul</ontoPizza:tiene_sinonimo>
            </Class>

            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#con_mayonesa -->
            <Class rdf:about="&ontoPizza;con_mayonesa">
                <rdfs:subClassOf rdf:resource="&ontoPizza;pizza_americana"/>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hermano_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;con_queso"/>
                    </Restriction>
                </rdfs:subClassOf>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hermano_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;con_pimientos"/>
                    </Restriction>
                </rdfs:subClassOf>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hijo_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;pizza_americana"/>
                    </Restriction>
                </rdfs:subClassOf>
                <ontoPizza:tiene_sinonimo xml:lang="es">sinonimo_de_con_mayonesa</ontoPizza:tiene_sinonimo>
            </Class>



            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#con_pimientos -->
            <Class rdf:about="&ontoPizza;con_pimientos">
                <rdfs:subClassOf rdf:resource="&ontoPizza;pizza_americana"/>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hijo_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;pizza_americana"/>
                    </Restriction>
                </rdfs:subClassOf>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hermano_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;con_mayonesa"/>
                    </Restriction>
                </rdfs:subClassOf>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hermano_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;con_queso"/>
                    </Restriction>
                </rdfs:subClassOf>
                <ontoPizza:tiene_sinonimo xml:lang="es">sinonimo_de_con_pimientos</ontoPizza:tiene_sinonimo>
            </Class>



            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#con_queso -->
            <Class rdf:about="&ontoPizza;con_queso">
                <rdfs:subClassOf rdf:resource="&ontoPizza;pizza_americana"/>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hermano_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;con_pimientos"/>
                    </Restriction>
                </rdfs:subClassOf>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hijo_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;pizza_americana"/>
                    </Restriction>
                </rdfs:subClassOf>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hermano_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;con_mayonesa"/>
                    </Restriction>
                </rdfs:subClassOf>
                <ontoPizza:tiene_sinonimo xml:lang="es">sinonimo_de_con_queso</ontoPizza:tiene_sinonimo>
            </Class>



            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#pizza -->
            <Class rdf:about="&ontoPizza;pizza">
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;padre_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;pizza_francesa"/>
                    </Restriction>
                </rdfs:subClassOf>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;padre_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;pizza_americana"/>
                    </Restriction>
                </rdfs:subClassOf>
                <ontoPizza:tiene_sinonimo xml:lang="es">sinonimo_de_pizza</ontoPizza:tiene_sinonimo>
            </Class>



            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#pizza_americana -->
            <Class rdf:about="&ontoPizza;pizza_americana">
                <rdfs:subClassOf rdf:resource="&ontoPizza;pizza"/>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;padre_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;con_mayonesa"/>
                    </Restriction>
                </rdfs:subClassOf>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hijo_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;pizza"/>
                    </Restriction>
                </rdfs:subClassOf>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;padre_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;con_pimientos"/>
                    </Restriction>
                </rdfs:subClassOf>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;padre_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;con_queso"/>
                    </Restriction>
                </rdfs:subClassOf>
                <disjointWith rdf:resource="&ontoPizza;pizza_francesa"/>
                <ontoPizza:tiene_sinonimo xml:lang="es">sinonimo_de_pizza_americana</ontoPizza:tiene_sinonimo>
            </Class>



            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#pizza_francesa -->
            <Class rdf:about="&ontoPizza;pizza_francesa">
                <rdfs:subClassOf rdf:resource="&ontoPizza;pizza"/>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hijo_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;pizza"/>
                    </Restriction>
                </rdfs:subClassOf>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;padre_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;verde"/>
                    </Restriction>
                </rdfs:subClassOf>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;padre_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;roja"/>
                    </Restriction>
                </rdfs:subClassOf>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hermano_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;pizza_americana"/>
                    </Restriction>
                </rdfs:subClassOf>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;padre_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;azul"/>
                    </Restriction>
                </rdfs:subClassOf>
                <ontoPizza:tiene_sinonimo xml:lang="es">sinonimo_de_pizza_francesa</ontoPizza:tiene_sinonimo>
            </Class>



            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#roja -->
            <Class rdf:about="&ontoPizza;roja">
                <rdfs:subClassOf rdf:resource="&ontoPizza;pizza_francesa"/>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hermano_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;azul"/>
                    </Restriction>
                </rdfs:subClassOf>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hermano_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;verde"/>
                    </Restriction>
                </rdfs:subClassOf>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hijo_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;pizza_francesa"/>
                    </Restriction>
                </rdfs:subClassOf>
                <ontoPizza:tiene_sinonimo xml:lang="es">sinonimo_de_roja</ontoPizza:tiene_sinonimo>
            </Class>



            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#verde -->
            <Class rdf:about="&ontoPizza;verde">
                <rdfs:subClassOf rdf:resource="&ontoPizza;pizza_francesa"/>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hijo_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;pizza_francesa"/>
                    </Restriction>
                </rdfs:subClassOf>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hermano_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;azul"/>
                    </Restriction>
                </rdfs:subClassOf>
                <rdfs:subClassOf>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hermano_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;roja"/>
                    </Restriction>
                </rdfs:subClassOf>
                <ontoPizza:tiene_sinonimo xml:lang="es">sinonimo_de_verde</ontoPizza:tiene_sinonimo>
            </Class>



            <!-- 
            ///////////////////////////////////////////////////////////////////////////////////////
            //
            // Individuals
            //
            ///////////////////////////////////////////////////////////////////////////////////////
             -->

            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#azul_1 -->

            <NamedIndividual rdf:about="&ontoPizza;azul_1">
                <rdf:type rdf:resource="&ontoPizza;azul"/>
                <rdf:type>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hijo_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;azul"/>
                    </Restriction>
                </rdf:type>
            </NamedIndividual>



            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#azul_2 -->

            <NamedIndividual rdf:about="&ontoPizza;azul_2">
                <rdf:type rdf:resource="&ontoPizza;azul"/>
                <rdf:type>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hijo_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;azul"/>
                    </Restriction>
                </rdf:type>
            </NamedIndividual>



            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#con_mayonesa_1 -->

            <NamedIndividual rdf:about="&ontoPizza;con_mayonesa_1">
                <rdf:type rdf:resource="&ontoPizza;con_mayonesa"/>
                <rdf:type>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hijo_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;con_mayonesa"/>
                    </Restriction>
                </rdf:type>
                <ontoPizza:tiene_sinonimo xml:lang="es">sinonimo_de_con_mayonesa_1</ontoPizza:tiene_sinonimo>
            </NamedIndividual>



            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#con_mayonesa_2 -->

            <NamedIndividual rdf:about="&ontoPizza;con_mayonesa_2">
                <rdf:type rdf:resource="&ontoPizza;con_mayonesa"/>
                <rdf:type>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hijo_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;con_mayonesa"/>
                    </Restriction>
                </rdf:type>
                <ontoPizza:tiene_sinonimo xml:lang="es">sinonimo_de_con_mayonesa_2</ontoPizza:tiene_sinonimo>
            </NamedIndividual>



            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#con_pimientos_1 -->

            <NamedIndividual rdf:about="&ontoPizza;con_pimientos_1">
                <rdf:type rdf:resource="&ontoPizza;con_pimientos"/>
                <rdf:type>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hijo_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;con_pimientos"/>
                    </Restriction>
                </rdf:type>
            </NamedIndividual>



            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#con_pimientos_2 -->

            <NamedIndividual rdf:about="&ontoPizza;con_pimientos_2">
                <rdf:type rdf:resource="&ontoPizza;con_pimientos"/>
                <rdf:type>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hijo_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;con_pimientos"/>
                    </Restriction>
                </rdf:type>
            </NamedIndividual>



            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#con_queso_1 -->

            <NamedIndividual rdf:about="&ontoPizza;con_queso_1">
                <rdf:type rdf:resource="&ontoPizza;con_queso"/>
                <rdf:type>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hijo_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;con_queso"/>
                    </Restriction>
                </rdf:type>
            </NamedIndividual>



            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#con_queso_2 -->

            <NamedIndividual rdf:about="&ontoPizza;con_queso_2">
                <rdf:type rdf:resource="&ontoPizza;con_queso"/>
            </NamedIndividual>



            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#roja_1 -->

            <NamedIndividual rdf:about="&ontoPizza;roja_1">
                <rdf:type rdf:resource="&ontoPizza;roja"/>
                <rdf:type>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hijo_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;roja"/>
                    </Restriction>
                </rdf:type>
            </NamedIndividual>



            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#roja_2 -->

            <NamedIndividual rdf:about="&ontoPizza;roja_2">
                <rdf:type rdf:resource="&ontoPizza;roja"/>
                <rdf:type>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hijo_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;roja"/>
                    </Restriction>
                </rdf:type>
            </NamedIndividual>



            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#verde_1 -->

            <NamedIndividual rdf:about="&ontoPizza;verde_1">
                <rdf:type rdf:resource="&ontoPizza;verde"/>
                <rdf:type>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hijo_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;verde"/>
                    </Restriction>
                </rdf:type>
            </NamedIndividual>



            <!-- http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#verde_2 -->

            <NamedIndividual rdf:about="&ontoPizza;verde_2">
                <rdf:type rdf:resource="&ontoPizza;verde"/>
                <rdf:type>
                    <Restriction>
                        <onProperty rdf:resource="&ontoPizza;hijo_de"/>
                        <someValuesFrom rdf:resource="&ontoPizza;verde"/>
                    </Restriction>
                </rdf:type>
            </NamedIndividual>
        </rdf:RDF>



        <!-- Generated by the OWL API (version 3.4.2) http://owlapi.sourceforge.net -->

I’m using the Protege SPARQL plugin to extract nodes related with an annotation property with the query:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX pi: <http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#>
select   ?sinonimo 
WHERE { 
    pi:pizza_americana pi:tiene_sinonimo ?sinonimo
                }

Obtaining:

------------------------------------
| sinonimo                         |
====================================
| "sinonimo_de_pizza_americana"@es |
------------------------------------

But I don’t know how to extract nodes related with the object property padre_de. I was reading about in: How to query Classes with Object Property in Sparql and wrote the following query:

Select ?hijo
Where {pi:pizza pi:padre_de ?hijo   }

If I run that query the result will be empty, but I need a result like:

-----------------------
| hijo                | 
=======================
| pizza_americana     |
| pizza_francesa      |
----------------------- 

Or ‘hijo_de’ of pizza_americana:

-----------------------
| hijo                | 
=======================
| con_mayonesa        |
| con_pimientos       |
| con_queso           |
-----------------------
Community
  • 1
  • 1

1 Answers1

0

To find all of the restrictions that a given property is involved in, you can query the RDF structures that make up OWL restrictions. For example:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX pi: <http://www.semanticweb.org/silvana/ontologies/2015/7/ontoPizza#>

SELECT DISTINCT ?hijo
WHERE {
   ?s a owl:Restriction .
   ?s owl:onProperty pi:padre_de .
   ?s owl:someValuesFrom | owl:allValuesFrom ?hijo .
}

And the same can be done with pi:hijo_de.

scotthenninger
  • 3,921
  • 1
  • 15
  • 24