Rdf MarkLogic能否对嵌入的三元组进行推理?

Rdf MarkLogic能否对嵌入的三元组进行推理?,rdf,marklogic,Rdf,Marklogic,当使用sem:sparql对选定的存储集查询三元组时,MarkLogic是否会应用推理?Alex,请看一看。您将看到一个示例,其中SPARQL查询应用于三元组存储,这是由于将两组推理规则应用于一组三元组而产生的。如果稍微修改该示例,它将显示一个SPARQL查询,该查询应用于对triples索引中的所有三元组(包括嵌入的三元组)运行推断 xquery version "1.0-ml"; import module namespace sem = "http://marklogic.com/sema

当使用sem:sparql对选定的存储集查询三元组时,MarkLogic是否会应用推理?

Alex,请看一看。您将看到一个示例,其中SPARQL查询应用于三元组存储,这是由于将两组推理规则应用于一组三元组而产生的。如果稍微修改该示例,它将显示一个SPARQL查询,该查询应用于对triples索引中的所有三元组(包括嵌入的三元组)运行推断

xquery version "1.0-ml";
import module namespace sem = "http://marklogic.com/semantics" 
  at "/MarkLogic/semantics.xqy";

PREFIX skos: <http://www.w3.org/2004/02/skos/core#Concept/>

sem:sparql("select * { ?c a skos:Concept; rdfs:label ?l }",(),(),
  sem:ruleset-store(
    ("subClassOf.rules", "subPropertyOf.rules"),
    sem:store()
  )
)
xquery版本“1.0-ml”;
导入模块命名空间sem=”http://marklogic.com/semantics" 
位于“/MarkLogic/semantics.xqy”;
前缀skos:
sem:sparql(“select*{caskos:Concept;rdfs:label?l}”,(),(),
规则集存储(
(“规则子条款”、“规则子条款”),
sem:store()
)
)

如果您在三元组之间建立了一些关系,并尝试使用规则集获取结果,那么它将在执行搜索时应用推理

例如,我创建了以下三元组

 PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
 PREFIX prod: <http://www.example.com/products/>
 PREFIX ex: <http://www.example.com/>

 INSERT DATA
 {

   prod:1001 rdf:type ex:Apple;

   prod:1002 rdf:type ex:Fruit;

 }
前缀rdf:
前缀prod:
前缀ex:
插入数据
{
产品:1001 rdf:型号ex:苹果;
产品:1002RDF:ex型:水果;
}
现在如果你搜索所有苹果类型的主题,它只会给你提示:1002

现在在他们之间建立一种关系

 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
 PREFIX ex: <http://www.example.com/>

 INSERT DATA
 {

   ex:Apple rdfs:subClassOf ex:Fruit .

 }
前缀rdfs:
前缀ex:
插入数据
{
ex:苹果rdfs:子类ex:水果。
}
并将数据库的默认规则集设置为subassof.rules,然后运行相同的查询

 PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
 PREFIX ex: <http://www.example.com/>

 SELECT ?product
 WHERE
 {
  ?product rdf:type ex:Fruit 
 }
前缀rdf:
前缀ex:
选择?产品
哪里
{
?产品rdf:ex型:水果
}
现在它将返回prod:1001和prod:1002

此外,有关更多详细信息,您可以访问marklogic文档,该文档对推断有很好的描述。

你读过这个话题吗?您是否有一个测试用例来显示您希望它如何工作?