triplestore如何决定是否添加;背景“;三倍?

triplestore如何决定是否添加;背景“;三倍?,r,scala,sparql,jena,blazegraph,R,Scala,Sparql,Jena,Blazegraph,我使用了一些不同的TripleStore,以及R和Scala中的代码。我认为我在以下方面看到了一些差异: TripleStore是否包括除I以外的triples 显式加载 可以添加这些“背景”三元组的点 对于是否需要独立于实现技术添加支持词汇表,是否有任何一般规则? 在R中使用Jena,通过rrdf,我通常只能看到我加载的内容: library(rrdf) turtle.input.string <- "PREFIX prefix: <http://example.com/

我使用了一些不同的TripleStore,以及R和Scala中的代码。我认为我在以下方面看到了一些差异:

  • TripleStore是否包括除I以外的triples 显式加载
  • 可以添加这些“背景”三元组的点
对于是否需要独立于实现技术添加支持词汇表,是否有任何一般规则?

在R中使用Jena,通过rrdf,我通常只能看到我加载的内容:

library(rrdf)
turtle.input.string <-
  "PREFIX prefix:  <http://example.com/>
   prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
   prefix:subject rdf:type prefix:object"
jena.model <-
  fromString.rdf(rdfContent = turtle.input.string, format = "TURTLE")
model.string <- asString.rdf(jena.model, format = "TURTLE")
cat(model.string)
即使不添加任何三元组,
构造
输出也包括如下块:

rdfs:isDefinedBy rdfs:domain rdfs:Resource ;
    rdfs:range rdfs:Resource ;
    rdfs:subPropertyOf rdfs:isDefinedBy , rdfs:seeAlso .
对于是否需要独立于实现技术添加支持词汇表,是否有任何一般规则

这取决于triplestore声称支持的推断方案。对于纯RDF存储(无推断),根本不应添加额外的三元组


从您展示的片段判断,您使用的Blazegraph存储至少启用了RDFS推理(可能还启用了部分OWL推理?)。请注意,这是特定于存储的,而不是框架,因此这不是Jena vs.Sesame的事情:两个框架都支持进行推理或不进行推理的存储。当然,如果您使用任何一个框架并使用它们提供的“排除的推断三元组”选项,则支持存储应该尊重该配置选项,并且不在结果中包含此类推断三元组

我只能为耶拿负责。如果使用带有RDFS概要文件的OntModel,默认情况下会添加RDF和RDFS词汇表以及axiomatic三元组。看,谢谢,这很有道理。rrdf是Jena之上的包装器,它确实提供了创建一个新模型作为本体的选项。在从字符串或文件加载三元组时,它不提供该选项。你能想到在什么情况下RDF和RDFS语音会在事后被注入吗?谢谢,很好的观点。仔细想想,我肯定不是在初始化blazegraph存储时禁用了推理功能。所以现在我觉得我知道那里会发生什么。当我通过rrdf在R中使用Jena时,我仍然不确定发生了什么。我想我还没解释清楚,昨天我也没能复制出来。
import java.util.Properties
import org.openrdf.query.QueryLanguage
import org.openrdf.rio._
import com.bigdata.journal._
import com.bigdata.rdf.sail._
object InjectionTest {
  val jnl_fn = "sparql_tests.jnl"
  def main(args: Array[String]): Unit = {
    val props = new Properties()
    props.put(Options.BUFFER_MODE, BufferMode.DiskRW)
    props.put(Options.FILE, jnl_fn)
    val sail = new BigdataSail(props)
    val repo = new BigdataSailRepository(sail)
    repo.initialize()
    val cxn = repo.getConnection()
    val resultStream = new java.io.ByteArrayOutputStream
    val resultWriter = Rio.createWriter(RDFFormat.TURTLE, resultStream)
    val ConstructString = "construct {?s ?p ?o} where {?s ?p ?o}"
    cxn.prepareGraphQuery(QueryLanguage.SPARQL, ConstructString).evaluate(resultWriter)
    var resString = resultStream.toString()
    println(resString)
  }
}
rdfs:isDefinedBy rdfs:domain rdfs:Resource ;
    rdfs:range rdfs:Resource ;
    rdfs:subPropertyOf rdfs:isDefinedBy , rdfs:seeAlso .