gpt4 book ai didi

java - 通过继承自 Thing 的属性查询 Thing 的子类

转载 作者:太空宇宙 更新时间:2023-11-04 11:39:14 27 4
gpt4 key购买 nike

在官方 schema.org 文档中,我可以看到每个类都继承了 Thing 的属性。类,例如 Book类还有name , image等等(来自 Thing 的属性)。

我的问题是,我可以获得例如 image schema.org 数据存储中每个实体( Thing 的子类)的( Thing 属性)?例如Book类实体具有诸如 <http://schema.org/Book/image> 之类的属性,但是VideoGame实体有<http://schema.org/VideoGame/image> 。我想做一个 SPARQL 查询来获取 image name 中包含某个关键字的每个实体的属性(不幸的是,它又是 Thing 属性)

我尝试过这个:

String queryString ="select distinct ?graph ?img where {{?a <http://schema.org/name> ?obj. ?a <http://schema.org/image> ?img} union {GRAPH ?graph {?a <http://schema.org/name> ?obj. ?a <http://schema.org/image> ?img }} filter(regex(?obj, \""+keyword+"\",\"i\"))}";
select distinct ?graph ?img where {
{?a <http://schema.org/name> ?obj.
?a <http://schema.org/image> ?img}
union
{ GRAPH ?graph {
?a <http://schema.org/name> ?obj.
?a <http://schema.org/image> ?img
}
}
filter(regex(?obj, \""+keyword+"\",\"i\"))
}

在三重存储中,image Book 的属性实体具有诸如 <http://schema.org/Book/image> 之类的属性

以下方法有效,但仅限于 Book 实体:

String queryString ="select distinct ?graph ?img where {{?a <http://schema.org/Book/name> ?obj. ?a <http://schema.org/Book/image> ?img} union {GRAPH ?graph {?a <http://schema.org/Book/name> ?obj. ?a <http://schema.org/Book/image> ?img }} filter(regex(?obj, \""+keyword+"\",\"i\"))}";
select distinct ?graph ?img where {
{ ?a <http://schema.org/Book/name> ?obj.
?a <http://schema.org/Book/image> ?img }
union
{ GRAPH ?graph {
?a <http://schema.org/Book/name> ?obj.
?a <http://schema.org/Book/image> ?img
}
}
filter(regex(?obj, \""+keyword+"\",\"i\"))
}

有谁知道如何通过Thing查询属性,无论实体的类如何(但实体仍然是 Thing 的子类)?

感谢您的宝贵时间!

更新

三元组由 Web Data Commons 2016 年 10 月 schema.org 语料库 ( http://webdatacommons.org/structureddata/2016-10/stats/schema_org_subsets.html ) 提供。更具体地说,我获取了所有示例文件并将它们合并到一个三重存储中。

不幸的是,正如 @Vladimir 和 @AKSW 指出的那样,该语料库中存在错误,并且 <http://schema.org/Book/image> 的存在而不是<http://schema.org/image>是其中之一。

我在 Web Data Common 的邮件列表中发现了其他用户提出的类似问题。提取元数据时似乎出现解析错误。

感谢您的评论,至少我了解了查询 schema.org 带注释的三元组的正确方法(当它们有效时:))。

最佳答案

从我的角度来看,数据的建模有点奇怪,但您可以使用以下查询,尽管这可能非常低效:

SELECT  ?o
WHERE
{ ?s ?p ?o
FILTER strends(str(?p), "/image")
}

首先获取子 SELECT 中的所有属性可能是一种更有效的方法,特别是对于更复杂的查询:

SELECT  ?o
WHERE
{ # do some other stuff here
?s ?p ?o
...

# get the image properties here
{ SELECT DISTINCT ?p
WHERE
{ ?s ?p ?o
FILTER strends(str(?p), "/image")
}
}
}

关于java - 通过继承自 Thing 的属性查询 Thing 的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42960667/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com