Именованные графы v Поведение графов по умолчанию в Apache Jena Fuseki

У нас работает Apache Jena Fuseki.

Если мы загружаем graphA и graphB

SELECT (COUNT(*) as ?count) 
FROM <graphA> 
FROM <graphB> 
WHERE { ?s ?p ?o . }

дает 100

Если мы загружаем тройки в A и B в Default

SELECT (COUNT(*) as ?count) 
WHERE { ?s ?p ?o . }

дает 200

Кажется, в графе FROM нет никакого вывода между graphA и graphB?

Как мы это исправим?

Нашли рассуждения с Fuseki, TDB и именованными графами? но не понимаю, если это та же проблема.

Пример данных: График A:

Mdworking:Measure
  a       owl:Class ;
  mdmm:elementName "Measure" .

График Б:

Mddemobank:Account_Balance
  a       owl:Class ;
  rdfs:subClassOf Mdworking:Measure ;
  mdmm:elementName "Account_Balance" .

Mddemobank:Sub_Account_Balance
  a       owl:Class ;
  rdfs:subClassOf Mddemobank:Account_Balance ;
  mdmm:elementName "Sub_Account_Balance" .

Запрос:

SELECT ?subject ?predicate ?object
FROM <A>
FROM <B>    
WHERE {
  ?subject ?predicate ?object
}

не дает предполагаемый Mddemobank:Sub_Account_Balance subClassOf Mdworking:Measure

Пробовал запрос

SELECT *
{
    { ?s ?p ?o } UNION { GRAPH ?g { ?s ?p ?o } }  
}

который возвращает тройки из A, B и значения по умолчанию, но не показывает выведенные тройки.

Среда:

* Tested version 2.6.0 on Ubuntu
* Tested version 3.4.0. on Windows 10
* Loaded the test files using the browser 

Вот файл ассемблера

@prefix :      <http://base/#> .
@prefix tdb:   <http://jena.hpl.hp.com/2008/tdb#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ja:    <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix fuseki: <http://jena.apache.org/fuseki#> .

@prefix :      <http://base/#> .
@prefix tdb:   <http://jena.hpl.hp.com/2008/tdb#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ja:    <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix fuseki: <http://jena.apache.org/fuseki#> .


# THE SERVICE
<service1>        a                        fuseki:Service ;
        fuseki:dataset                    <#dataset> ;
        fuseki:name                       "xxx" ;
        fuseki:serviceQuery               "query" , "sparql" ;
        fuseki:serviceReadGraphStore      "get" ;
        fuseki:serviceReadWriteGraphStore "data" ;
        fuseki:serviceUpdate              "update" ;
        fuseki:serviceUpload              "upload" .

# DATASET for the service
<#dataset>         rdf:type ja:RDFDataset ;
    rdfs:label "xxx" ;
    ja:defaultGraph <#model_inf> 
     .

# MODEL for dataset
<#model_inf> a ja:InfModel ;
     ja:baseModel <#tdbGraph> ;
     ja:reasoner [
         ja:reasonerURL <http://jena.hpl.hp.com/2003/RDFSExptRuleReasoner>
     ] .


# Graph for the default Model
<#tdbGraph> rdf:type tdb:GraphTDB;
    tdb:dataset <#tdb_dataset_readwrite> .

# Dataset for the Graph
<#tdb_dataset_readwrite>
        a             tdb:DatasetTDB ;
        tdb:unionDefaultGraph true ; 
        #if you want all data to available in the default graph
        #without 'FROM-NAMing them' in the SPARQL query
        tdb:location  "C:\\Programs_other\\apache-jena-fuseki-3.4.0\\apache-jena-fuseki-3.4.0\\run/databases/xxx" .

0 ответов

Другие вопросы по тегам