代表RDFa,schema.org和FOAF

时间:2015-05-05 11:07:38

标签: html5 semantic-web schema.org rdfa foaf

我有点困惑如何使用RDFa(Lite),schema.org和FOAF建模作家 - 代理关系。我甚至不确定我是否需要FOAF。

让我们说我出版一本书,我是作家并由代理人代理。所以我们有两个人,一个是我,一个是代理人。为了澄清,我的目的是将代理链接为作者的联络点,同时指示作者是 me ,页面的主题:

<!-- the agent representing me -->
<div resource="/Writecorp/Michael Stern" vocab="http://schema.org/" typeof="Person">
    <span property="name">Michael Stern</span>
    <div property="memberOf">
        <div typeof="Organization">
            <span property="name">Writecorp Inc. agency</span>
        </div>
    </div>
</div>

<!-- the writer, me -->
<div rel="me" vocab="http://schema.org/" typeof="Person">
    <link rel="agent" property="contactPoint" href="/Writecorp/Michael Stern" />
    <span property="name">H. P. Lovecraft</span>
</div>

我从https://stackoverflow.com/a/19389163/441662收集的<link>解决方案。

当我将其提供给RDFa 1.1 Distiller and Parser时,会显示以下输出:

@prefix ns1: <http://www.w3.org/ns/rdfa#> .
@prefix ns2: <http://schema.org/> .

<> ns2:me [ a ns2:Person;
            ns2:contactPoint </Writecorp/Michael Stern>;
            ns2:name "H. P. Lovecraft" ];
    ns1:usesVocabulary ns2: .

</Writecorp/Michael Stern> a ns2:Person;
    ns2:memberOf """

                Writecorp Inc. agency

        """;
    ns2:name "Michael Stern" .

[] a ns2:Organization;
    ns2:name "Writecorp Inc. agency" .
  • 是否正确识别rel="me"?它显示 ns1:me ,但我在引用的命名空间词汇表schema.org中找不到任何关于它的信息。我应该使用FOAF前缀然后使用foaf:me吗?我也找不到很多例子。
  • 如何将代理建模为contactPoint 关系?根据schema.org和Google's testing toolPerson不允许contactPoint

解?

进一步提出的一个解决方案是让一个实体既是ContactPoint又是Person,但Google's validator似乎并不喜欢它。

另一种可能的解决方案是让代理和编写者指向相同的ContactPoint资源(请参阅https://stackoverflow.com/a/30055747/441662)。

关于rel="me",来自微格式示例,而不是schema.org(但是,正如his answer中的@unor陈述)或foaf。

/ edit 7-5-2015:我提出了一个GitHub问题for this problem。当我了解更多内容时,我会更新这篇文章...

2 个答案:

答案 0 :(得分:1)

虽然agent是Schema.org属性,但其域名为Action(您似乎并不打算这样做)。它既不是FOAF属性也不是注册链接类型(因此must not be used in HTML5)。所以我想你必须找到一个合适的房产。

me是一种链接类型,而不是Schema.org或FOAF属性。但是当您使用vocab时,RDFa解析器假定它是默认词汇表中的属性(在您的情况下为Schema.org)。我不确定你是否真的打算将它用作链接类型(因为你在非链接元素的RDFa方式中使用它)。

(如果要使用链接类型,则possible solution将使用prefix而不是vocab。这样,rel的无前缀值将被解释为链接类型,作为属性的前缀值。)

如果使用Schema.org,该书的类型为Book。您将成为此Book的{​​{3}} 您必须检查Book的可用属性(如果代理与您的工作有关,而不是您的人)或author(或Person,如果这是您的业务)如果Schema.org提供了一个合适的属性来指定你的代理。啊,我错过了代理应​​该是Organization。现在,我怀疑Schema.org是否打算这种类型也可以引用组织或个人,但我想没有什么可以阻止你说明某些内容是ContactPoint {{1 }}

关于Organization(或ContactPoint):是的,通常最好为实体提供URI而不是使用空白节点。这样,您和其他人可以在相同或不同的文档中对这些实体进行陈述。

理想情况下,您可以为每个实体提供一个URI(包括您自己,与文档的URI不同)。

例如,在网页resource上,您可以:

http://example.com/lovecraft

现在您的URI为<body prefix="schema: http://schema.org/"> <div typeof="schema:Person" resource="#me"></div> <div typeof="schema:Organization schema:ContactPoint" resource="#agent"></div> <div typeof="schema:Book" resource="#book-1"></div> </body> (这代表您,该人,而不是关于您的网页),您的代理的组织具有URI http://example.com/lovecraft#me,您的图书具有URI http://example.com/lovecraft#agent

这允许您以各种方式对这些做出陈述,例如:

http://example.com/lovecraft#book-1

要说明页面(<body prefix="schema: http://schema.org/"> <div typeof="schema:Person" resource="#me"> <link property="schema:contactPoint" href="#agent" /> <link property="schema:author" href="#book-1" /> </div> <div typeof="schema:Organization schema:ContactPoint" resource="#agent"></div> <div typeof="schema:Book" resource="#book-1"></div> </body> )与您有关(http://example.com/lovecraft),您可以about(包含在下一个版本中),和/或使用Schema.org的{{ 3}},和/或使用FOAF的wait for Schema.org’s mainEntity property

答案 1 :(得分:0)

一种选择是让代理和编写者都指向相同的ContactPoint资源。

这似乎有点奏效。这允许正确的降价格式化代理及其联系人详细信息,同时让作者指向代理的联系人详细信息。然而,这仍然没有恰当地将代理人作为作者的代表(即不与我打交道,而是与我的经纪人打交道)。而且我不确定机器读者如何处理这种情况。

<!-- the agent representing me -->
<div resource="/Writecorp/MichaelStern" vocab="http://schema.org/" typeof="Person">
    <span property="name">Michael Stern</span>
    <link property="contactPoint" href="/Writecorp/MichaelStern#contact" />
    <div resource="/Writecorp/MichaelStern#contact" vocab="http://schema.org/" typeof="ContactPoint">
        <meta property="name" content="Michael Stern" />
        <div>Phone:
            <span property="telephone">(540) 961-4469</span>
        </div>
        <div>
            <a property="email" href="mailto:michael.stern@writecorp.inc.agency.com">michael.stern@writecorp.inc.agency.com</a>
        </div>
    </div>
    <div property="memberOf">
        <div typeof="Organization">
            <span property="name">Writecorp Inc. agency</span>
        </div>
    </div>
</div>

<!-- the writer, me -->
<div vocab="http://schema.org/" typeof="Person">
    <link property="contactPoint" href="/Writecorp/MichaelStern#contact" />
    <span property="name">H. P. Lovecraft</span>
</div>

请注意,name上的ContactPoint属性是元标记,而不是普通的span元素。这是为了防止双重名称输出,同时为机器读者提供了一种仍然使用联系点名称填充其数据模型的方法。

RDFa 1.1 Distiller and Parser中的海龟输出:

@prefix ns1: <http://www.w3.org/ns/rdfa#> .
@prefix ns2: <http://schema.org/> .

<> ns1:usesVocabulary ns2: .

</Writecorp/MichaelStern> a ns2:Person;
    ns2:contactPoint </Writecorp/MichaelStern#contact>;
    ns2:memberOf """

            Writecorp Inc. agency

    """;
    ns2:name "Michael Stern" .

</Writecorp/MichaelStern#contact> a ns2:ContactPoint;
    ns2:email <mailto:michael.stern@writecorp.inc.agency.com>;
    ns2:name "Michael Stern";
    ns2:telephone "(540) 961-4469" .

[] a ns2:Person;
    ns2:contactPoint </Writecorp/MichaelStern#contact>;
    ns2:name "H. P. Lovecraft" .

[] a ns2:Organization;
    ns2:name "Writecorp Inc. agency" .

/ edit 7-5-2015:我提出了一个GitHub问题for this problem。当我了解更多内容时,我会更新这篇文章......