2015-09-20 3 views
2

Я хотел бы представить следующие соотношения с помощью RDF и ИСС:Правильное использование RDFS: subPropertyOf

"Оценка Technique" (AT) имеет свойство "оценочных характеристик" (AC). В базе данных это будет представлено двумя таблицами: одной для AT и другой AC, связанной с внешним ключом в AC, указывающим на первичный ключ в AT.

Так что я придумал до сих пор с помощью RDF и ИСС является следующие классы, которые бы представляли две таблицы:

ex:AssessmentTechnique rdfs:label "Assessment Technique" . 
ex:AssessmentCharacteristic rdfs:label "Assessment Characteristic" . 

Мой вопрос о конкретных characterstics в таблице переменного тока. Могут ли они быть - или они - правильно названы суб-свойствами hasAssessmentCharacteristics? Или должна ли каждая конкретная характеристика быть ее собственностью? Я попытался создать их в качестве под-свойств, но тогда диапазон hasAssessmentCharacteristics является классом, а свойства sub-properties обычно имеют тип xsd: string или xsd: int, и это противоречит правилу, что под-свойства имеют тот же домен и диапазон и родительское свойство. Таким образом, следующее неверно, хотя оно выражает намерение.

ex:hasAssessmentCharacteristics 
    rdf:type rdfs:Property; 
    rdfs:label "has Assessment Characteristics"; 
    rdfs:domain ex:AssessmentTechnique; 
    rdfs:range ex:AssessmentCharacteristics . 

ex:hasNumberOfItems 
    rdfs:subPropertyOf ex:hasAssessmentCharacteristics; 
    rdfs:label "has Number of Items"; 
    rdfs:domain ex:AssessmentTechnique; 
    rdfs:range xsd:int . 

Единственный способ, который я мог думать, делать это игнорировать тот факт, что каждый столбец из таблицы AC поставляется из тех же таблиц, и вместо того, чтобы иметь ряд операторов присваивания свойства как это:

ex:hasNumberOfItems 
    rdf:type rdfs:Property; 
    rdfs:domain ex:AssessmentTechnique; 
    rdfs:range xsd:int .  

ex:hasPublicAvailability 
    rdf:type rdfs:Property; 
    rdfs:domain ex:AssessmentTechnique; 
    rdfs:range xsd:string . 

ex:hasURL 
    rdf:type rdfs:Property; 
    rdfs:domain ex:AssessmentTechnique; 
    rdfs:range xsd:string . 

and so on.... 

Я вижу, что есть способы, чтобы иметь контейнеры в RDFS, но от моего чтения reference material, кажется, что это относится к птичников и куры, содержащиеся в нем и не способ сдерживания или сбора различных типы характеристик курицы (для расширения использования метапа Hor) к вещам, как

  • Анатомия
  • Диета
  • Поведение
  • и так далее ....

Так что, если я создать длинный список свойств без каких-либо " пометки ", чтобы они были организованы, я сделаю что-нибудь с комментариями. Но если есть способ организовать их с помощью rdf или rdfs или совы, то я был бы признателен, если кто-то укажет мне дорогу.

Пол

ответ

2

Мой вопрос касается конкретных символов в таблице переменного тока. Могут ли они быть - или они - правильно названы суб-свойствами hasAssessmentCharacteristics? Или должна ли каждая конкретная характеристика быть ее собственностью?

Не зная специфики вашей модели домена, ответ заключается в фактическом значении подзадачи. Свойство р подсвойство свойств д, когда именно:

                р (х, у) следует д (х, у)

Вот как подсвойство утверждения используются в умозаключений ИСС , Если одно свойство является подзадачностью другого, тогда всякий раз, когда вы видите использование первого, вы можете вывести другой. Так, например, hasDaughter является подзадачей hasChild, так как мы знаем, что если у кого-то есть x как дочь, тогда у них есть x в качестве ребенка.

Похоже, что вы хотите иметь свойство toplevel (упрощенные имена) hasCharacteristic и определить некоторые под-свойства, которые определяют индивидуальные характеристики. Там нет проблем. Например, мы можем, опираясь на личность, делать:

:hasCharacteristic a rdfs:Property . 

:hasHeightInInches rdfs:subPropertyOf :hasCharacteristics ; 
        rdfs:domain xsd:int . 

:hasName   rdfs:subPropertyOf :hasCharacteristic ; 
        rdfs:domain xsd:string . 

Вы правы в отношении доменов и диапазонов; если домены или диапазоны подпроцессов несовместимы, то вам нужно убедиться, что у вас есть достаточно распространенные суперклассы в супер-собственности или просто не объявляйте их вообще. В приведенном выше примере вы можете запросить все значения: hasCharacteristic для человека, и вы получите их имя и высоту в дюймах, и не будет никаких проблем с тем фактом, что вы получаете цифры и строки ,

Что касается доменов и диапазонов, помните, что свойство р, имеющий область Б просто означает, что:

                р (х, у) влечет Д (х)

и имеющий диапазон R означает, что:

                p (x, y) подразумевает R (y)

Одним из последствий этого является то, что домены и диапазоны «наследуются» по под-свойствам. Предположим, что p является подмножеством q и q имеет область D. Тогда из p (x, y) можно вывести q (x, y) (так как p является подмножеством q), и тогда мы можем заключить, что D (x) (так как D - область q). Это означает, что в моем примере выше, вы могли бы объявить общий домен на суперсвойство:

:hasCharacteristic a rdfs:Property ; 
        rdfs:domain :Person . 

:hasHeightInInches rdfs:subPropertyOf :hasCharacteristics ; 
        rdfs:domain xsd:int . 

:hasName   rdfs:subPropertyOf :hasCharacteristic ; 
        rdfs:domain xsd:string . 

Теперь, когда вы видите, например,

                hasName (х, у)

вы можете вывести эту дополнительную информацию:

                hasCharacteristic (х, у)
                Персона (х)
                XSD: строка (х)

0

Я попытался создать их как подсвойств, но диапазон hasAssessmentCharacteristics класс и те подсвойств, как правило, типа XSD: строка или XSD: INT, и это противоречит правилу, что под-свойства имеют тот же домен и диапазон, что и родительское свойство.

Ну тогда, почему бы не не определить диапазон hasAssesmentCharacteristics быть классом?

ex:hasAssessmentCharacteristics 
    rdf:type rdfs:Property; 
    rdfs:label "has Assessment Characteristics" . 

    ex:hasNumberOfItems 
    rdfs:subPropertyOf ex:hasAssessmentCharacteristics; 
    rdfs:label "has Number of Items"; 
    rdfs:domain ex:AssessmentTechnique; 
    rdfs:range xsd:int . 

Вышеуказанное прекрасно (и согласовано).

Единственный способ, который я мог думать, делать это игнорировать тот факт, что каждый столбец из таблицы AC поставляется из тех же таблиц, и вместо того, чтобы иметь ряд операторов присваивания свойства как это:

Вещь, с которой вы боретесь, на самом деле имеет фундаментальное значение для модели RDF: в отличие от многих других парадигм моделирования, свойства являются первоклассными гражданами. Свойство - это «вещь» в своем собственном праве, а не только атрибут класса (который не может существовать без класса) или столбец таблицы (который не может существовать без таблицы). Поэтому в какой-то степени следует ожидать, что определения свойств менее тесно связаны с классами.

Это означает, что ваша идея использовать отношение rdfs:subPropertyOf к объединению нескольких свойств абсолютно точно. Трюк заключается в том, чтобы просто быть очень сдержанным в определении доменов и диапазонов на высоком уровне.

Кстати, если вы перейдете от RDFS к более выразительному языку, например OWL, у вас будет немного больше контроля над этим типом вещей. OWL позволяет указать ограничения для доменов и диапазонов, специфичные для класса (хотя вы все еще не можете полностью «переопределить» домены и диапазоны родительских свойств). Независимо от того, стоит ли переходить на OWL (один из недостатков - иметь дело с более сложным языком и моделью данных), зависит от того, на что вы на самом деле собираетесь использовать модель.

Смежные вопросы