标签: microdata

什么是解析RDFa,Microdata等的最佳方法,使用统一的模式/词汇表来存储和显示信息(例如,schema.org)

我主要使用Ruby来做到这一点,但到目前为止我的攻击计划如下:

使用gems rdf,rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据.我认为最好映射到schema.org之类的统一模式,例如,使用这个yaml文件试图描述数据词汇表和opengraph到schema.org之间的转换:

# Schema X to schema.org conversion
#data-vocabulary
DV:
  name:name
  street-address:streetAddress
  region:addressRegion
  locality:addressLocality
  photo:image
  country-name:addressCountry
  postal-code:postalCode
  tel:telephone
  latitude:latitude
      longitude:longitude
  type:type
#opengraph
OG:
  title:name
  type:type
  image:image
  site_name:site_name
  description:description
  latitude:latitude
  longitude:longitude
  street-address:streetAddress
  locality:addressLocality
  region:addressRegion
  postal-code:postalCode
  country-name:addressCountry
  phone_number:telephone
  email:email
Run Code Online (Sandbox Code Playgroud)

然后,我可以存储以一种格式找到的信息,并使用schema.org语法重新显示它们.

另一部分是确定类型.我会在schema.org之后对我的表进行建模,我想知道记录的"Thing"(Thing)类型.因此,如果我解析一个opengraph类型的'bar',我会存储它是'BarOrPub'(BarOrPub).

有没有更好的方法呢?什么东西自动化?已有解决方案吗?任何输入赞赏.

编辑:

所以我发现这个解析得很好(其中all_tags包含我感兴趣的标签作为键,schema.org等同于值):

RDF::RDFa::Reader.open(url) do |reader|
        reader.each_statement do |statement|
          tag = statement.predicate.to_s.split('/')[-1].split('#')[-1]
          Rails.logger.debug "rdf tag: #{tag}"
          Rails.logger.debug "rdf predicate: #{statement.predicate}"
          if all_tags.keys.include? tag
            Rails.logger.debug "Found mapping for #{statement.predicate} and #{all_tags[tag]}"
            results[all_tags[tag]] = statement.object.to_s.strip
          end
        end
      end
Run Code Online (Sandbox Code Playgroud)

ruby semantic-markup rdfa microdata schema.org

5
推荐指数
1
解决办法
1049
查看次数

在<body>中使用HTML5 + Microdata的<meta>标签

我想<meta>使用Schema.org使用HTML5 + Microdata 标签指定产品是否为"库存" .

我不确定这是否是正确的语法:

<div itemscope itemtype="http://schema.org/Product">
  <h2 itemprop="name">Product Name</h2>
  <dl itemprop="offers" itemscope itemtype="http://schema.org/Offer">
    <dt itemprop="price">$1</dt>
    <meta itemprop="availability" itemscope itemtype="http://schema.org/ItemAvailability" itemid="http://schema.org/InStock">
  </dl>
</div>
Run Code Online (Sandbox Code Playgroud)

meta html5 microdata schema.org

5
推荐指数
2
解决办法
9172
查看次数

如何在产品中使用schema.org微数据标记提供聚合页面

示例页面是:http: //www.uswitch.com/mobiles/deals/apple_iphone_4s/

这个页面聚合了特定手机的所有合约交易,我希望在行上添加schema.org微数据,据我所知,似乎我应该用schema.org/Offer标记每一行

这将导致类似于:

优惠[itemOffered:x,价格:a,...其他变化...] ...优惠[itemOffered:x,价格:b,......其他变化......]

这是最好的解决方法吗?

Google针对"Rich Snippets产品"的指南:http://support.google.com/webmasters/bin/answer.py? hl = zh-CN&answer = 146750&topic = 1088474&etc = topic 仅列出了AggregateOffer的使用情况,但未列出其标记的准则页面上显示的每个商品.

microdata schema.org

5
推荐指数
2
解决办法
2604
查看次数

schema.org:同一天多个营业时间

我正在为一家小商店建立一个网站,并希望实现schema.org-microdata-markup。“问题”:这家商店是从星期二营业至周五-从10:00至14:00 和 16:30至23:00在这些日子。所以我实行了这样的开放时间...

<time itemprop="openingHours" datetime="Tu-Fr 10:00-14:00, 16:00-23:00">XYZ</time>
Run Code Online (Sandbox Code Playgroud)

但是通过这种方式,HTML验证器说……

元素时间的属性datetime的值Tu-Fr 10:00-14:00、16:00-23:00值不正确:文字不满足time-datetime格式。

我如何每天实施这些开放时间?还是不可能用<time>-tag 做到这一点,而我必须将其更改为<meta>-tags?谢谢你的帮助!:-)

microdata schema.org

5
推荐指数
1
解决办法
5190
查看次数

我应该在Python中使用哪种微数据解析器

我正在寻找一个高质量的HTML Microdata解析器在Python中.它不一定非常快,但我希望尽可能多地支持这些规范,包括itemref.

这是我到目前为止所发现的:

你使用过这些库吗?有什么优点和缺点?

我也很好奇解析格式不佳的HTML文档.您是否找到了处理凌乱输入的微数据解析器,或者您是否首先通过BeautifulSoup之类的命令运行输入?

python beautifulsoup microdata

5
推荐指数
1
解决办法
2136
查看次数

schema.org/microdata - 产品或优惠?

我在使用MicroFormats时遇到问题,并确定要使用哪种itemtype,无论是Product还是Offer.我使用Offer将数据添加到我们销售的各种产品中(每页1个).虽然这在Google结构化数据测试工具中正确验证,但它不会在结果中显示价格/评级/ InStock.如果我使用Product和Offer的混合物,那么虽然我不确定这是正确的方法吗?

谢谢,

干草堆

<title>My Tent</title>
<div itemscope itemtype="http://schema.org/Offer">
<div itemprop="name" class="product-details-title" id="item_product_prop">My Tent</div>
<div itemprop="description" id="item_product_prop">A Description for MyTent</div>
<meta itemprop="aggregateRating" id="item_product_prop" content="[3 Ratings]">
<div id="item_product_prop" itemprop="price">$13</div>
<div itemprop="availability" id="item_product_prop" content="InStock"></div></div>
</div>
Run Code Online (Sandbox Code Playgroud)

http://www.google.com/webmasters/tools/richsnippets?q=uploaded:8004e1c78c1098daa7aa283c26b42939

microdata schema.org

5
推荐指数
2
解决办法
1万
查看次数

使用schema.org branchOf和itemref

我有一个公司页面,其上列有所有本地分支机构.

  • 在页眉上,我定义了一个OrganizationType的itemType.
  • 每个LocalBusiness(酒店)都位于页面下方.

对于每个酒店,我正在尝试使用元标记添加branchOf属性,但Yandex和Google Snippets都为此属性显示为空白.有可能这样做吗?

<div itemscope itemtype="http://schema.org/Organization" id="schema-organization">
 <meta itemprop="description" content="blah blah blah" />
 <a href="/" itemprop="url">
  <h1 itemprop="name">The Hotel Chain</h1>
 </a>

 <div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
  <div itemprop="addressLocality">new york city</div>
  <meta itemprop="addressRegion" content="NY" />
 </div>
</div>
<!-- snip -->
<div itemscope itemtype="http://schema.org/Hotel">
 <meta itemprop="branchOf" itemref="schema-organization" />
 <h2 itemprop="name">Hotel Location 1</h2>
 <a href="http://maps.google.com/blahblah" itemprop="map">Get directions on Google Maps</a>

 <div itemprop="geo" itemscope itemtype="http://schema.org/GeoCoordinates">
  <meta itemprop="latitude" content="40.7450605" />
  <meta itemprop="longitude" content="-73.98301879999997" />
 </div>

 <div class="wrap-address clearfix" itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
  <ul class="ul-reset">
   <li><span …
Run Code Online (Sandbox Code Playgroud)

microdata schema.org

5
推荐指数
1
解决办法
3187
查看次数

schema.org微数据:像schema.org那样说,还是谷歌说的?

在我的网站上添加微数据时,我使用schema.org上的词汇表.

目前,我使用http://schema.org/SoftwareApplication来标记软件.由于格式是位在schema.org得以确认(例如,之间有什么区别url,downloadUrl和installUrl?),我也看了一下关于这个词汇的谷歌页面.

这让我很伤心.

事实证明,schema.org和Google使用两个不兼容的"相同"词汇版本.一些差异:

  • fileSize 根据schema.org以kB为单位给出,但根据Google的字节为单位.
  • operatingSystem在schema.org上调用operatingSystemsGoogle.
  • applicationCategory在schema.org上调用softwareApplicationCategoryGoogle.<rant> ... Google表示值'必须是支持的软件应用程序类型之一',但这些类型的链接已被破坏.</ rant>

现在,公平地说,谷歌声称他们的格式是schema.org格式的"扩展"(但是你不需要一个新的itemtype URL吗?),但肯定没有扩展可以重新定义现有的属性名称(如fileSize).

网站管理员应该怎么做?感觉正确的做法是遵循schema.org.关于这个话题是否有任何共识?

(我只是提出了一个假设:也许schema.org是当前的版本,过时的Google页面是在schema.org创建之前编写的,并且从那时起就一直没有被触及(可能被遗忘)?)

microdata schema.org google-rich-snippets

5
推荐指数
2
解决办法
1143
查看次数

'itemprop'和'rel'属性在同一个元素上

它是有效的使用itemprop属性和在rel同一元素的属性?

Google网站名称文档中的示例包含

<link rel="canonical" href="https://example.com/" itemprop="url">
Run Code Online (Sandbox Code Playgroud)

这在https://validator.w3.org/nu/中给出了这个错误:

此时rel元素link上不允许属性.

html5 rel html-validation microdata

5
推荐指数
1
解决办法
605
查看次数

在食谱微数据中标记不精确的持续时间

如果在特定的时间范围内,可以很容易地标记食谱的烹饪或准备时间:

Prep time: <time datetime="PT30M" itemprop="prepTime">30 min</time>
Cook time: <time datetime="PT1H" itemprop="cookTime">1 hour</time>
Run Code Online (Sandbox Code Playgroud)

但是,许多食谱使用估计的持续时间:

Prep time: 10-30 minutes
Cook time: 1 - 1½ hours
Run Code Online (Sandbox Code Playgroud)

以Google将会采用的方式标记此类信息的最佳方式是什么?据我所知,ISO 8601持续时间格式似乎不支持"模糊"持续时间/持续时间范围.

插入时间范围很诱人,因此机器可读值位于人类可读的最小值/最大值之间:

Prep time: <time datetime="PT20M" itemprop="prepTime">10-30 minutes</time>

Humans see:           10-30 minutes
Google/machines see:  20 minutes
Run Code Online (Sandbox Code Playgroud)

然而,这感觉很hacky和强迫,并且感觉我为搜索引擎优化提供搜索引擎不正确的数据与细节.

duration recipe microdata rich-snippets schema.org

5
推荐指数
1
解决办法
227
查看次数