¿Es posible averiguar si dos instancias son de la misma clase, mediante programación (usando la API como JENA)¿Es posible averiguar si dos instancias son de la misma clase RDF, programáticamente?
Respuesta
Fácil en SPARQL:
ASK { <instance1> a ?class . <instance2> a ?class . }
En API de Jena:
boolean shareClass = false;
for (Statement s: instance1.listProperties(RDF.type)) {
if (instance2.hasProperty(RDF.type, s.getObject()) {
shareClass = true;
break;
}
}
No es posible ry elegante.
+1, solo respuesta no fuera del tema o ahora – ysdx
Ahora que SPARQL 1.1 tiene rutas de acceso de propiedad, la consulta SPARQL se simplifica a 'ASK {? Class^a
comparar sus clases:
boolean same = obj1.getClass().equals(obj2.getClass());
+1: El '==' también se puede usar. –
El OP no era 100% claro al respecto, pero la pregunta más probable es acerca de las clases e instancias RDF/OWL, no la comparación de la clase Java. –
Suponiendo que está utilizando la API de ontología de Jena, es bastante sencillo. Tenga en cuenta que en RDF, una instancia determinada puede tener muchos tipos, por lo que su pregunta es realmente "¿cómo puedo probar si dos instancias tienen uno o más tipos en común?".
Lo haría de la siguiente manera. Asumen las dos instancias que desea probar son Individual
objetos (tenga en cuenta que usted puede hacer esto con OntResource
, o incluso Resource
con un ligero cambio en el código):
Individual i0 = ....;
Individual i1 = ....;
Lista de los rdf:type
valores para cada uno, y los convierten a conjuntos
Set<Resource> types0 = i0.listRDFTypes(false).toSet();
Set<Resource> types1 = i1.listRDFTypes(false).toSet();
tienen tipos en común si la intersección es no vacía:
types0.retainAll(types1);
if (!types0.isEmpty()) {
// at least one type in common
// types0 contains the common type resources
}
Eso es más agradable. Guava tiene 'Sets.intersection' que sería aún más legible. Typo: '... types1 = i1.listRDFTypes ...' – user205512
Gracias, error corregido –
Hola, todavía tengo algo de confusión. Espero que puedas aclarar eso. Como sugirió, obtengo los tipos y comparo su intersección. El problema es: para instancias de dos clases diferentes, 'listRDFTypes' todavía devuelve' [http://www.w3.org/2002/07/owl#Class] 'como un tipo. Como resultado, dos instancias que tomo son del mismo tipo. ¿Me estoy perdiendo de algo? – PCoder
lo tomo XX es una extensión de su publicación anterior así que
if (resource1.hasProperty(model.createProperty("http://www.w3.org/1999/02/22-rdf-syntax-ns#", "type"), model.createResource("http://typeUri")) && resource2.hasProperty(model.createProperty("http://www.w3.org/1999/02/22-rdf-syntax-ns#", "type"), model.createResource("http://typeUri"))) {
// both resources are the same type
}
- 1. atributo de clase de dos instancias de la misma clase
- 2. Diferencia entre dos instancias de la misma clase
- 3. En C++ compruebe si dos instancias de una clase base son de hecho de la misma subclase
- 4. ¿Cuál es la forma más fácil de averiguar si dos archivos son diferentes por programación?
- 5. ¿Es posible oscilar dos gemas ggplot de la misma manera?
- 6. Cómo agregar o quitar dos instancias de la misma clase/tipo
- 7. Son instancias independientes de Postgresql posible
- 8. Navegación/edición de instancias de RDF/OWL
- 9. ¿Es posible contar con dos columnas en la misma consulta
- 10. ¿Es posible tener dos contextos WebGL en la misma página?
- 11. ¿Es posible instalar varias instancias de la misma aplicación de servicio Delphi?
- 12. miembro privado accesible desde otras instancias de la misma clase
- 13. ¿Es posible averiguar si hay una conexión VNC activa?
- 14. ¿Es posible establecer MasterType programáticamente?
- 15. Android: ¿es posible iniciar varias instancias de una actividad en la misma tarea?
- 16. comprobando dos instancias de objeto para ver si son las mismas
- 17. ¿Cómo determinar programáticamente si la clase es una clase de caso o una clase simple?
- 18. ¿Es posible el uso de can-can con clase dos
- 19. dos archivos CSS que definen misma clase
- 20. Python: averiguar la clase "Cónyuge"?
- 21. Averiguar si una propiedad es declarada virtual
- 22. ¿Es posible vincular diferentes interfaces a la misma instancia de una clase que las implementa?
- 23. Averiguar si el tipo es instanciable
- 24. ¿Cómo saber si dos palabras tienen la misma base?
- 25. ¿es posible la creación de instancias de plantilla explícita recursiva?
- 26. La implementación de la misma interfaz en diferentes instancias genéricas
- 27. ¿Cómo debería estructurar varias instancias de la misma subclase de Ember.Application en la misma página?
- 28. Inserta un nuevo DIV entre dos DIV que tienen la misma clase y son hermanos inmediatos
- 29. es posible tener múltiples instancias de variables estáticas
- 30. Servicio de Windows: ¿varias instancias de la misma clase de servicio?
¿Puede utilizar métodos puros de Java? – Jivings
¿Por qué Jena? Puede obtener fácilmente la '.class' de los dos objetos y compararlos. –
No creo que la pregunta se refiera a las instancias y clases de Java, sino a las instancias y clases de RDF/OWL. – user205512