SPARQL - 获取直接分配给个人的所有数据属性以及通过对象间接分配给其他个人的所有数据属性 属性

SPARQL - Get all Data Properties directly assigned to an individual and all indirectly assigned to other individuals via an object property

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

    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 个体相连。 理想的情况是递归发生的事情,例如,不是字面意义的值出现在同一列中 ?属性 和 ?value2 例如出现在与值相同的列中,我记得导出到 JSON 这是下一步

好像是这样:

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)

    }
}