问题描述
我正在学习语义网。到目前为止,我所知道的是语义网的整个想法是将元数据添加到您网站中的数据中,以使您的网站中的数据更容易被机器读取。
但是我不知道普通的Web开发人员是否可以将此元数据添加到他们的网站中,或者这种将元数据添加到网站的过程是否需要专业人士来完成,我从{{3 }}:
虽然学习HTML的基础知识相对简单, 学习知识表示语言或工具需要 作者以了解表示形式的抽象方法和 它们对推理的影响。例如,了解 类-实例关系或超类-子类关系, 不仅仅是了解一个概念是另一个概念的“类型” 概念。 […]这些抽象被教给计算机科学家 通常和知识工程师特别相关,但与 类似的自然语言,意思是某种事物的“类型”。 有效使用这种形式的陈述要求作者 成为除其他技能外的熟练知识工程师 域所需。 […]一旦学会了正式 表示语言,仍然常常需要付出更多的努力来表达 这种想法比不那么正式的表示[…]。 确实,这是一种基于以下形式的声明的编程形式: 语义数据,需要理解推理方式 算法将解释创作的结构。
我不明白以上引用的含义,是否意味着您必须是“熟练的知识工程师”才能知道如何向网站“添加”语义网?
解决方法
这是一个有点复杂的主题,根据我的简单理解,要遵循一系列规则和要理解的概念,但是通常,您必须在HTML标记中包括其他属性,以达到具有语义的目的,请参阅此link(例如)。 您必须了解RDF和SPARQL才能继续前进。
,简而言之:
您不能“添加语义”。语义不是元数据。出于多种原因,每个页面都应该具有语义-机器人(索引,SEO等)是其中之一,而盲人屏幕阅读器是另一个。正确的元声明只是迈向语义页面的一小步。
要进行语义写-停止使用div
,至少要限制它。有section,aside,header,nav,main,footer,figure ...
之类的语义元素专门用于特定用途。使用它们可以确定其内容的重要性以及与其他语义页面元素的关系。
当机器读取<div>
时,它什么都没有,当它读取<div id="blahblahblah" class="another-blah and-some-other-monsters">
时,这仍然意味着要注意,但其名称却是一个庞然大物,
<div id="blahblahblah" class="another-blah and-some-other-monsters">
<div id="blahblahblah" class="another-blah and-some-other-monsters">
<div id="blahblahblah" class="another-blah and-some-other-monsters">
word
</div>
</div>
</div>
很明显,这根本不是语义上的。
要有效地使用这种形式的陈述,要求作者成为一名熟练的知识工程师...
这是没有必要的,思考和遵守规则比文凭更重要。人才+知识+经验更好。
PS
可能需要文凭才能了解此Wiki文章的作者
我会偏向RDF而偏爱Microformats。
在Microsoft接管LinkedIn之前,它曾经是此用法的一个很好的例子。 可能还是一样。
但从本质上讲,您可以为span或div赋予id
或class
,而CSS名称则为其中的内容赋予含义。
所以您最终会得到这样的标记:
<p id="firstName">Charlie</p>
我发现添加语义标记的最简单,最直观的方法。
HTML5的其他方面也使得语义内容也更易于处理。
诸如Geolocation和semantic elements之类的东西。
菜单和导航之类的东西是网络爬虫在有效地标记内容时不需要知道的-在元提示之上。
HTML5在将此类标记与内容分离方面取得了长足的进步。
,此答案完全基于我对强烈推荐的MIT Press基本知识丛书中对Metadata的Schema.org的理解。
什么是元数据?
可能像大多数人一样,我通常对元数据的定义是“关于数据的数据”,但事实证明,这是一个相当无用的定义。根据作者的说法,您首先需要定义什么数据和什么 about 关于;)
书中的元数据称为:
元数据是关于潜在信息对象的陈述
- 可能提供信息的对象 是您正在描述的实体
- 您可以说出 声明
本体
事实证明,定义实体及其之间的关系是一门科学。据我了解,它是关于使用 控制词汇 描述给定领域内的事物的。例如,
+---+ +---+
| X |---(is the mother of)--->| Y |
+---+ +---+
我认为以上描述称为 三重 :
- 一个主题
- 谓词
- 一个对象
对象是 可能提供信息的对象 。谓词是 声明 ,而主题是用于描述我们正在描述的对象的另一个可能提供信息的对象。
希望这很明显:
-
X
和Y
都是人 -
X
和Y
相互关联
但是,使用我所知道的本体的好处之一是,您可以推断出不需要描述的其他内容:
如果X
是{em> Y
的母亲,那么我们知道X
也是女性。
谁知道之后您还可以做些其他有用的陈述?
不幸的是,我对这个话题还不了解,无法继续进行下去,但是只是知道像http://schema.org/Book这样的东西可以帮助您。
Schema.org
Schema.org词汇表可以使用许多不同的编码,包括RDFa,Microdata和JSON-LD。这些词汇涵盖实体,实体与动作之间的关系
例如,让我们描述一本书
<div itemscope itemtype="http://schema.org/Book">
<h1 itemprop="name">The title of my book</h1>
<p itemprop="author">John Doe</p>
<p itemprop="description">This book is about X,Y and Z</p>
</div>
URI为{{3}},在那里告诉机器该东西是一本书( 可能提供信息的对象 )和{{1} }属性是我们可以针对该对象创建的 声明 。
共享词汇表使网站管理员和开发人员可以更轻松地决定模式,并从他们的工作中获得最大的收益。正是本着这种精神,创始人与广大社区一起走到了一起-提供了共享的模式集合。
希望这会鼓励您做出努力。
您无需成为数据科学家即可。但是,您确实需要熟悉词汇表,以便可以一致且明确地描述事物。
关于HTML5语义元素的注释
我希望已经清楚仅使用HTML5元素是不够的:
itemprop
它对您唯一的作用是在页面上定位 可能提供信息的对象 。您无法以可预测的方式将其与另一个对象相关联:
- 是发表文章的时间吗?
- 是上次更新文章的时间吗?
- 读文章需要时间吗?
- ...