Как используются пустые узлы в контексте понимания тройных операторов RDF? - PullRequest
0 голосов
/ 03 марта 2020

Я понимаю, что named node в RDF - это узел, который имеет имя (то есть может быть идентифицировано IRI), и что blank node - это узел, который не назван (т.е. не описан через IRI) .

Правильно ли говорить, что узел представляет ресурс в RDF? В этом случае и именованные, и пустые узлы будут считаться ресурсами.

Рассматривая схему RDF, я вижу ряд XML тегов, которые, по-видимому, представляют узлы (как пустые, так и именованные). Например:

<rdf:Description rdf:about="http://.../SomeObject">
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
    <rdfs:subClassOf rdf:resource="http://.../OtherClass"/>
    <rdfs:subClassOf rdf:nodeID="node1e2d5tndrx143"/>
</rdf:Description>

и

<rdf:Description rdf:nodeID="node1e2d5tndrx60">
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Datatype"/>
    <owl:oneOf rdf:nodeID="node1e2d5tndrx61"/>
</rdf:Description>

(и поскольку этот узел ссылается на другой пустой узел)

<rdf:Description rdf:nodeID="node1e2d5tndrx61">
    <rdf:type rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#List"/>
    <rdf:first>1</rdf:first>
    <rdf:rest rdf:nodeID="node1e2d5tndrx62"/>
</rdf:Description>

Мне кажется, что доступные ресурсы в эту конкретную конечную точку API входят эти три узла, один из которых называется http://www.w3.org/2001/XMLSchema#float, а два пустых (node1e2d5tndrx60, node1e2d5tndrx61)

Эта ссылка - https://lists.w3.org/Archives/Public/public-esw-thes/2004Nov/0061.html - по-видимому, старый w3.org по теме rdf:about против rdf:ID против rdf:nodeID упоминает, что пустые узлы указываются с помощью атрибута rdf:nodeID.

Если оба эти узла являются «ресурсами» в этой конкретной конечной точке API (я предполагаю, что это так - пожалуйста, дайте мне знать, если это неверно), насколько я знаю, я никогда не смогу запросить пустой узел напрямую, но в этом конкретном документе RDF пустые узлы используются для ограничить, какие объекты разрешены (через свойство rdf:range) для тройки, которая задает свойство / предикат hasObjectClass:

<rdf:Description rdf:about="http://.../hasSomeObjectClass">
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
    <rdfs:label>Some Object Class</rdfs:label>
    <rdfs:domain rdf:resource="http://..../SomeObject"/>
    <rdfs:range rdf:nodeID="node1e2d5tndrx60"/>
</rdf:Description>

Насколько я понимаю, тройки используют предикат: hasSomeObjectClass (<subj> <pred> <obj>) будет: * 10 36 *

  1. Включить / включить только те объекты, которые имеют rdf:type "SomeObject"
  2. Включить / включать только те объекты, которые имеют "подтип" пустого узла node1e2d5tndrx60

Наконец, в пустом узле node1e2d5tndrx60 я вижу, что есть ограничение owl - любой допустимый объект может рассматриваться как часть списка. Предположительно список объектов, которые разделяют определенный класс?

Вопрос

Глядя на свойство домена ресурса hasSomeObjectClass, я могу найти:

  1. Узел, который представляет SomeObject класс
  2. Многие узлы, которые имеют свойство rdfs:subClassOf и ссылаются на SomeObject в качестве ресурса

Так с точки зрения того, как разрешается тройная спецификация, в которой предикат определяет домен этого типа, я концептуально понимаю, как это можно применять / разрешать.

Однако я не вижу связи между пустым узлом и как ограничение диапазона может быть применено / разрешено. Легко ли объяснить на концептуальном уровне, как используются пустые узлы с точки зрения разрешения указанных троек?

Я очень, очень новичок в мире связанных данных. Пожалуйста, дайте мне знать, как можно улучшить этот вопрос!

1 Ответ

1 голос
/ 03 марта 2020

Пустые идентификаторы узлов - это локальные идентификаторы, а не IRI. Пустые узлы не пересекаются с IRI и литералами , как определено в спецификации RDF.

Несколько популярных приложений пустых узлов:

  1. Описание многокомпонентных структур, таких как списки, или группирование троек, например, когда объект с тройным существующим адресом , который идентифицируется не с помощью IRI, а с набором троек, описывающих его.
locn:address [
       rdf:type locn:Address ;
       locn:addressArea "Amsterdam"@en ;
       locn:fullAddress "Oudekerksplein 23"@en ;
       locn:postCode "1012 GX" .
     ] .

Это наиболее популярный способ обозначения пустых узлов, но они также могут быть обнаружены:

ex:AdddressDeOudeKerk locn:address _:b1 .
_:b1 rdf:type locn:Address .
_:b1 locn:addressArea "Amsterdam"@en .
_:b1 locn:fullAddress "Oudekerksplein 23"@en .
_:b1 locn:postCode "1012 GX" .

Заявления о заявлениях

2.1. С уточнением

2.2. Альтернативные подходы, например, используемый в Викиданных.

Например, в этом запросе

SELECT ?president ?presidentLabel ?image ?start
WHERE {
    ?president  wdt:P31 wd:Q5 ;      
         p:P39 [ ps:P39 wd:Q11696;
                 pq:P580 ?start ];
         wdt:P18 ?image .

   SERVICE wikibase:label {
           bd:serviceParam wikibase:language "en" .
   }

 }

p:P39 - это свойство для оператор"позиция удержана", в то время как ps:P39 соответствует значению "позиция удержана" Пробел не является таким оператором, который является значением (объектом) тройного шаблона ?president p:P39 ?statement для которых ?statement ps:P39 wd:Q11696 и ?statement pq:P580 ?start и для запроса конкретных характеристик c оператора, в данном случае «время начала» (с квалификатором pq:P580)

Анонимные классы в OWL Пример:
:Vegetarian rdf:type owl:Class ;
        owl:equivalentClass [ rdf:type owl:Restriction ;
                              owl:onProperty :eats ;
                              owl:allValuesFrom :Vegetable
                            ] .
Фигуры в SHACL Пример:
:Contract
  rdf:type sh:NodeShape ;
  sh:property [
      rdf:type sh:PropertyShape ;
      sh:path :hasParty ;
      sh:minCount 2 ;
      sh:name "has party" ;
    ] ;
  sh:targetSubjectsOf :hasParty ;
.
...