Я играю (пока что, но целенаправленно) с GraphDB и SPARQL. Чего я сейчас пытаюсь добиться, так это запрашивать из внешнего источника (в данном случае DBPedia) и использовать локально загруженную онтологию для анализа результата. Для этого я импортировал в свой репозиторий GraphDB онтологию DBPedia в виде именованного графа только схему (без инструкций data).
Теперь я выдаю следующий запрос:
PREFIX dbp: <http://dbpedia.org/property/>
PREFIX dbo: <http://dbpedia.org/ontology/>
construct {
?city dbo:country ?country .
?city dbo:population ?apop .
}
WHERE {
SERVICE <https://dbpedia.org/sparql>
{
{
?city dbo:populationTotal | dbo:totalPopulation | dbo:population ?apop ;
a dbo:City ;
dbo:country ?country
.
FILTER(?apop > 1000000)
}
}
}
dbo:population
определяется как свойство в онтологии:
<owl:ObjectProperty rdf:about="http://dbpedia.org/ontology/population">
<rdf:type rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
<rdfs:label xml:lang="en">population</rdfs:label>
<rdfs:domain rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/>
<rdfs:range rdf:resource="http://dbpedia.org/ontology/Population"/>
<prov:wasDerivedFrom rdf:resource="http://mappings.dbpedia.org/index.php/OntologyProperty:population"/>
</owl:ObjectProperty>
Табличное представление содержит эти свойства. Тем не менее, когда я пытаюсь визуализировать результат, он говорит мне, что у городов нет собственности:
Я даже пытался добавить dbo:population a rdf:Property
, чтобы это утверждение появилось на графике, но не более того. Следуя совету из здесь, я построил объединение графика dbo
и моего результата:
PREFIX dbp: <http://dbpedia.org/property/>
PREFIX dbo: <http://dbpedia.org/ontology/>
construct {
?city dbo:country ?country .
?city dbo:population ?apop .
?o ?p ?s.
}
FROM <http://dbpedia.org/ontology/owl>
WHERE {
{
?o ?p ?s
}
UNION {
SERVICE <https://dbpedia.org/sparql>
{
{
?city dbo:populationTotal | dbo:totalPopulation | dbo:population ?apop ;
a dbo:City ;
dbo:country ?country
FILTER(?apop > 1000000)
}
}
}
}
В результате получился большой график, который я не смог визуализировать, но табличное представление показывало все, начиная с онтологии DBPedia и удаленного результата.
Virtuoso обрабатывает схемы отдельно, их можно импортировать, но нет встроенного визуализатора. Мне не удалось найти способ указать визуализатору GraphDB использовать определенную схему для графика. Репозиторий имеет набор правил по умолчанию RDFS-Plus (оптимизированный), а ранее добавленное вручную объявление свойства было правильно определено как owl:ObjectProperty
.
Я немного смущен. Как я могу правильно «объединить» объединенный набор результатов с локальной онтологией?
{ VALUES ?p {dbo:populationTotal dbo:totalPopulation dbo:population dbo:country} ?p ?o ?s . } UNION {
- вы также должны попробоватьconstruct { ?city dbo:country ?country . ?city dbo:populationTotal ?apop .
, потому чтоdbo:population
является свойством объекта в DBpedia - person UninformedUser   schedule 22.10.2019dbo:populationTotal
было моим первым предположением, но дает тот же результат. Запрос сVALUES
добавил к графу дополнительные операторы из онтологии, но не свойства к городам. - person ZorgoZ   schedule 22.10.2019SERVICE
. Все эти вещи, такие как цвет узла, метка, поиск, поиск свойств, основаны на запросах, которые вы можете настроить в представлении Visual Graph, где вы можете настроить пользовательскую конфигурацию. НО: все эти запросы не работают с результатом запросаCONSTRUCT
. Это означает, например, что на дополнительной вкладке Node вы должны настроить запрос таким образом, чтобы он выполнял поиск по ключевому словуSERVICE
. - person UninformedUser   schedule 23.10.2019