0

我正在寻找对任何数据集运行 SPARQL 查询。我们不知道数据集中命名图的名称。

当您知道命名图的名称时,这些是大量文档和从命名图中选择的示例。有显示列出命名图的示例。

我们正在从 Java 运行 Jena,因此可以运行 2 个查询,第一个获取命名图,我们将它们注入第二个。

但是,当您不知道它们的名称时,您肯定可以编写一个从所有命名图读取的单个查询吗?

注意:我们希望避免使用默认图形,因为它们的行为似乎依赖于实现。

4

1 回答 1

0

例子:

{ 
  ?s foaf:name ?name ;
     vCard:nickname ?nickName .
}

如果您希望模式在一个图表中匹配并希望尝试每个图表,请使用 GRAPH ?g 表格。

GRAPH ?g
   { ?s foaf:name ?name ;
        vc:nickname ?nickName .
   }

如果您想进行查询,其中模式在命名图之间匹配,例如foaf:name在一个图和vCard:nickname另一个相同的主题中,然后设置联合默认图tdb2:unionDefaultGraph true,那么查询看到的默认图是联合(实际上,RDF合并 - 没有重复)所有命名的图。使用最初给出的模式。

Fuseki 配置文件提取:

:dataset_tdb2 rdf:type  tdb2:DatasetTDB2 ;
    tdb2:location "DB2" ;
    ## Optional - with union default for query and update WHERE matching.
    tdb2:unionDefaultGraph true ;
    .

在代码中,不是 Fuseki,应用程序可以使用Dataset.getUnionModel().

于 2022-02-18T12:43:55.333 回答