Rdf MarkLogic能否对嵌入的三元组进行推理?
当使用sem:sparql对选定的存储集查询三元组时,MarkLogic是否会应用推理?Alex,请看一看。您将看到一个示例,其中SPARQL查询应用于三元组存储,这是由于将两组推理规则应用于一组三元组而产生的。如果稍微修改该示例,它将显示一个SPARQL查询,该查询应用于对triples索引中的所有三元组(包括嵌入的三元组)运行推断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
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文档,该文档对推断有很好的描述。
你读过这个话题吗?您是否有一个测试用例来显示您希望它如何工作?