如何在SPARQL中查找引用另一个对象的对象

Max*_* Z. 3 rdf sparql authorize.net-cim

首先,我必须道歉,因为我在XML,RDF和SPARQL查询方面非常新.我所有的知识是基于大量的阅读3天,因此还没有完全沉入,然而,试图查询使用耶拿是一个大的RDF文件时,我遇到了一个问题,如何让这是一个超的部分所有实例

对不起,如果这个措辞不好,那么这里有一个例子.在我的RDF文件中,总有一个主节点:

主节点

然后有一些对象将此节点作为资源,如:

<cim:Connection rdf:ID="connection_1">
    <cim:Object.name>Connection Point 1</cim:Object.name>
    <cim:Connection.node rdf:resource="#main_node_1"/>
</cim:Connection>
Run Code Online (Sandbox Code Playgroud)

要么

<cim:Potential rdf:ID="potential_1">
    <cim:Object.name>Equal Potential 1</cim:Object.name>
    <cim:Potential.node rdf:resource="#main_node_1"/>
</cim:Connection>
Run Code Online (Sandbox Code Playgroud)

现在我知道如何查询任何rdf:type和(有点)如何使用SPARQL进行图形查询.我想要做的是找到MainNode(我已经可以),然后找到引用此MainNode的所有元素/ objetcs/classes/instances.

根据我目前的尝试,我可以查询ConnectionPotential直接查询,但不能同时查询.所以返回所有Connections 的查询将是:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX cim: <http://iec.ch/TC57/2010/CIM-schema-cim15#>
SELECT ?object
WHERE {
    ?object   cim:Connection.node ?mainNode . 
    ?mainNode cim:Object.name     "The Main Node" . 
}
Run Code Online (Sandbox Code Playgroud)

对于所有人来说Potential,查询将是:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX cim: <http://iec.ch/TC57/2010/CIM-schema-cim15#>
SELECT ?object
WHERE {
    ?object   cim:potential.node  ?mainNode . 
    ?mainNode cim:Object.name     "The Main Node" . 
}
Run Code Online (Sandbox Code Playgroud)

然而,我需要提取两者并且不想使用,UNION因为可能有更多的类我没有包括在内.我的尝试是将?object线路更改为:

?mainNode cim:*.name "The Main Node" . 
Run Code Online (Sandbox Code Playgroud)

但是星号*不允许我在这里提供任何课程.事实上,无论是ConnectionPotential可以被看作是包含变量的超类的儿童node.

Ian*_*son 5

我认为你要求的是任何一个与主节点相距三个连接的节点:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX cim: <http://iec.ch/TC57/2010/CIM-schema-cim15#>
SELECT ?relationship ?object
WHERE {
  ?object   ?relationship  ?mainNode . 
  ?mainNode cim:Object.name     "The Main Node" . 
}
Run Code Online (Sandbox Code Playgroud)

该查询将告诉您直接连接到主节点的所有节点以及连接谓词的URI.

如果您只想要从相关节点到主节点的某些连接,那么您需要在联合中枚举它们,或者添加一个FILTER子句来删除您不想要的那些.