1

到目前为止,我的代码是这样的:

    PREFIX : <http://www.semanticweb.org/evangelos/ontologies/2019/2/untitled-ontology-2#>

SELECT ?property ?value
WHERE{
    ?poi :POIhasID 7878787.
    ?poi ?property ?value;
    filter (?property not in (rdf:type))
    #filter isLiteral(?value) 

}

我想要做的是让某个 ID 为 7878787 的人,例如,给我他所有的直接数据类型属性,排除 rdf:type 答案,排除任何非文字值,并给我所有的间接数据类型属性通过对象属性与第一个人连接的另一个人。特别是我使用 geosparql 并且我想获取 Place 的数据属性以及分配给 Geometry 的 Point Individual 子类的 GPS 坐标,该子类与具有 geo:hasGeometry 对象属性的 Place 个体相连。理想的情况是递归发生,例如,它不是字面意义上的 ?value 出现在与 ?property 相同的列中,而 ?value2 例如出现在与 value 相同的列中,我记住导出到 JSON 是下一步

4

1 回答 1

1

似乎是这样:

PREFIX : <http://www.semanticweb.org/evangelos/ontologies/2019/2/untitled-ontology-2#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

SELECT ?property ?value ?value2
WHERE{
    {?poi :POIhasID 7878787.
    ?poi ?property ?value
    filter (?property not in (rdf:type))
    filter isLiteral(?value)
    } UNION {
    ?poi :POIhasID 7878787.
    ?poi ?prop2 ?value2.
    ?value2 ?property ?value
    filter isLiteral(?value)

    }
}
于 2019-09-18T14:34:30.833 回答