es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo consultar el tipo más específico de una propiedad

Tengo una jerarquía de objectProperty. En un cierto nivel de esta, hay una sub-propiedad X, la cual tiene sus propias sub-propiedades, digamos X1 y X2, un nivel por debajo. Las afirmaciones de propiedad reales se hacen utilizando X1 y X2. Sin embargo, estoy haciendo una consulta con select * {?s :X ?o} para obtenerlos todos. Lo que también quisiera obtener es la IRI del descendiente concreto de X que se utilizó en la afirmación.

¿Es esto posible y cómo se hace?

[Actualización 01.07]
Solo una demostración:

@prefix : http://test/demo# .
@prefix owl: http://www.w3.org/2002/07/owl# .
@prefix rdfs: http://www.w3.org/2000/01/rdf-schema# .

😡 {
:X a owl:ObjectProperty.
:X1 a owl:ObjectProperty ; rdfs:subPropertyOf :X .
:X11 a owl:ObjectProperty; rdfs:subPropertyOf :X1 .
:X12 a owl:ObjectProperty; rdfs:subPropertyOf :X1 .

:o1 a owl:Thing.
:o2 a owl:Thing.

:o1 :X11 owl:Thing.
:o2 :X12 owl:Thing.

}

Consultas:

1)

prefix : http://test/demo#
prefix rdfs: http://www.w3.org/2000/01/rdf-schema#
SELECT * FROM 😡 {?s :X ?o}

Con el razonamiento encendido devuelve los hechos, pero no hay ninguna pista acerca de las afirmaciones. Con el razonamiento apagado, no devuelve nada, como se esperaba. @ValerioCocchi esto no está bien para mí.

2)

prefix : http://test/demo#
prefix rdfs: http://www.w3.org/2000/01/rdf-schema#
select * FROM 😡 {?p rdfs:subPropertyOf* :X . ?s ?p ?o}

Con el razonamiento apagado, devuelve la información necesaria. @UninformedUser, ¡gracias!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible utilizando una consulta SPARQL que incluya una expresión de ruta de propiedades que coincida con cualquier subpropiedad de X. Esto devolverá todas las afirmaciones hechas usando X o cualquiera de sus subpropiedades, incluyendo X1 y X2. Para obtener también la IRI de la propiedad descendiente concreta que se utilizó en la afirmación, puedes incluir un segundo patrón triple que coincida con cualquier subpropiedad de X y asociarla a una variable, lo cual te dará el nombre de la subpropiedad que se usó realmente. Aquí tienes un ejemplo de consulta:

    PREFIX : <http: example.org/ontology#="">
    SELECT ?s ?o ?p 
    WHERE {
      ?s :X|:X/* ?o .
      ?s ?p ?o .
      ?p rdfs:subPropertyOf* :X .
    }
    

    En esta consulta, :X|:X/* coincide con cualquier propiedad que sea X o una subpropiedad de X, y ?p rdfs:subPropertyOf* :X coincide con cualquier subpropiedad de X y la asocia a la variable ?p. Los resultados incluirán ?s y ?o para cada afirmación hecha usando X o sus subpropiedades, así como ?p, que te dará el nombre de la propiedad descendiente concreta que se utilizó en la afirmación.

Comments are closed.