2016-01-19 16 views
1

我刚刚进入语义世界,我无法理解一些事情。我试图弄清楚如何检查基于Microdata标记的HTML元素是什么类型的元素。我正在从Firefox扩展工作,所以我对于请求和低权限的东西没有任何限制。我只需要弄清楚什么是元素,并通过了解模式中定义的“事物”的种类来以用户可理解的语言(例如,没有MusicRecording)显示警报。考虑这个微观例如:从getschema.org消费JSON数据IOT获取“事物”名称

<div itemscope itemtype="http://schema.org/MusicRecording"> 
    <span itemprop="byArtist" itemscope itemtype="http://schema.org/MusicGroup"> 
    British rock band 
    <span itemprop="name">Queen</span> 
    </span> 
    for their 
    <span itemprop="inAlbum" itemscope itemtype="http://schema.org/MusicAlbum"> 
    <span itemprop="dateCreated">1977</span> album 
    <span itemprop="name">News of the World</span> 
    </span> 
<div> 

通过阅读我需要能够取回的东西的名字(像“音乐录像”)的项目类型,而不是分析串;以一种“正确的方式”,通过查询某些东西并提出要求。问题是,我找不到REST api或类似的东西来获取名称,我需要用纯JavaScript来做。

所以...任何线索/想法? (除了问这样的URL的DOM)

+0

我不知道我明白...对于您的示例标记,您想要使用'itemtype =“http://schema.org/MusicRecording”'获取'div'的字符串“Music Recording”?所以你需要itemtype的标签? – unor

+0

@unor yes,就是这一点。现在我意识到,也许它不像看起来那么容易,因为你可以检索这样的关联文件数据,但是......嘿,它没有标签定义:( – gal007

回答

1

的Schema.org词汇的canonical machine-readable representation在RDFa的:http://schema.org/docs/schema_org_rdfa.html

在这个文件中,每个Schema.org类型(rdfs:Class)具有用于rdfs:label property的值,其中“可被用来提供一个资源名称的人类可读版本“。

然而,似乎Schema.org团队决定提供标签就像它在URL给了,所以http://schema.org/MusicRecording它的“查看MusicRecording”,而不是“音乐录像”:

<div typeof="rdfs:Class" resource="http://schema.org/MusicRecording"> 
    <span class="h" property="rdfs:label">MusicRecording</span> 
    <span property="rdfs:comment">A music recording (track), usually a single song.</span> 
    <span>Subclass of: <a property="rdfs:subClassOf" href="http://schema.org/CreativeWork">CreativeWork</a></span> 
</div> 
1

我认为RDF translator app会帮助你。除了UI之外,它还公开了一个REST服务,您可以使用该服务将Microdata转换为其他RDF序列化,如乌龟等。然后您将能够使用SPARQL查询该数据。您可以想象任何语言的实现。

或者可能有一个库直接了解Microdata,但我不确定这一点。