Я хочу подсчитать количество пицц одного конкретного типа в SPARQL с онтологией пиццы, но это не удается - PullRequest
0 голосов
/ 18 июня 2020

Я новичок в SPARQL. Я использую онтологию пиццы и пытаюсь написать запрос SPARQL, чтобы получить количество пицц с определенной начинкой.

Если у меня есть этот запрос:

prefix pizza: <http://www.co-ode.org/ontologies/pizza/pizza.owl#>
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 ?pizza 
where {?pizza a owl:Class ;
                      rdfs:subClassOf ?restriction.
                     ?restriction owl:onProperty pizza:hasTopping ;
                            owl:someValuesFrom pizza:PeperoniSausageTopping
}

У меня будет следующий результат (с использованием Jena):

------------------------------------------------------------------
| pizza                                                          |
==================================================================
| <http://www.co-ode.org/ontologies/pizza/pizza.owl#FourSeasons> |
| <http://www.co-ode.org/ontologies/pizza/pizza.owl#American>    |
| <http://www.co-ode.org/ontologies/pizza/pizza.owl#AmericanHot> |
------------------------------------------------------------------

Теперь я хотел вернуть количество пицц для запрос (здесь 3), а не список пицц, поэтому я написал такой запрос:

prefix pizza: <http://www.co-ode.org/ontologies/pizza/pizza.owl#>
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 (sum(?pizza))
where {?pizza a owl:Class ;
                      rdfs:subClassOf ?restriction.
                     ?restriction owl:onProperty pizza:hasTopping ;
                            owl:someValuesFrom pizza:PeperoniSausageTopping
}

Но у меня есть исключение, запрос неверен, что я сделал не так? Исключение, которое у меня есть с Йеной:

org.apache.jena.query.QueryParseException: Encountered " ")" ") "" at line 5, column 20.
Was expecting one of:
    "not" ...
    "as" ...
    "in" ...
    <INTEGER_POSITIVE> ...
    <DECIMAL_POSITIVE> ...
    <DOUBLE_POSITIVE> ...
    <INTEGER_NEGATIVE> ...
    <DECIMAL_NEGATIVE> ...
    <DOUBLE_NEGATIVE> ...
    "=" ...
    "!=" ...
    ">" ...
    "<" ...
    "<=" ...
    ">=" ...
    "||" ...
    "&&" ...
    "+" ...
    "-" ...
    "*" ...
    "/" ...
...