У меня есть этот запрос:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX curricula: <http://www.semanticweb.org/lsarni/ontologies/curricula#> SELECT ?topic (COUNT(?x) as ?number_of_courses) WHERE { ?topic curricula:taughtIn ?x . } GROUP BY ?topic ORDER BY desc(?number_of_courses)
Это возвращает:
Теперь я хочу получить ?topicс максимумом ?number_of_courses, в данном случае Engineering
?topic
?number_of_courses
Engineering
Мне удалось получить максимум ?number_of_courses с помощью этого запроса (после этого ответа ):
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX curricula: <http://www.semanticweb.org/lsarni/ontologies/curricula#> SELECT (MAX(?number_of_courses) AS ?maxc) WHERE{ { SELECT ?topic (COUNT(?x) as ?number_of_courses) WHERE { ?topic curricula:taughtIn ?x . } GROUP BY ?topic } }
Возвращает:
Но мне не удается получить ?topic.
Как я могу это исправить?
Я попробовал то, что понял из комментария AKSW:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX curricula: <http://www.semanticweb.org/lsarni/ontologies/curricula#> SELECT ?topic WHERE { ?topic curricula:taughtIn ?x . { SELECT (MAX(?number_of_courses) AS ?max) WHERE { { SELECT ?topic (COUNT(?x) as ?number_of_courses) WHERE { ?topic curricula:taughtIn ?x . } GROUP BY ?topic } } } } GROUP BY ?topic HAVING (COUNT(?x) = ?max)
Но ничего не возвращается.
Для этого минимального примера результат должен быть Topic_2, так как это taughtIn два курса.
Topic_2
taughtIn
@prefix : <http://www.semanticweb.org/lsarni/ontologies/curricula#> . @prefix owl: <http://www.w3.org/2002/07/owl#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix xml: <http://www.w3.org/XML/1998/namespace> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @base <http://www.semanticweb.org/lsarni/ontologies/curricula> . <http://www.semanticweb.org/lsarni/ontologies/curricula> rdf:type owl:Ontology . ################################################################# # Object Properties ################################################################# ### http://www.semanticweb.org/lsarni/ontologies/curricula#taughtIn :taughtIn rdf:type owl:ObjectProperty ; rdfs:subPropertyOf owl:topObjectProperty . ### http://www.w3.org/2002/07/owl#topObjectProperty owl:topObjectProperty rdfs:domain :Topic ; rdfs:range :Course . ################################################################# # Classes ################################################################# ### http://www.semanticweb.org/lsarni/ontologies/curricula#Course :Course rdf:type owl:Class ; owl:disjointWith :Topic . ### http://www.semanticweb.org/lsarni/ontologies/curricula#Topic :Topic rdf:type owl:Class . ################################################################# # Individuals ################################################################# ### http://www.semanticweb.org/lsarni/ontologies/curricula#Course_1 :Course_1 rdf:type owl:NamedIndividual , :Course . ### http://www.semanticweb.org/lsarni/ontologies/curricula#Course_2 :Course_2 rdf:type owl:NamedIndividual , :Course . ### http://www.semanticweb.org/lsarni/ontologies/curricula#Topic_1 :Topic_1 rdf:type owl:NamedIndividual , :Topic ; :taughtIn :Course_1 . ### http://www.semanticweb.org/lsarni/ontologies/curricula#Topic_2 :Topic_2 rdf:type owl:NamedIndividual , :Topic ; :taughtIn :Course_1 , :Course_2 . ### Generated by the OWL API (version 4.2.8.20170104-2310) https://github.com/owlcs/owlapi