【问题标题】:How to find objects that reference another object in SPARQL如何在 SPARQL 中查找引用另一个对象的对象
【发布时间】:2013-07-13 05:52:54
【问题描述】:

首先我必须道歉,因为我对 XML、RDF 和 SPARQL 查询非常陌生。我所有的知识都是基于 3 天的大量阅读,因此还没有完全深入。不过,我在尝试使用 Jena 查询大型 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>

<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>

现在我知道如何查询任何rdf:type 以及(有点)如何使用 SPARQL 绘制查询图。我要做的是首先找到 MainNode(我已经可以),然后找到所有引用此 MainNode 的元素/对象/类/实例。

根据我目前的尝试,我可以直接查询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" . 
}

对于所有Potentials,查询将是:

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" . 
}

但我需要同时提取两者并且不想使用UNION,因为可能还有更多我没有包含的类。我的尝试是将?object 行更改为:

?mainNode cim:*.name "The Main Node" . 

然而星号* 不允许我在这里提供任何课程。事实上,ConnectionPotential 都可以被视为包含变量 node 的超类的子类。

【问题讨论】:

    标签: rdf sparql authorize.net-cim


    【解决方案1】:

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

    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" . 
    }
    

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

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

    【讨论】:

    • 这正是我想要的!没想到最后这么直接。非常感谢
    猜你喜欢
    • 2012-11-25
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    • 2018-12-31
    • 2015-10-08
    • 2018-06-12
    • 2018-03-19
    相关资源
    最近更新 更多