Представлять отношения человека / представителя или автора / агента с RDFa, schema.org и FOAF

Я немного запутался, как смоделировать отношения писатель-агент, используя RDFa (Lite), schema.org и FOAF. Я даже не уверен, что мне нужен FOAF.

Допустим, я издаю книгу, я писатель и агент. Итак, у нас есть два человека, один - я, а другой - агент. Чтобы уточнить, я намерен связать агента как контактную точку для автора, одновременно указав, что автор - это я, тема страницы:

<!-- 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>

<link> Решение, которое я почерпнул из /questions/25604825/kak-ustanovit-otnosheniya-mezhdu-uzlami-rdfa-lite/25604845#25604845.

Когда я передаю это в 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, Person не может быть contactPoint,

Решение?

Одно решение, предложенное ниже, состоит в том, чтобы иметь ContactPoint и Person, но валидатору Google, похоже, это не очень нравится.

Другое возможное решение состоит в том, чтобы агент и писатель указывали на одно и то же ContactPoint ресурс (см. /questions/9933597/predstavlyat-otnosheniya-cheloveka-predstavitelya-ili-avtora-agenta-s-rdfa-schemaorg-i-foaf/9933603#9933603).

Что касается rel="me" Это произошло из примера микроформатов и невозможно с schema.org (пока, как утверждает @unor в его ответе) или с foaf.


/ edit 7-5-2015: я поднял проблему GitHub для этой проблемы. Я обновлю этот пост, когда узнаю больше...

2 ответа

В то время как agent является свойством Schema.org, его домен Action (что вы, кажется, не намерены). И это не свойство FOAF и не зарегистрированный тип ссылки (поэтому его нельзя использовать в HTML5). Так что я думаю, что вам нужно найти подходящее свойство вместо этого.

me тип ссылки, а не свойство Schema.org или FOAF. Но как вы используете vocab синтаксический анализатор RDFa предполагает, что это свойство из словаря по умолчанию (в вашем случае, Schema.org). Я не уверен, действительно ли вы намереваетесь использовать его в качестве типа ссылки (как вы используете RDFa-способ для элементов без ссылок).

(Если предполагается использование типов ссылок, возможное решение заключается в использовании prefix вместо vocab, Таким образом, нефиксированные значения rel интерпретируются как типы ссылок, а префиксные значения - как свойства.)

Если использовать Schema.org, книга будет иметь тип Book, Вы были бы author этого Book,
Вы должны проверить доступные свойства для Book (если агент связан с вашей работой, а не с вашей личностью) или Person (или же Organization если это ваше дело) если Schema.org предлагает подходящее свойство для указания вашего агента. Ах, я пропустил, что агент должен быть ContactPoint, Теперь я сомневаюсь, что Schema.org предполагал, что этот тип может также относиться к организациям или лицам, но я думаю, ничто не мешает вам заявить, что что-то является ContactPoint и Organization,

относительно resource (или же about): Да, обычно лучше предоставлять URI для ваших сущностей, а не использовать пустые узлы. Таким образом, вы и другие лица можете делать заявления об этих объектах в том же или другом документе.

Таким образом, в идеале вы должны дать каждому объекту URI (включая себя, отличающийся от URI документа).

Например, на веб-странице http://example.com/lovecraft Вы могли бы иметь:

<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, ваша книга имеет URI 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) о вас (http://example.com/lovecraft#me), вы можете подождать Schema.org mainEntity свойство (включено в следующую версию) и / или использовать Schema.org's about собственность и / или использовать FOAF isPrimaryTopicOf собственность

Один из вариантов заключается в том, чтобы агент и писатель указывали на одно и то же 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 для этой проблемы. Я обновлю этот пост, когда узнаю больше...

Другие вопросы по тегам