properties - 具体化的 rdf 三元组中的 SPARQL 属性路径

标签 properties path sparql rdf reification

是否可以将属性路径与具体化的 rdf 三元组一起使用?

我想获取指定类的所有父类(super class)(存储在?class中)。

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT ?class ?superclass ?supersuperclass ?supersupersuperclass
WHERE{
  {
    ?s rdf:subject ?class .
    ?s rdf:predicate rdfs:subClassOf .
    ?s rdf:object ?superclass .
    
    OPTIONAL {
    ?s1 rdf:subject ?superclass .
    ?s1 rdf:predicate rdfs:subClassOf .
    ?s1 rdf:object ?supersuperclass .
    }
    
    OPTIONAL {
    ?s2 rdf:subject ?supersuperclass .
    ?s2 rdf:predicate rdfs:subClassOf .
    ?s2 rdf:object ?supersupersuperclass .
    }
    
  }

}

最佳答案

你可以使用中间查询,首先去神化语句:

CONSTRUCT {
  ?s a rdfs:Class .
  ?o a rdfs:Class .
  ?s rdfs:subClassOf ?o .
}
WHERE {
  ?t a rdf:Statement .
  ?t rdf:object ?o .
  ?t rdf:predicate rdfs:subClassOf .
  ?t rdf:subject ?s .
}

然后获取所有的子类关系:

SELECT ?s ?o
WHERE {
  ?s a rdfs:Class .
  ?s rdfs:subClassOf* ?o .
}

如果您知道类没有被其他谓词互连,您可以使用路径:

SELECT ?s ?o
WHERE {
  ?s a rdfs:Class .
  ?o a rdfs:Class .
  ?s (^rdf:subject/rdf:object)* ?o .
}

关于properties - 具体化的 rdf 三元组中的 SPARQL 属性路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64699248/

相关文章:

sparql dbpedia.org 佛罗伦萨唯一进球

rdf - 如何使用 SPARQL 查找相似内容

javascript - 从数字文字访问 "getter"的属性时,IE9 中出现奇怪的 `Number.prototype` 行为

python - 为什么 python 3.4 中的 path.name() 给我 "TypeError: ' str' 对象不可调用”?

javascript - 如何在snap.svg中使用textPath作为文本?

java - Servlet 真实路径

java - 设置 Java VM line.separator

wpf - 将文本框绑定(bind)到 WPF 中的属性

c# - 两个日期作为 C# 中的属性

rdf - 4store 是否支持 SPARQL 1.1?