Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:miw:miw08_ard_rdf [2008/09/16 20:14]
miw
pl:miw:miw08_ard_rdf [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 ====== Opis ====== ====== Opis ======
 +__**Projekt zakończony**__
 +
 Rafał Szymczyk, <​raf.szymczyk@o2.pl>​ Rafał Szymczyk, <​raf.szymczyk@o2.pl>​
  
 Zapis ARD przy pomocy RDF w XSLT Zapis ARD przy pomocy RDF w XSLT
  
-====== Spotkania ====== +Historia [[pl:​miw:​miw08_ard_rdf:​spotkania|spotkań]]. 
-===== 08.03.04 =====+ 
 + 
  
-===== 08.03.18 ===== 
-  * repr atrybutów dla reguł RIF/OWL/RDF 
  
-===== 080401 ===== 
-  * missed 
  
-===== 080408 ===== 
-  * ??? 
  
-===== 080422 ===== 
-  * to co na 18.3.2008 
  
 ====== Projekt ====== ====== Projekt ======
-jak sensownie repr. ard w rdf? 
  
  
Linia 31: Linia 26:
  
  
 +===== RIF(Rule Interchange Format) =====
  
 +RIF jest stworzonym przez W3C [[http://​www.w3.org/​|(Word Wide Web Consorcium)]] formatem reguł pozwalających na ich wymianę dla różnych języków reguł w sieciach semantycznych (RDF, OWL). Format RIF jest ciągle w fazie rozwoju, jedyne dostępne dokumenty są to szkice specyfikacji poszczególnych modułów (Working Draft). Do rozwijanych dokumentów należą m.in. [[http://​www.w3.org/​2005/​rules/​wg/​draft/​rif-fld/​|RIF Framework for Logic Dialects ]] oraz [[http://​www.w3.org/​2005/​rules/​wg/​draft/​rif-bld/​|RIF Basic Logic Dialect]]
  
 +Dokładny opis specyfikacji RIF można znaleźć w projekcie [[https://​ai.ia.agh.edu.pl/​wiki/​pl:​miw:​miw08_xtt_rif|XTT_RIF]]. Z punktu widzenia projektu, jest wiedza jak zapisywać typowe dla reguł elementy tj:
  
 +  * wartosc logiczna: np: B
  
 +<code xml>
 +<Var> B </​Var>​
 +</​code>​
  
 +  * stałe argumenty: np: 300
  
 +<code xml>
 +<​arg><​Const type="​rds:​long">​ 300 </​Const></​arg>​
 +</​code>​
  
 +  * suma: n+1
  
 +<code xml>
 +<​Uniterm>​
 +<​op><​Const type="​rif:​iri">​ op:​numeric-add </​Const></​op>​
 +<​arg><​Const type="">​ 1 </​Const></​arg>​
 +<​arg><​Var>​ n </​Var></​arg>​
 +</​Uniterm>​
 +</​code>​
 +
 +  * różnica: n-1
 +
 +<code xml>
 +<​Uniterm>​
 +<​op><​Const type="​rif:​iri">​ op:​numeric-subtract </​Const></​op>​
 +<​arg><​Const type="">​ 1 </​Const></​arg>​
 +<​arg><​Var>​ n </​Var></​arg>​
 +</​Uniterm>​
 +</​code>​
 +
 +  * równość: (wyr_1) = (wartosc)
 +
 +<code xml>
 +<​Equal>​
 +<arg> wyr_1 </​arg>​
 +<arg> wartosc </​arg>​
 +</​Equal>​
 +</​code>​
 +
 +  * nierówność: ​ n > 0
 +
 +<code xml>
 +<​Uniterm>​
 +<​op><​Const type="​rif:​iri">​ op:​numeric-greater-than </​Const></​op>​
 +<​arg><​Var>​ n </​Var></​arg>​
 +<​arg><​Const type="​xsd:​decimal">​ 0 </​Const></​arg>​
 +</​Uniterm>​
 +</​code>​
 +
 +  * nierówność: ​ n <= 1
 +
 +<code xml>
 +<​Uniterm>​
 +<​op><​Const type="​rif:​iri">​ op:​numeric-less-or-equal-than </​Const></​op>​
 +<​arg><​Var>​ n </​Var></​arg>​
 +<​arg><​Const type="​xsd:​decimal">​ 0 </​Const></​arg>​
 +</​Uniterm>​
 +</​code>​
 +
 +  * suma logiczna : (wyr_1) and (wyr_2)
 +
 +<code xml>
 +<And>
 +<​formula>​
 +(wyr_1)
 +</​formula> ​
 +<​formula>​
 +(wyr_2)
 +</​formula>​
 +</​And>​
 +</​code>​
 +
 +  * warunek if : (conclusion) if (conditions)
 +
 +<code xml>
 +<​Implies>​
 +<if>
 +(conditions)
 +</if>
 +<​then>​
 +(conclusion)
 +</​then>​
 +</​Implies>​
 +</​code>​
 +
 +Teraz, na podstawie powyższej wiedzy, możemy spróbować zapisać za pomocą RIF przykład: ​
 +<code xml>
 +Rule: 1   
 +if     the day is Monday ​
 +or     the day is Tuesday ​ or     the day is Wednesday ​
 +or     the day is Thursday or     the day is Friday ​
 +then   today is a workday
 +</​code>​
 +
 +Wygląda on następująco:​
 +<code xml>
 +<?xml version="​1.0"​ encoding="​UTF-8"?>​
 +<Group xmlns="​http://​www.w3.org/​2007/​rif#">​
 + <​sentence>​
 +  <​Implies>​
 +   <​if>​
 +    <Or>
 +     <​formula>​
 +      <​Equal>​
 +       <​side><​Var>​dayofweek</​Var></​side>​
 +       <​side><​Const type="​xsd:​string">​Monday</​Const></​side>​
 +      </​Equal>​
 +     </​formula>​
 +     <​formula>​
 +      <​Equal>​
 +       <​side><​Var>​dayofweek</​Var></​side>​
 +       <​side><​Const type="​xsd:​string">​Tuesday</​Const></​side>​
 +      </​Equal>​
 +     </​formula>​
 +     <​formula>​
 +      <​Equal>​
 +       <​side><​Var>​dayofweek</​Var></​side>​
 +       <​side><​Const type="​xsd:​string">​Wednesday</​Const></​side>​
 +      </​Equal>​
 +     </​formula>​
 +     <​formula>​
 +      <​Equal>​
 +       <​side><​Var>​dayofweek</​Var></​side>​
 +      <​side><​Const type="​xsd:​string">​Thursday</​Const></​side>​
 +       </​Equal>​
 +     </​formula>​
 +     <​formula>​
 +      <​Equal>​
 +       <​side><​Var>​dayofweek</​Var></​side>​
 +       <​side><​Const type="​xsd:​string">​Friday</​Const></​side>​
 +      </​Equal>​
 +     </​formula>​
 +    </Or>
 +   </​if>​
 +   <​then>​
 +    <​Atom>​
 +     <​op><​Const type="​rif:​iri">​thrm:​is-workday</​Const></​op>​
 +     <​arg><​Var>​dayofweek</​Var></​arg>​
 +    </​Atom>​
 +   </​then>​
 +  </​Implies>​
 + </​sentence>​
 +</​Group>​
 +</​code>​
  
 +W analogiczny sposób możemy zapisać większość reguł. Przykładem może być tu całość [[https://​ai.ia.agh.edu.pl/​wiki/​hekate:​hekate_case_thermostat|HeKatE Case Thermostat]] którego reguły przedstawione w RIF wyglądają nastepująco:​ [[https://​ai.ia.agh.edu.pl/​wiki/​pl:​miw:​miw08_xtt_rif:​thermostat|therm in RIF]].
  
  
Linia 216: Linia 356:
          ​rdfs:​label "?​c"​ .          ​rdfs:​label "?​c"​ .
 </​code>​ </​code>​
-The identity (uniqueness) of a variable is bound to the resource that represents it, not to its name. The variable name may be used (in conjunction with scoping rules) as a syntactic device for deciding which variable occurrences refer to the same variable, and hence which at any instant or invocation must correspond to the same value. Occurrences of the same variable name within a rule is an example of multiple occurrences of the same variable. + 
- +
- +
 Linki: Linki:
  
Linia 232: Linia 369:
  
  
-=====ARD w RDF===== 
  
-Proponaowane rozwiązanie:​ 
  
-<code xml> 
-<?xml version="​1.0"?>​ 
-<rdf:RDF 
-xmlns:​rdf="​http://​www.w3.org/​1999/​02/​22-rdf-syntax-ns#"​ 
-xmlns:​rdfs="​http://​www.w3.org/​2000/​01/​rdf-schema#"​ 
-xml:​base="​http://​example.org"​ 
-> 
- <​rdf:​Description rdf:​ID="​ard:​Attribute">​ 
- <​rdf:​type rdf:​resource="​http://​www.w3.org/​2000/​01/​rdf-schema#​Class"/>​ 
- </​rdf:​Description>​ 
-  
- <​rdf:​Property rdf:​ID="​ard:​Property">​ 
- <​rdfs:​domain rdf:​resource="#​ard:​Attribute1"/>​ 
- <​rdfs:​range rdf:​resource="#​ard:​Attribute2"/>​ 
- </​rdf:​Property>​ 
-  
-</​rdf:​RDF>​ 
-</​code>​ 
  
-i przykład: 
  
-<code xml> 
-<?xml version="​1.0"?>​ 
-<rdf:RDF 
-xmlns:​rdf="​http://​www.w3.org/​1999/​02/​22-rdf-syntax-ns#"​ 
-xmlns:​rdfs="​http://​www.w3.org/​2000/​01/​rdf-schema#"​ 
-xml:​base="​http://​example.org"​ 
-> 
- <​rdf:​Description rdf:​ID="​Thermostat">​ 
- <​rdf:​type rdf:​resource="​http://​www.w3.org/​2000/​01/​rdf-schema#​Class"/>​ 
- </​rdf:​Description>​ 
-  
- <​rdfs:​Class rdf:​ID="​Time">​ 
- <​rdfs:​subClassOf rdf:​resource="#​Thermostat"/>​ 
- </​rdfs:​Class>​ 
  
- <​rdf:​Property rdf:​ID="​is_attribute_of">​ 
- <​rdfs:​domain rdf:​resource="#​Time"/>​ 
- <​rdfs:​range rdf:​resource="#​Thermostat"/>​ 
- </​rdf:​Property>​ 
-</​rdf:​RDf>​ 
-</​code>​ 
- 
-Poniżej przedstawiono inny przykład zapisu ARD w RDF za pomocą biblioteki DublinCore: 
-<code xml> 
-<?xml version="​1.0"?>​ 
-<rdf:RDF 
-  xmlns:​rdf="​http://​www.w3.org/​TR/​WD-rdf-syntax#"​ 
-  xmlns:​dc="​http://​purl.org/​dc/​elements/​1.0/"​ 
-  xmlns:​dcq="​http://​purl.org/​dc/​qualifiers/​1.0/">​ 
-  <​rdf:​Description about="​http://​www.thermostat.org/​Thermostate">​ 
-    <​dc:​Relation>​ 
-      <​rdf:​Description>​ 
-        <​dcq:​RelationType 
-   rdf:​resource="​http://​purl.org/​dc/​vocabularies/​RelationTypes/​v1.0/​IsReferencedBy"/>​ 
-        <​rdf:​value resource="​http://​www.thermostat.org/​Time"/>​ 
-      </​rdf:​Description>​ 
-    </​dc:​Relation>​ 
-    <​dc:​Relation>​ 
-      <​rdf:​Description>​ 
-        <​dcq:​RelationType 
-   rdf:​resource="​http://​purl.org/​dc/​vocabularies/​RelationTypes/​v1.0/​IsReferencedBy"/>​ 
-        <​rdf:​value resource="​http://​www.thermostat.org/​Temperature"/>​ 
-      </​rdf:​Description>​ 
-  </​rdf:​Description>​ 
-</​rdf:​RDF>​ 
-</​code>​ 
  
  
Linia 312: Linia 383:
 właściwości pojęć i relacji. właściwości pojęć i relacji.
  
-[[https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_hml_rules:owl:syntax|Charakterystyka ​zyka OWL]]+Zasadnicza część ontologii składa sie z definicji klas, relacji oraz ich przykładów. Przykładem prostej definicji pojęcia (klasy) jest następująco zdefiniowany termin ‘giraffe’:​ 
 +<code xml> 
 +<​owl:​Class rdf:ID="​giraffe"​/
 +</code> 
 +Z przytoczonej definicji wynika, że zbiór bytów będących przykładami pojęcia o identyfikatorze ‘giraffe’ jest podzbiorem predefiniowanego uniwersum bytów o nazwie ‘thing’Za pomocą atrybutu rdf:about można wprowadzić rozszerzenia do istniejących definicji:​ 
 +<code xml> 
 +<​owl:​Class rdf:​about="​giraffe">​ 
 +    <​rdfs:​subClassOf rdf:​resource="​Animal"/>​ 
 +</​owl:​Class>​ 
 +</​code>​ 
 +Powyższe związki można wyrazić jednostopniowo za pomocą następującej definicji, która dodatkowo zawiera etykietę umożliwiającą nazwanie definiowanej klasy bytów po polsku: 
 +<code xml> 
 +<​owl:​Class rdf:​ID="​giraffe">​ 
 +    <​rdfs:​subClassOf rdf:​resource="​Animal"/> ​  
 +    <​rdfs:​label xml:​lang="​pl">​żyrafa</​rdfs:​label>​ 
 +</​owl:​Class>​ 
 +</​code>​ 
 +Załóżmy, że ‘Zeta’ jest imieniem pewnej żyrafyW sensie ontologicznym,​ ‘Zeta’ jest przykładem pojęcia ‘giraffe’,​ o czym orzeka następujące zdanie: 
 +<code xml> 
 +<giraffe rdf:​ID="​Zeta"/>​ 
 +</​code>​ 
 +W języku OWL występują dwie kategorie relacji binarnych: zachodzących pomiędzy elementami klas (tzwObjectProperty) oraz definiujących związki pomiędzy elementami klas i danymi innych typów (DatatypeProperty - wydaje się, że te drugie zręczniej byłoby traktować jako atrybuty klas).Przykładem relacji definiującej wartość atrybutu “wiek” pewnego typu obiektów jest BE_IN_STATE/age, definiowana jako relacja kategorii DatatypeProperty,​ której zakresem są liczby całkowite nieujemne zdefiniowane jako typ w schemacie XML: 
 +<code xml> 
 +<​owl:​DatatypeProperty rdf:​ID="​BE_IN_STATE/age">​  
 +    <rdfs:range rdf:resource="&​xsd;​NonNegativeInteger"/>​ 
 +</​owl:​DatatypeProperty>​ 
 +</​code>​ 
 +Ciekawym mechanizmem,​ wynikających ze stosowania logik deskrypcyjnych,​ jest możliwość tworzenia klas poprzez nakładanie więzów na relacje. Na przykład, można zdefiniować klasę zawierającą wyłącznie (AllValuesFrom) lub również (SomeValuesFrom) elementy będące częściami wskazanych obiektów. Ta nowa klasa powstanie poprzez ograniczenie zakresu relacji “posiadania całości”. Szczególnym rodzajem więzu jest hasValue umożliwiający tworzenie zabioru elementów mających pewną określoną,​ pojedynczą wartość jako zakres relacji - na przykład słonie, poza tym, że są roślinożercami,​ są także zwierzętami o szarym kolorze skóry (indiwiduum określające kolor szary jest zakresem relacji BE_IN_STATE/​colour): 
 +<code xml> 
 +<owl:Class rdf:​ID="​elephant">​ 
 +    <​rdfs:​subClassOf rdf:​resource="#​herbivore"/> ​  
 +    <​rdfs:​subClassOf>​ 
 +        <​owl:​Restriction>​ 
 +             <​owl:​onProperty rdf:​resource="​BE_IN_STATE/​colour"/>​ 
 +             <​owl:​hasValue rdf:​resource="#​grey"/>​ 
 +        </​owl:​Restriction>​ 
 +    </​rdfs:​subClassOf>​ 
 +</​owl:​Class>​ 
 +</​code>​ 
 +Można także nakładać ograniczenia na liczbę elementów powiązanych za pomocą wskazanej relacji. Istnieją trzy warianty takich więzów: liczba maksymalna (maxCordinality),​ minimalna (minCordinality) i dokładna (Cordinality). W dotychczasowych definicjach pojęć posługiwaliśmy się tzw. “klasami prostymi”. Język OWL umożliwia tworzenie złożonych wyrażeń klasowych (ang. class expression),​ w których znajdują zastosowanie operatory mnogościowe:​ sumy (unionOf), przecięcia (intersectionOf),​ dopełnienia (complementOf),​ a także operatory ekstensjonalnego tworzenia skończonych zbiorów (oneOf) i operator wskazania rozłączności zbiorów (disjointWith)  
 + 
 +Przykładem zastosowania operatora tworzenia zbioru (pojęcie grey_colour) przez wyliczenie jego elementów może być definicja jednoelementowej klasy zawierającej indywiduum reprezentujące kolor szary: 
 + 
 +<code xml> 
 +<​owl:​Class rdf:​ID="​grey_colour">​ 
 +    <​owl:​oneOf rdf:​parseType="​Collection">​ 
 +         <​owl:​Thing rdf:​about="#​grey"/>​ 
 +    </​owl:​oneOf>​ 
 +</​owl:​Class>​ 
 +  
 +<​grey_colour rdf:​ID="#​grey"/>​ 
 +</​code>​ 
 +zyku OWL można wskazywać zachodzenie związków pomiędzy wskazanymi parami indywiduów:​ jeśli Azja jest przykładem pojęcia kontynent, a Indie są przykładem pojęcia kraj oraz założymy, że kraje są częściami kontynentów,​ to możemy użyć relacji HAS_HOLO_PART do powiązania rozważanych indywiduów:​ 
 +<code xml> 
 +<​continent rdf:​ID="​Asia"/>​ 
 +  
 +<country rdf:​ID="​India">​ 
 +    <​HAS_HOLO_PART rdf:​resource="#​Asia"/>​ 
 +</​country>​ 
 +</​code>​ 
 +Język OLW udostępnia również echanizmy equivalentClass i equivalentProperty do wskazania równoważności,​ odpowiednio,​ pojęć i relacji oraz mechanizm sameIndividualAs,​ umożliwiający utożsamianie przykładów pojęć. W odniesieniu do indywiduów,​ istnieje również odwrotna do omówionej możliwości rozróżniania przykładów pojęć za pośrednictwem differentIndividualFrom.
  
 Ponieważ OWL posiada pewne ograniczenia - nie można uchwycić złożonych relacji pomiędzy zdefiniowanymi właściwościami (chociażby ogólnie znany przykład "​uncle"​) - powstała idea rozszerzenia OWL'a o pewne formy regułowe przy jednoczesnym zachowaniu maksymalnej kompatybilności z istniejącą składnią i semantyką OWL.  Ponieważ OWL posiada pewne ograniczenia - nie można uchwycić złożonych relacji pomiędzy zdefiniowanymi właściwościami (chociażby ogólnie znany przykład "​uncle"​) - powstała idea rozszerzenia OWL'a o pewne formy regułowe przy jednoczesnym zachowaniu maksymalnej kompatybilności z istniejącą składnią i semantyką OWL. 
Linia 435: Linia 566:
 </​code>​ </​code>​
  
-Przykład zapisu zdania ​jeżeli dzień=poniedziałek wtedy temp=20st za pomocą SWRL:+ 
 + 
 + 
 + 
 + 
 + 
 + 
 +=====ARD w RDF===== 
 + 
 +W ARD występują dwa rodzaje elementówatrybuty (attributes) i właściwości (properties). Aby zapisać ARD w RDF należało zachować relacji jakie zachodzą między atrybutami a ich właściwośćiami. ​   
 + 
 +Proponowane rozwiązanie:
  
 <code xml> <code xml>
-monday(?day) -> temp(20)  ​+<?xml version="​1.0"?>​ 
 +<​rdf:​RDF 
 +xmlns:​rdf="​http://​www.w3.org/​1999/​02/​22-rdf-syntax-ns#"​ 
 +xmlns:​rdfs="​http://​www.w3.org/​2000/​01/​rdf-schema#"​ 
 +xml:​base="​http://​example.org"​ 
 +
 + <​rdf:​Description rdf:​ID="​ard:​Attribute">​ 
 + <​rdf:​type rdf:​resource="​http://​www.w3.org/​2000/​01/​rdf-schema#​Class"/>​ 
 + </​rdf:​Description>​ 
 +  
 + <​rdf:​Property rdf:​ID="​ard:​Property">​ 
 + <​rdfs:​domain rdf:​resource="#​ard:​Attribute1"/>​ 
 + <​rdfs:​range rdf:​resource="#​ard:​Attribute2"/>​ 
 + </​rdf:​Property>​ 
 +  
 +</​rdf:​RDF>
 </​code>​ </​code>​
  
-składni XML:+gdzie za pomocą  
 +<code xml> 
 +<​rdf:​Description rdf:​ID="​ard:​Attribute">​ 
 + <​rdf:​type rdf:​resource="​http://​www.w3.org/​2000/​01/​rdf-schema#​Class"/>​ 
 + </​rdf:​Description>​ 
 +</​code>​ 
 +zapisywane są atrybuty posiadające odpowiadające im asnośći jak na przykład:​ 
 +<code xml> 
 +<?xml version="​1.0"?>​ 
 +<​rdf:​RDF 
 +xmlns:​rdf="​http://​www.w3.org/​1999/​02/​22-rdf-syntax-ns#"​ 
 +xmlns:​rdfs="​http://​www.w3.org/​2000/​01/​rdf-schema#"​ 
 +xml:​base="​http://​example.org"​ 
 +
 + <​rdf:​Description rdf:​ID="​Thermostat">​ 
 + <​rdf:​type rdf:​resource="​http://​www.w3.org/​2000/​01/​rdf-schema#​Class"/>​ 
 + </​rdf:​Description>​ 
 +  
 + <​rdfs:​Class rdf:​ID="​Time">​ 
 + <​rdfs:​subClassOf rdf:​resource="#​Thermostat"/>​ 
 + </rdfs:Class>
  
 + <​rdf:​Property rdf:​ID="​is_attribute_of">​
 + <​rdfs:​domain rdf:​resource="#​Time"/>​
 + <​rdfs:​range rdf:​resource="#​Thermostat"/>​
 + </​rdf:​Property>​
 +</​rdf:​RDf>​
 +</​code>​
 + 
 +Innym podejśćiem do problemu zapisu ARD w RDF może byc użycie biblioteki DublinCore. Poniżej przedstawiono próbę takiego zapisu:
 <code xml> <code xml>
-<owlx:Rule+<?xml version="​1.0"?>​ 
-    <owlr:antecedent+<rdf:RDF 
-        <owlr:individualPropertyAtom owlr:property="monday">​ +  xmlns:​rdf="​http://​www.w3.org/​TR/​WD-rdf-syntax#"​ 
-            <owlr:​Variable owlr:name="day"/>​ +  xmlns:​dc="​http://​purl.org/​dc/​elements/​1.0/"​ 
-        </owlr:individualPropertyAtom+  xmlns:​dcq="​http://​purl.org/​dc/​qualifiers/​1.0/">​ 
-    </owlr:antecedent+  <​rdf:​Description about="​http://​www.thermostat.org/​Thermostate"​
-    <owlr:consequent+    <dc:​Relation>​ 
-        <owlr:datavaluedPropertyAtom owlr:property="temp">​ +      <rdf:Description
-            <owlx:​DataValue ​rdf:datatype="&xsd:integer">20</owlx:​DataValue+        <dcq:RelationType 
-        </owlr:datavaluedPropertyAtom+   rdf:resource="http://​purl.org/​dc/​vocabularies/​RelationTypes/​v1.0/​IsReferencedBy"/
-    </owlr:consequent+        <rdf:value resource="http://​www.thermostat.org/​Time"/>​ 
-</owlx:Rule>+      </rdf:Description
 +    </dc:Relation
 +    <dc:Relation>​ 
 +      <​rdf:​Description
 +        <dcq:RelationType 
 +   rdf:resource="http://​purl.org/​dc/​vocabularies/​RelationTypes/​v1.0/​IsReferencedBy"/
 +        <rdf:value resource="http://​www.thermostat.org/​Temperature"/>​ 
 +      </rdf:Description
 +  </rdf:Description
 +</rdf:RDF>
 </​code>​ </​code>​
 +W przypadu tego typu zapisu trudno mi wybrać odpowiedni typ relacji. Bibliotek DublinCore udostępnia wyłącznie relacje typu:
 +<code xml>
 +Is Version Of | Has Version | Is Replaced By | Replaces | Is Required By | Requires | Is Part Of |
 +Has Part | Is Referenced By | References | Is Format Of | Has Format
 +</​code>​
 +Nie posiadam natomiast wiedzy, czy istnieje możliwość definiowania własnej relacji. Jeżeli istaniałaby taka możliwość zupełnie słusznym byłoby zdefiniowanie relacji //Is Attribute Of //oraz relacji zwrotnej //Has Attribute//​. ​
 +
 +
  
  
  
  
-====== Sprawozdanie ====== 
  
  
pl/miw/miw08_ard_rdf.1221588876.txt.gz · ostatnio zmienione: 2019/06/27 15:58 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0