繁体   English   中英

SPARQL - 如何从链接的个人获取个人数据属性

[英]SPARQL - how to get individual data property from linked individual

我建立这个本体论是为了保护。 我有这个个人ev001 ,有这些类型RoomhasRoom only {rm001} Room hasRoom only {rm001}rm001有数据属性roomName "room 1"^^xsd:string

现在我有一个返回的SPARQL查询

Event     Room     RoomName
ev001     {rm001}  

我的问题是,如何从那里获取房间名称,这是我的查询到目前为止

SELECT ?event ?room ?roomname
WHERE { ?x owl:onProperty base:hasRoom .
        ?event a base:FilmScreening ;
                   a ?x .
        ?x owl:allValuesFrom ?room .
}

非常感谢任何建议,非常感谢

一般来说,看起来你只需要:

SELECT ?event ?room ?roomname
WHERE {
  ?event base:hasRoom ?room .
  ?room base:roomName ?roomname. 
}

您不需要使用owl:onProperty等检索所有公理内容。但是,在您的情况下,本体的结构有点奇怪。 例如,你有以下内容:

<!-- http://www.example.org/ontologies/loncon3#pi00314001 -->

<owl:NamedIndividual rdf:about="http://www.example.org/ontologies/loncon3#pi00314001">
    <!-- ... -->
    <rdf:type>
        <owl:Restriction>
            <owl:onProperty rdf:resource="http://www.example.org/ontologies/loncon3#hasRoom"/>
            <owl:allValuesFrom>
                <owl:Class>
                    <owl:oneOf rdf:parseType="Collection">
                        <rdf:Description rdf:about="http://www.example.org/ontologies/loncon3#rm03005"/>
                    </owl:oneOf>
                </owl:Class>
            </owl:allValuesFrom>
        </owl:Restriction>
    </rdf:type>
    <!-- ... -->
</owl:NamedIndividual>

在曼彻斯特语法中,说pi00314001具有以下类型:

仅限房间{rm03005}

根据你的问题,听起来像你期望的那样

pi00314001 hasRoom rm03005

在您的数据中,或至少可以从中推断出来。 不幸的是,这并不是它实际意味着什么。 当你说个人X有这种类型时

p只有D.

它表示如果 X具有属性p的任何值,则该值必须是D的实例。 同样,您的本体中的内容表示如果 pi00314001具有属性hasRoom的值,则该值必须来自类{rm03005}。 并没有说pi00314001实际上具有该属性的值,因此您实际上并不知道它是否具有rm03005作为hasRoom的值。

如果它在你的控制之下,我想你想要为你的本体添加一些实际的对象属性断言,这样我上面提到的查询就可以了。 现在,你的本体论告诉你更多关于什么是可能的,而不是实际情况。

也就是说,如果您确实希望从现在的结构数据中检索房间,您可以按照数据结构进行操作。 它是这样的:

select ?event ?roomName {
  ?event a [ owl:onProperty base:hasRoom ;
             owl:allValuesFrom/owl:oneOf/rdf:rest*/rdf:first ?room ] .
  ?room base:roomName ?roomName .
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM