SPARQL hakkında bir sorum var.SPARQL: Sınıf hiyerarşisinin derinliği bilinmediğinde bir ontolojiden nasıl delinir?
Animals (is a superclass with object property <hasColor>)
------ Mammals (subclass of Animals)
------------- Dog (subclass of Mammals)
---------------- dog1 (a instance with property <hasColor>="white")
---------------- dog2 (a instance with property <hasColor>="red" )
------ Bird (subclass of Animals)
o "Hayvanlar tüm örnekleri" ya da " 'beyaz' olan tüm hayvanlar," SPARQL ile bulmak mümkün mü: Ben hayvanların bir ontolojisi var? Ve geriye doğru: Bir örnek (dog1) Hayvanlar'a aitse nasıl bilebilirim?
NOT: Sınıf hiyerarşisi derinliği ve genişliği önceden bilinmemektedir.
Ayrıca aşağıda sorguSELECT ?x WHERE {?x rdfs:subClassOf :Animals . ?x :hasСolor "white"}
çalışmayacak Ve gelecek sorgu ('beyaz' olan tüm Hayvanlar, bulmak) sınıf hiyerarşisinin derinliği bilinir durumunda çalışır. (Yani hiyerarşi biliniyorsa, ben hedefe ulaşmak için aşağıya hiyerarşi) üstünden belirtilen adımları (yapabilir. Bu durumda 2 adım
SELECT ?z WHERE {
?x rdfs:subClassOf :Animals .
?y rdfs:subClassOf ?x .
?z rdf:type ?y .
?z :hasColor "white"
}
aynı sonraki örneğin doğrudur - "Hayvanlar tüm örneklerini bulmak"
SELECT ?z WHERE {
?x rdfs:subClassOf :Animals .
?y rdfs:subClassOf ?x .
?z rdf:type ?y .
}
hierarchie bilinmiyorsa, ne yapmalı?
sorgu SDB ile işlenecektir(olan bir bileşeni Jena). select ?x where {?x rdfs:subClassOf :Animals . ?x :hasСolor "white"})
UPD:
Ben böyle bir şey istiyorum. şöyle görünebilir " 'beyaz' olan tüm Hayvanlar (örneğini) bulmak" için Çözüm:?
SEÇ y {x RDFS: subclassof *: Hayvanlar. ? y rdf: type? x. ? Y :
Teşekkür! Sorguyu Protege ile test ettim. SELECT? X WHERE {? X rdfs: subClassOf *: Hayvanlar} iyi çalışıyor. Ama SELECT? X WHERE {? X rdfs: subClassOf *: Hayvanlar. ? x: hasСolor "beyaz"} hiçbir eşleşme bulamadı – ERG
tuhaf sorgu SELECT? x? Y WHERE {? x rdfs: subClassOf *: Hayvanlar. ? y rdf: type? x.}} çok iyi çalışır ve tüm örnekleri döndürür, ancak ekliyorsa (? x: hasСolor "white"), – ERG
@ERG ile eşleşmiyorsa ne bulur ve ne hakkında? SELECT? x WHERE {? x rdfs : subclassof *: Hayvanlar y rdf:.? tipi x y:?.?. hasColor "beyaz"} ' –