Вопрос

У меня есть следующие RDF:

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
   xmlns:ppl="http://www.blah.com/people#">

    <rdfs:Class rdf:ID="Person">
        <ppl:Name/>
        <ppl:LastName/>
    </rdfs:Class>

    <rdfs:Class rdf:ID="John">
        <rdfs:subClassOf rdf:resource="#Person"/>
        <ppl:name>John</ppl:name>
        <ppl:LastName>Smith</ppl:LastName>
    </rdfs:Class>
</rdf:RDF>

Это выглядит хорошо, но я хотел бы избежать возможности делать подклассоф Иоанна. Например, это не должно работать:

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
   xmlns:ppl="http://www.blah.com/people2#">

    <rdfs:Class rdf:ID="Person">
        <ppl:Name/>
        <ppl:LastName/>
    </rdfs:Class>

    <rdfs:Class rdf:ID="John">
        <rdfs:subClassOf rdf:resource="#Person"/>
        <ppl:name>John</ppl:name>
        <ppl:LastName>Smith</ppl:LastName>
    </rdfs:Class>

    <rdfs:Class rdf:ID="Peter">
        <rdfs:subClassOf rdf:resource="#John"/>
        <ppl:name>Peter</ppl:name>
        <ppl:LastName>Smith</ppl:LastName>
    </rdfs:Class>
</rdf:RDF>

Как я могу добавить это ограничение?

РЕДАКТИРОВАТЬ:

После Ответ Cygri Я попробовал другой подход:

<rdf:Description ID="John">
    <rdf:type rdf:resource="#Person"/>
    <ppl:name>John</ppl:name>
    <ppl:LastName>Smith</ppl:LastName>
</rdf:Description>

<rdf:Description ID="Peter">
    <rdf:type rdf:resource="#John"/>
    <ppl:name>Peter</ppl:name>
    <ppl:LastName>Smith</ppl:LastName>
</rdf:Description>

Но это все еще работает :(

Это было полезно?

Решение

Не уверен, что вы пытаетесь сделать. Ваше моделирование выглядит странно для меня, почему Джон класс? Джон должен быть человеком типа типа. (И вы не можете иметь подклассы отдельных лиц, поэтому изменение Иоанна в индивидуальный ответы на ваш вопрос о предотвращении подклассов тоже.)

Обновлено: RDF как таковой не мешает вам говорить бессмысленным вещам. Таким образом, вы все еще можете разобрать, сериализовать и запрашивать ваши данные, даже если он является ерундой. Но вы можете использовать проверку консистенции совы, чтобы подтвердить свою онтологию. В этом конкретном случае вы должны проверить онтологию в сове DL. (Сова DL - вариант совы, который вводит ограничение, что люди не могут иметь подклассы, среди прочего. В сове полно, это было бы разрешено, если вы не добавите ограничения, что Class класс несерьезно с Person сорт.

Другие советы

Вы все еще относитесь к Джону как класс. Вы хотите что-то вроде этого:

<rdf:RDF
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
   xmlns:ppl="http://www.blah.com/people#">

    <rdfs:Class rdf:ID="Person" />

    <rdf:Description rdf:ID="John">
        <rdf:type rdf:resource="#Person"/>
        <ppl:name>John</ppl:name>
        <ppl:LastName>Smith</ppl:LastName>
    </rdf:Description>

</rdf:RDF>

RDFS: SubClassOF и RDF: тип различных сортов отношений.

RDFS: подклассоф полезен для указания того, что, скажем, все люди млекопитающие, а все млекопитающие - животные.

RDF: тип используется для указания того, что, скажем, Джон - это человек (и Джон - млекопитающее и животное в этом отношении).

Для чего стоит, SemannoververFlow.com также является хорошим местом для запроса вопросов, связанных с RDF.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top