相关疑难解决方法(0)

是否可以在SPARQL中表达递归定义?

想象一下,你有一个简单的社交网络,人们必须只有一个rdfs:label有价值的财产,"Person"并且任何数量的foaf:knows人也必须是具有相同结构的人.一些示例数据可能是:

:peter foaf:knows :john; 
       foaf:knows :anna;
       rdfs:label "Person" .

:john  foaf:knows :anna;
       rdfs:label "Person" .

:anna  rdfs:label "Person" .
Run Code Online (Sandbox Code Playgroud)

在逻辑术语中,定义可能类似于:

∀x(Person(x)≡rdfs:label(x,"Person")∧∀y(rdfs:label(x,y)→y ="Person")∧∀y(foaf:knows(x,y)→人(Y)))

是否可以在SPARQL中表达这些递归定义?

我能够表达部分查询而没有递归引用foaf:knowsas:

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

select ?person {

    # Ensure there is only one rdfs:label
    { SELECT ?person {
      ?person rdfs:label ?o .
    } GROUP BY ?person HAVING (COUNT(*)=1)}

    # Ensure the rdfs:label value is "Person"
    { SELECT ?person {
      ?person rdfs:label ?o . 
      FILTER …
Run Code Online (Sandbox Code Playgroud)

recursion rdf constraints sparql

2
推荐指数
1
解决办法
1665
查看次数

标签 统计

constraints ×1

rdf ×1

recursion ×1

sparql ×1