This ontology has these classes and this number of triples. For completeness, here are the triples.
This query works as expected:
PREFIX pizza: <http://www.ncl.ac.uk/pizza#>
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
SELECT ?p
FROM <http://homepages.cs.ncl.ac.uk/phillip.lord/scratch/pizza.rdf>
WHERE {
?p rdfs:subClassOf pizza:PizzaTopping
}
as shown here.
However, this query does not produce the expected results:
PREFIX pizza: <http://www.ncl.ac.uk/pizza#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT DISTINCT *
FROM <http://homepages.cs.ncl.ac.uk/phillip.lord/scratch/pizza.rdf>
WHERE {
?Name ?Relation pizza:MushroomTopping .
?Relation owl:inverseOf pizza:isToppingOf .
OPTIONAL {
?Name2 ?Relation2 pizza:HamTopping .
?Relations2 owl:inverseOf pizza:isToppingOf .
}
FILTER(?Name2 = ?PizzaName)
}
A simplified version also fails:
PREFIX pizza: <http://www.ncl.ac.uk/pizza#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT *
FROM <http://homepages.cs.ncl.ac.uk/phillip.lord/scratch/pizza.rdf>
WHERE {
?Name ?Relation pizza:NonVegetarianPizza .
}
These desired queries probably share the same fault:
PREFIX pizza: <http://www.ncl.ac.uk/pizza#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT *
FROM <http://homepages.cs.ncl.ac.uk/phillip.lord/scratch/pizza.rdf>
WHERE { ?p rdf:type pizza:Pizza;
pizza:hasTopping ?t.
?t rdf:type pizza:TomatoTopping
}
and
PREFIX pizza: <http://www.ncl.ac.uk/pizza#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT *
FROM <http://homepages.cs.ncl.ac.uk/phillip.lord/scratch/pizza.rdf>
WHERE
{
?pizza rdfs:subClassof [
owl:onProperty pizza:hasTopping;
owl:someValuesFrom pizza:MushroomTopping ] .
}
and
PREFIX pizza: <http://www.ncl.ac.uk/pizza#>
PREFIX owl:<http://www.w3.org/2002/07/owl#>
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
SELECT *
FROM <http://homepages.cs.ncl.ac.uk/phillip.lord/scratch/pizza.rdf>
WHERE
{
?pizza rdfs:subClassOf [
owl:onProperty pizza:hasTopping;
owl:someValuesFrom pizza:MozzarellaTopping ] .
?pizza rdfs:subClassof [
owl:onProperty pizza:hasTopping;
owl:someValuesFrom pizza:PeperonSausageTopping ] .
?pizza rdfs:subClassof [
owl:onProperty pizza:hasTopping;
owl:someValuesFrom pizza:TomatoTopping ] .
}
What am I doing wrong?