triplestore如何决定是否添加;背景“;三倍?
我使用了一些不同的TripleStore,以及R和Scala中的代码。我认为我在以下方面看到了一些差异: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是否包括除I以外的triples 显式加载
- 可以添加这些“背景”三元组的点
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 .