在官方schema.org文档中,我可以看到每个类都继承了.pxd
类的属性,例如,Thing
类也有Book
,{{1} }等(来自name
的属性)。
我的问题是,我可以获得schema.org数据存储区中每个实体(image
的子类)的Thing
(image
属性)吗?例如,Thing
类实体具有Thing
等属性,但Book
实体具有<http://schema.org/Book/image>
。我想创建一个SPARQL查询来获取其VideoGame
属性中包含某个关键字的每个实体的<http://schema.org/VideoGame/image>
(遗憾的是,这又是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>
有人知道如何通过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\"))
}
的子类)?
感谢您的时间!
更新
三元组由Web Data Commons提供,2016年10月语音库为schema.org(http://webdatacommons.org/structureddata/2016-10/stats/schema_org_subsets.html)。更具体地说,我采用了所有示例文件并将它们合并为一个三重商店。
不幸的是,正如@Vladimir和@AKSW指出的那样,这个语料库中存在错误,而Thing
而不是Thing
的存在就是其中之一。
我在Web Data Common的邮件列表中发现了其他用户提出的类似问题。在提取元数据时似乎是一个解析错误。
感谢您的评论,至少我理解查询schema.org注释三元组的正确方法(当它们有效时:)。
答案 0 :(得分:0)
从我的观点来看,数据的建模有点奇怪,但您可以使用以下查询,尽管这可能效率很低:
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")
}
}
}
答案 1 :(得分:0)
你的意思是哪家三重店?架构没有您提到的属性URL。修复该数据(或询问是谁制作数据,修复它)