Sparql 如何得到考虑本体的构造结果

Sparql 如何得到考虑本体的构造结果,sparql,rdf,owl,dbpedia,graphdb,Sparql,Rdf,Owl,Dbpedia,Graphdb,我正在玩GraphDB和SPARQL(现在,但有目的)。我现在试图实现的是从外部源(本例中为DBPedia)进行查询,并使用本地加载的本体来分析结果。为此,我已将DBPedia本体导入到GraphDB存储库中的命名图中(无数据语句) 现在,我提出以下问题: PREFIX dbp: <http://dbpedia.org/property/> PREFIX dbo: <http://dbpedia.org/ontology/> construct { ?city

我正在玩GraphDB和SPARQL(现在,但有目的)。我现在试图实现的是从外部源(本例中为DBPedia)进行查询,并使用本地加载的本体来分析结果。为此,我已将DBPedia本体导入到GraphDB存储库中的命名图中(无数据语句)

现在,我提出以下问题:

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)
        }
    }
}
表视图包含这些属性。然而,当我试图想象结果时,它告诉我城市没有任何财产:

我甚至试图添加一个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)            
            }
        }   
    }
}
前缀dbp:
前缀dbo:
构造{
城市dbo:国家?国家。
?城市dbo:人口?apop。
o?p?s。
}
从…起
在哪里{
{
o?p?s
}
联合{
服务
{
{
?城市dbo:人口总数| dbo:总人口| dbo:人口?apop;
dbo:城市;
国家?国家
过滤器(?apop>1000000)
}
}   
}
}
这导致了一个我无法可视化的大型图,但表视图显示了从dbpediaontology到远程结果的所有内容

Virtuoso单独处理模式,可以导入模式,但没有内置的可视化工具。我找不到一种方法来告诉GraphDB的可视化工具对图形使用特定的模式。存储库具有默认规则集RDFS Plus(已优化),之前手动添加的属性声明被正确推断为
owl:ObjectProperty


我有点困惑。如何将联邦结果集与本地本体正确地“组合”?

您是否尝试了
{VALUES?p{dbo:populationTotal dbo:totalPopulation dbo:population dbo:country}?p?o?s.}联合{
-您还应该尝试
构造{?城市dbo:country?country。?城市dbo:populationTotal?apop.
因为
dbo:population
是DBpedia@AKSW
dbo:populationTotal
是我的第一个猜测,但给出了相同的结果。带有
值的查询在图中添加了本体的额外语句,但在图中没有属性ities.Hm我无法复制这个。我在尝试了您的第一个查询-它可以工作,并通过链接数据原理获取查询中甚至不包含的属性。您可以在Factforge SPARQL端点上尝试它。这是您所期望的,对吗?@AKSW是的,有点。但是这个工具已经从DBPedia预加载了所有数据。我的GraphDB实例显示了属性If从本地数据查询。我明白了。我在本地尝试过,发现问题出在
服务
请求上。所有这些内容,如节点颜色、标签、检索、属性检索,都基于您可以在“可视图形”中配置的查询视图,您可以在其中设置自定义配置。但是:所有这些查询都不适用于
构造
查询的结果。这意味着,例如,在“节点额外”选项卡中,您必须配置查询,以便它通过
服务
关键字进行查找。
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)            
            }
        }   
    }
}