三元店如何决定是否添加“背景”三元组?

时间:2017-06-15 15:17:26

标签: r scala sparql jena blazegraph

我使用了一些不同的三重存储,并在 R Scala 中编码。我想我看到了一些不同之处:

  • 三重商店是否包括除了我之外的三元组 明确加载。
  • 可能会添加这些“背景”三元组的点。

是否需要添加支持词汇表的一般规则,与实施技术无关?

R 我装的是什么:

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)

这给出了:

@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix prefix: <http://example.com/> .
prefix:subject  a  prefix:object .

但是,当我在之后添加或删除三元组时,有时会出现来自 RDF RDFS 的三元组。这就是“困扰”我的最多,但我现在很难找到一个例子。如果没有人知道我的意思,我今天晚些时候会挖掘一些东西。

当我在 Scala 中使用 Blazegraph 时,通过 OpenRDF Sesame库,我想我 总是 免费获取 RDF RDFS OWL

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)
  }
}

即使没有添加任何三元组,construct输出也包含这样的块:

rdfs:isDefinedBy rdfs:domain rdfs:Resource ;
    rdfs:range rdfs:Resource ;
    rdfs:subPropertyOf rdfs:isDefinedBy , rdfs:seeAlso .

1 个答案:

答案 0 :(得分:2)

  

是否有任何关于是否需要添加支持词汇表的一般规则,与实现技术无关?

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

从你展示的那个片段判断,你使用的Blazegraph商店至少启用了RDFS推理(也可能是部分OWL推理?)。请注意,这是 store - 特定的,而不是框架,所以它不是Jena vs. Sesame的东西:两个框架都支持那些做或不做推理的商店。当然,如果您使用任一框架并使用&#34;排除推断的三元组&#34;他们提供的选项,后备存储应尊重该配置选项,并且不在结果中包含此类推断的三元组。