Have you tried using the property function "list:member"?
Andy
On 13/01/2021 14:28, Mikael Pesonen wrote:
Related to this. This query returns in 70ms
SELECT ?class ?classLabel
WHERE
{
?scIntsec rdf:rest*/rdf:first id:308925008 .
?scTmp owl:intersectionOf ?scIntsec .
?class rdfs:subClassOf ?scTmp.
?class skos:prefLabel ?classLabel .
}
but this doesn't finish in 15 minutes (aborted then)
SELECT ?class ?classLabel
WHERE
{
VALUES ?superClass {id:308925008 }
?scIntsec rdf:rest*/rdf:first ?superClass .
?scTmp owl:intersectionOf ?scIntsec .
?class rdfs:subClassOf ?scTmp.
?class skos:prefLabel ?classLabel .
}
How come they are so different since they do the same thing?
On 15/12/2020 20.30, Andy Seaborne wrote:
On 15/12/2020 14:33, Mikael Pesonen wrote:
Hi,
I am querying subclasses of class (here id:365852007) which belongs
to RDF collection like this
id:1 rdf:type owl:Class ;
rdfs:subClassOf [ owl:intersectionOf ( ... id:365852007 ...
) ] ;
skos:prefLabel "something"@en .
id:2 rdf:type owl:Class ;
rdfs:subClassOf [ owl:intersectionOf ( ... id:365852007 ...
) ] ;
skos:prefLabel "something else"@en .
... denotes random number of other elements in the list.
SPARQL:
select * where
{
?subclass rdfs:subClassOf [ owl:intersectionOf
/rdf:rest*/rdf:first id:365852007 ] .
?subclass skos:prefLabel ?label .
Try breaking the pattern up:
?Z rdf:rest*/rdf:first id:365852007 .
?X owl:intersectionOf ?Z .
?subclass rdfs:subClassOf ?X .
?subclass rdfs:label ?label .
and use 3.17.0
}
This is slow (~10 secs) and we need to extend the query to subclasses
of the subclasses and so on.
Is there any faster way to get this done?
Thanks!