├── .github └── workflows │ └── ci.yml ├── .gitignore ├── Cargo.toml ├── LICENSE-APACHE ├── LICENSE-MIT ├── README.md ├── examples ├── parse.rs └── triples.rs ├── rust-toolchain.toml ├── src ├── lib.rs └── triple_production.rs └── tests ├── parse_examples.rs ├── reference_examples ├── example1.ttl ├── example10.ttl ├── example11.ttl ├── example12.ttl ├── example13.ttl ├── example14.ttl ├── example15.ttl ├── example16.ttl ├── example17.ttl ├── example18.ttl ├── example19.ttl ├── example2.ttl ├── example20.ttl ├── example21.ttl ├── example22.ttl ├── example23.ttl ├── example24.ttl ├── example25.ttl ├── example26.ttl ├── example3.ttl ├── example4.ttl ├── example5.ttl ├── example6.ttl ├── example7.ttl ├── example8.ttl └── example9.ttl ├── roundtrip_examples.rs ├── triple_production_examples.rs └── wildtype_examples ├── bibo.ttl ├── blank_node_object_dot.ttl ├── dublin_core_elements.ttl ├── example12_only_decimal.ttl ├── example12_only_double.ttl ├── example12_only_integer.ttl ├── example1_without_a.ttl ├── example24_simple1.ttl ├── example24_simple2.ttl ├── foaf_mirror.ttl ├── leading_whitespace_base.ttl ├── leading_whitespace_prefix.ttl ├── nested_lists.ttl ├── nested_lists2.ttl ├── owl.ttl ├── rdf.ttl └── rdfs.ttl /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | on: [push, pull_request] 2 | 3 | name: Continuous integration 4 | 5 | jobs: 6 | test: 7 | name: Test Suite 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v2 11 | - uses: actions-rs/toolchain@v1 12 | with: 13 | profile: minimal 14 | # Should be kept in sync with MSRV specified in Cargo.toml 15 | toolchain: 1.65.0 16 | override: true 17 | - uses: actions-rs/cargo@v1 18 | with: 19 | command: test 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | Cargo.lock 3 | 4 | .idea 5 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "harriet" 3 | version = "0.3.1" 4 | edition = "2018" 5 | description = "Parser for the Turtle (RDF) format" 6 | license = "MIT OR Apache-2.0" 7 | authors = ["Maximilian Goisser "] 8 | repository = "https://github.com/field33/harriet" 9 | documentation = "https://docs.rs/harriet" 10 | keywords = ["parser", "ast", "turtle", "rdf", "semantic-web"] 11 | categories = ["parser-implementations"] 12 | rust-version = "1.65.0" 13 | 14 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 15 | 16 | [dependencies] 17 | cookie-factory = "0.3" 18 | either = "1.6" 19 | nom = { version = "7", features = ["alloc"]} 20 | anyhow = "1" 21 | snowflake = "1" 22 | oxiri = "0.2.2" 23 | 24 | [dev-dependencies] 25 | pretty_assertions = "1.2" 26 | -------------------------------------------------------------------------------- /LICENSE-APACHE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | -------------------------------------------------------------------------------- /LICENSE-MIT: -------------------------------------------------------------------------------- 1 | MIT LICENSE 2 | 3 | Copyright (c) 2021 The harriet Project Developers 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Harriet 2 | =========================== 3 | 4 | [github](https://github.com/field33/harriet) 5 | [crates.io](https://crates.io/crates/harriet) 6 | [docs.rs](https://docs.rs/harriet) 7 | 8 | Harriet is a parser for the [Turtle][turtle] document format, which is a format 9 | "that allows an [RDF][rdf-wiki] graph to be completely written in a compact and natural text form". 10 | 11 | ## Installation 12 | 13 | Add harriet to your project (assuming [cargo-edit][cargo-edit] is installed) via: 14 | ```bash 15 | cargo add harriet 16 | ``` 17 | 18 | ## Goals 19 | 20 | - Provide a direct 1:1 AST mapping of a Turtle document 21 | - Provide abilities to easily navigate and edit the AST 22 | - Preserve the format: Parsing a document and then writing it, should yield the input document, including all whitespace and comments 23 | 24 | ## Non-Goals 25 | 26 | - The main `harriet` crate doesn't aim to produce a RDF graph via interpreting the contents of a document. 27 | This is left to optional crates, that convert the AST into a specific RDF representation (e.g. `rdftk`) 28 | 29 | ## Contributing 30 | 31 | We are happy about any contributions! 32 | 33 | To get started you can take a look at our [Github issues](https://github.com/field33/harriet/issues). 34 | 35 | Unless you explicitly state otherwise, any contribution intentionally 36 | submitted for inclusion in the work by you, as defined in the Apache-2.0 37 | license, shall be dual licensed as below, without any additional terms or 38 | conditions. 39 | 40 | ## License 41 | 42 | Licensed under either of 43 | 44 | * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) 45 | * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) 46 | 47 | at your option. 48 | 49 | [turtle]: https://www.w3.org/TR/turtle/ 50 | [rdf-wiki]: https://en.wikipedia.org/wiki/Resource_Description_Framework 51 | [cargo-edit]: https://github.com/killercup/cargo-edit -------------------------------------------------------------------------------- /examples/parse.rs: -------------------------------------------------------------------------------- 1 | use harriet::{ParseError, TurtleDocument}; 2 | 3 | pub fn main() { 4 | let ontology = std::fs::read_to_string( 5 | &std::env::args() 6 | .nth(1) 7 | .expect("Expected path to .ttl file as first argument"), 8 | ) 9 | .unwrap(); 10 | let result = TurtleDocument::parse_full(&ontology); 11 | if let Err(ParseError::NotFullyParsed(remainder)) = result { 12 | dbg!(remainder); 13 | println!("======================================="); 14 | println!("================= WARNING ============="); 15 | println!("======================================="); 16 | println!("=== file has not been parsed to end ==="); 17 | println!("======================================="); 18 | std::process::exit(1); 19 | } 20 | dbg!(result); 21 | } 22 | -------------------------------------------------------------------------------- /examples/triples.rs: -------------------------------------------------------------------------------- 1 | use harriet::TurtleDocument; 2 | use harriet::triple_production::TripleProducer; 3 | 4 | pub fn main() { 5 | let ontology = std::fs::read_to_string( 6 | &std::env::args() 7 | .nth(1) 8 | .expect("Expected path to .ttl file as first argument"), 9 | ) 10 | .unwrap(); 11 | let document = TurtleDocument::parse_full(&ontology).unwrap(); 12 | dbg!(TripleProducer::produce_for_document(&document)); 13 | } 14 | -------------------------------------------------------------------------------- /rust-toolchain.toml: -------------------------------------------------------------------------------- 1 | [toolchain] 2 | # MSRV is 1.65.0 according to Cargo.toml - This may specify a newer version for e.g. performance improvements 3 | channel = "1.65.0" 4 | -------------------------------------------------------------------------------- /src/triple_production.rs: -------------------------------------------------------------------------------- 1 | use crate::{ 2 | BlankNode, BlankNodeLabel, Collection, Directive, IRIReference, Literal, NumericLiteral, 3 | Object, PredicateObjectList, Statement, Subject, Triples, TurtleDocument, Verb, IRI, 4 | }; 5 | use anyhow::{anyhow, bail, Context, Error}; 6 | use either::Either; 7 | use oxiri::Iri; 8 | use snowflake::ProcessUniqueId; 9 | use std::borrow::Cow; 10 | use std::collections::HashMap; 11 | 12 | /// A triple producer, produces is able to produce a stream of RDF Triples based on a parsed Turtle document. 13 | /// 14 | /// See 15 | #[derive(Debug)] 16 | pub struct TripleProducer; 17 | 18 | #[derive(Debug, Default)] 19 | struct ProducerState<'a> { 20 | /// Tracks the current base URI. 21 | base_uri: Option>, 22 | /// Tracks the current namespaces (= prefix to prefix-URI mapping). 23 | namespaces: HashMap, 24 | /// Tracks the current set of blank node labels. 25 | blank_node_labels: HashMap, 26 | /// Tracks the current production subject. 27 | current_subject: Option>, 28 | /// Tracks the current production predicate. 29 | current_predicate: Option>, 30 | } 31 | 32 | impl TripleProducer { 33 | pub fn produce_for_document<'a>( 34 | document: &TurtleDocument<'a>, 35 | ) -> Result>, Error> { 36 | let mut state = ProducerState::default(); 37 | let mut triples: Vec = vec![]; 38 | 39 | for statement in document.statements.clone() { 40 | match statement { 41 | Statement::Directive(directive) => state.apply_directive(directive)?, 42 | Statement::Triples(stmt_triples) => { 43 | // Reset the subject; Shouldn't be necessary, but maybe keeps a few bugs out. 44 | state.current_subject = None; 45 | state.current_predicate = None; 46 | match stmt_triples { 47 | Triples::Labeled(_, subject, predicate_object_list) => { 48 | match subject { 49 | Subject::IRI(iri) => state 50 | .set_current_subject(RdfSubject::IRI(state.convert_iri(iri)?)), 51 | Subject::BlankNode(blank_node) => { 52 | let current_blank_node = match blank_node { 53 | BlankNode::Anonymous(_) => state.allocate_blank_node(), 54 | BlankNode::Labeled(labled) => { 55 | state.allocate_labeled_blank_node(labled) 56 | } 57 | }; 58 | state.set_current_subject(RdfSubject::BlankNode( 59 | current_blank_node, 60 | )) 61 | } 62 | Subject::Collection(_) => { 63 | // TODO 64 | Err(anyhow!( 65 | "Collections are not supported in TripleProducer yet." 66 | ))?; 67 | } 68 | } 69 | Self::produce_predicate_object_list( 70 | &mut state, 71 | &mut triples, 72 | predicate_object_list, 73 | )?; 74 | } 75 | Triples::Blank(_, _, _) => { 76 | // TODO 77 | bail!("Production of triple statements with blankNodePropertyList as subject not supported yet.") 78 | } 79 | } 80 | } 81 | } 82 | } 83 | 84 | Ok(triples) 85 | } 86 | 87 | fn produce_predicate_object_list<'a>( 88 | state: &mut ProducerState<'a>, 89 | mut triples: &mut Vec>, 90 | predicate_object_list: PredicateObjectList<'a>, 91 | ) -> Result<(), Error> { 92 | for (_, verb, object_list, _) in predicate_object_list.list { 93 | state.set_current_predicate(state.convert_verb(verb)?); 94 | for (_, _, object) in object_list.list { 95 | let rdf_object = Self::produce_object(state, triples, object)?; 96 | state.produce_triple(&mut triples, rdf_object)?; 97 | } 98 | } 99 | Ok(()) 100 | } 101 | 102 | fn produce_object<'a>( 103 | state: &mut ProducerState<'a>, 104 | triples: &mut Vec>, 105 | object: Object<'a>, 106 | ) -> Result, Error> { 107 | Ok(match object { 108 | Object::IRI(iri) => RdfObject::IRI(state.convert_iri(iri)?), 109 | Object::Literal(literal) => match literal { 110 | Literal::RDFLiteral(rdf_literal) => RdfObject::Literal(RdfLiteral { 111 | lexical_form: Cow::Owned( 112 | rdf_literal 113 | .string 114 | .lexical_form() 115 | .map_err(|e| anyhow!(e.to_owned())) 116 | .unwrap(), 117 | ), 118 | datatype_iri: rdf_literal 119 | .iri 120 | .map(|n| state.convert_iri(n)) 121 | .transpose()? 122 | .or(Some(iri_constants::XSD_STRING)), 123 | language_tag: rdf_literal.language_tag, 124 | }), 125 | Literal::BooleanLiteral(boolean_literal) => RdfObject::Literal(RdfLiteral { 126 | lexical_form: Cow::Borrowed(match boolean_literal.bool { 127 | true => "true", 128 | false => "false", 129 | }), 130 | datatype_iri: Some(iri_constants::XSD_BOOLEAN), 131 | language_tag: None, 132 | }), 133 | Literal::NumericLiteral(numeric_literal) => { 134 | RdfObject::Literal(match numeric_literal { 135 | NumericLiteral::Integer(integer_literal) => RdfLiteral { 136 | lexical_form: integer_literal.lexical_form().into(), 137 | datatype_iri: Some(iri_constants::XSD_INTEGER), 138 | language_tag: None, 139 | }, 140 | NumericLiteral::Decimal(decimal_literal) => RdfLiteral { 141 | lexical_form: decimal_literal.lexical_form().into(), 142 | datatype_iri: Some(iri_constants::XSD_DECIMAL), 143 | language_tag: None, 144 | }, 145 | NumericLiteral::Double(double_literal) => RdfLiteral { 146 | lexical_form: double_literal.lexical_form().into(), 147 | datatype_iri: Some(iri_constants::XSD_DOUBLE), 148 | language_tag: None, 149 | }, 150 | }) 151 | } 152 | }, 153 | Object::BlankNode(blank_node) => { 154 | let current_blank_node = match blank_node { 155 | BlankNode::Anonymous(_) => state.allocate_blank_node(), 156 | BlankNode::Labeled(labled) => state.allocate_labeled_blank_node(labled), 157 | }; 158 | RdfObject::BlankNode(current_blank_node) 159 | } 160 | Object::Collection(collection) => { 161 | match Self::produce_collection(state, triples, collection)? { 162 | Either::Left(iri) => RdfObject::IRI(iri), 163 | Either::Right(blank_node) => RdfObject::BlankNode(blank_node), 164 | } 165 | } 166 | Object::BlankNodePropertyList(blank_node_property_list) => { 167 | let mut sub_triples = vec![]; 168 | 169 | let blank_node = state.allocate_blank_node(); 170 | 171 | let stashed_subject = state.current_subject.clone(); 172 | let stashed_predicate = state.current_predicate.clone(); 173 | 174 | state.set_current_subject(RdfSubject::BlankNode(blank_node.clone())); 175 | 176 | Self::produce_predicate_object_list( 177 | state, 178 | &mut sub_triples, 179 | blank_node_property_list.list, 180 | )?; 181 | 182 | state.current_subject = stashed_subject; 183 | state.current_predicate = stashed_predicate; 184 | 185 | triples.append(&mut sub_triples); 186 | 187 | RdfObject::BlankNode(blank_node.clone()) 188 | } 189 | }) 190 | } 191 | 192 | /// See 193 | fn produce_collection<'a>( 194 | state: &mut ProducerState<'a>, 195 | triples: &mut Vec>, 196 | collection: Collection<'a>, 197 | ) -> Result, RdfBlankNode>, Error> { 198 | let stashed_subject = state.current_subject.clone(); 199 | let stashed_predicate = state.current_predicate.clone(); 200 | 201 | let return_node = match collection.list.len() { 202 | 0 => Either::Left(iri_constants::RDF_NIL), 203 | _ => { 204 | let mut first_blank_node: Option = None; 205 | 206 | let mut previous_blank_node = None; 207 | for (_, object, _) in collection.list { 208 | let current_blank_node = state.allocate_blank_node(); 209 | if matches!(first_blank_node, None) { 210 | first_blank_node = Some(current_blank_node.clone()); 211 | } 212 | if let Some(_) = previous_blank_node { 213 | state.set_current_predicate(RdfPredicate::IRI(iri_constants::RDF_REST)); 214 | state.produce_triple( 215 | triples, 216 | RdfObject::BlankNode(current_blank_node.clone()), 217 | )?; 218 | } 219 | 220 | state.set_current_subject(RdfSubject::BlankNode(current_blank_node.clone())); 221 | state.set_current_predicate(RdfPredicate::IRI(iri_constants::RDF_FIRST)); 222 | 223 | let rdf_object = Self::produce_object(state, triples, object)?; 224 | state.produce_triple(triples, rdf_object)?; 225 | 226 | previous_blank_node = Some(current_blank_node.clone()); 227 | } 228 | state.set_current_predicate(RdfPredicate::IRI(iri_constants::RDF_REST)); 229 | state.produce_triple(triples, RdfObject::IRI(iri_constants::RDF_NIL))?; 230 | 231 | Either::Right( 232 | first_blank_node 233 | .expect("Tried to produce collection without returning a blank node"), 234 | ) 235 | } 236 | }; 237 | 238 | state.current_subject = stashed_subject; 239 | state.current_predicate = stashed_predicate; 240 | 241 | Ok(return_node) 242 | } 243 | } 244 | 245 | impl<'a> ProducerState<'a> { 246 | fn set_base_uri>(&mut self, base_uri: U) -> Result<(), Error> { 247 | self.base_uri = Some(Iri::parse(base_uri.into())?); 248 | Ok(()) 249 | } 250 | 251 | fn set_namespace, U: Into>(&mut self, prefix: P, uri: U) { 252 | self.namespaces.insert(prefix.into(), uri.into()); 253 | } 254 | 255 | fn set_current_subject>>(&mut self, subject: S) { 256 | self.current_subject = Some(subject.into()) 257 | } 258 | 259 | fn set_current_predicate>>(&mut self, predicate: P) { 260 | self.current_predicate = Some(predicate.into()) 261 | } 262 | 263 | fn apply_directive(&mut self, directive: Directive) -> Result<(), Error> { 264 | match directive { 265 | Directive::Base(base_dir) => self.set_base_uri(base_dir.iri.iri)?, 266 | Directive::SparqlBase(base_dir) => self.set_base_uri(base_dir.iri.iri)?, 267 | Directive::Prefix(prefix_dir) => self.set_namespace( 268 | prefix_dir.prefix.unwrap_or(Cow::Borrowed("")), 269 | prefix_dir.iri.iri, 270 | ), 271 | Directive::SparqlPrefix(prefix_dir) => self.set_namespace( 272 | prefix_dir.prefix.unwrap_or(Cow::Borrowed("")), 273 | prefix_dir.iri.iri, 274 | ), 275 | } 276 | Ok(()) 277 | } 278 | 279 | fn allocate_labeled_blank_node(&mut self, blank_node: BlankNodeLabel) -> RdfBlankNode { 280 | // PERFORMANCE: May be optimized 281 | let possible_new_blank_node = self.allocate_blank_node(); 282 | self.blank_node_labels 283 | .entry(blank_node.label.to_string()) 284 | .or_insert(possible_new_blank_node) 285 | .to_owned() 286 | } 287 | 288 | fn allocate_blank_node(&self) -> RdfBlankNode { 289 | RdfBlankNode::new() 290 | } 291 | 292 | fn produce_triple>>( 293 | &self, 294 | triples: &mut Vec>, 295 | object: O, 296 | ) -> Result<(), Error> { 297 | let triple = RdfTriple { 298 | subject: self 299 | .current_subject 300 | .clone() 301 | .context("Trying to produce triple without current subject")?, 302 | predicate: self 303 | .current_predicate 304 | .clone() 305 | .context("Trying to produce triple without current predicate")?, 306 | object: object.into(), 307 | }; 308 | triples.push(triple); 309 | Ok(()) 310 | } 311 | 312 | fn convert_iri(&self, iri: IRI<'a>) -> Result, Error> { 313 | Ok(match iri { 314 | IRI::IRIReference(iri_ref) => RdfIri { 315 | iri: self.resolve_iri(iri_ref)?, 316 | }, 317 | IRI::PrefixedName(prefixed_name) => RdfIri { 318 | iri: format!( 319 | "{prefix}{local_name}", 320 | prefix = self.resolve_prefix(prefixed_name.prefix.as_deref())?, 321 | local_name = prefixed_name 322 | .name 323 | .context("Empty local_name part of PrefixedName")? 324 | ) 325 | .into(), 326 | }, 327 | }) 328 | } 329 | 330 | fn convert_verb(&self, verb: Verb<'a>) -> Result, Error> { 331 | Ok(match verb { 332 | Verb::A => RdfPredicate::IRI(iri_constants::RDF_TYPE), 333 | Verb::IRI(iri) => RdfPredicate::IRI(self.convert_iri(iri)?), 334 | }) 335 | } 336 | 337 | // See https://www.ietf.org/rfc/rfc3986.txt - Section 5.2 - Requires parsing the base and the iri 338 | fn resolve_iri(&self, iri_ref: IRIReference<'a>) -> Result, Error> { 339 | Ok(match &self.base_uri { 340 | None => iri_ref.iri, 341 | Some(base) => Cow::Owned(base.resolve(iri_ref.iri.as_ref())?.as_str().to_string()), 342 | }) 343 | } 344 | 345 | fn resolve_prefix(&self, prefix: Option<&str>) -> Result<&String, Error> { 346 | self.namespaces.get(prefix.unwrap_or("")).context(format!( 347 | "Unable to resolve prefix `{prefix}`", 348 | prefix = prefix.unwrap_or("") 349 | )) 350 | } 351 | } 352 | 353 | #[derive(Debug, Clone)] 354 | pub struct RdfTriple<'a> { 355 | pub subject: RdfSubject<'a>, 356 | pub predicate: RdfPredicate<'a>, 357 | pub object: RdfObject<'a>, 358 | } 359 | 360 | #[derive(Debug, Clone)] 361 | pub enum RdfSubject<'a> { 362 | IRI(RdfIri<'a>), 363 | BlankNode(RdfBlankNode), 364 | } 365 | 366 | #[derive(Debug, Clone)] 367 | pub enum RdfPredicate<'a> { 368 | IRI(RdfIri<'a>), 369 | } 370 | 371 | #[derive(Debug, Clone)] 372 | pub enum RdfObject<'a> { 373 | IRI(RdfIri<'a>), 374 | BlankNode(RdfBlankNode), 375 | Literal(RdfLiteral<'a>), 376 | } 377 | 378 | #[derive(Debug, Clone)] 379 | pub struct RdfIri<'a> { 380 | pub iri: Cow<'a, str>, 381 | } 382 | 383 | #[derive(Debug, Clone)] 384 | pub struct RdfLiteral<'a> { 385 | pub lexical_form: Cow<'a, str>, 386 | pub datatype_iri: Option>, 387 | pub language_tag: Option>, 388 | } 389 | 390 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] 391 | #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] 392 | pub struct RdfBlankNode { 393 | pub internal_id: ProcessUniqueId, 394 | } 395 | 396 | impl RdfBlankNode { 397 | pub fn new() -> Self { 398 | Self { 399 | internal_id: ProcessUniqueId::new(), 400 | } 401 | } 402 | } 403 | 404 | mod iri_constants { 405 | use crate::triple_production::RdfIri; 406 | use std::borrow::Cow; 407 | 408 | pub const RDF_TYPE: RdfIri = RdfIri { 409 | iri: Cow::Borrowed("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"), 410 | }; 411 | 412 | pub const RDF_FIRST: RdfIri = RdfIri { 413 | iri: Cow::Borrowed("http://www.w3.org/1999/02/22-rdf-syntax-ns#first"), 414 | }; 415 | 416 | pub const RDF_REST: RdfIri = RdfIri { 417 | iri: Cow::Borrowed("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"), 418 | }; 419 | 420 | pub const RDF_NIL: RdfIri = RdfIri { 421 | iri: Cow::Borrowed("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"), 422 | }; 423 | 424 | pub const XSD_STRING: RdfIri = RdfIri { 425 | iri: Cow::Borrowed("http://www.w3.org/2001/XMLSchema#string"), 426 | }; 427 | 428 | pub const XSD_BOOLEAN: RdfIri = RdfIri { 429 | iri: Cow::Borrowed("http://www.w3.org/2001/XMLSchema#boolean"), 430 | }; 431 | 432 | pub const XSD_INTEGER: RdfIri = RdfIri { 433 | iri: Cow::Borrowed("http://www.w3.org/2001/XMLSchema#integer"), 434 | }; 435 | 436 | pub const XSD_DECIMAL: RdfIri = RdfIri { 437 | iri: Cow::Borrowed("http://www.w3.org/2001/XMLSchema#decimal"), 438 | }; 439 | 440 | pub const XSD_DOUBLE: RdfIri = RdfIri { 441 | iri: Cow::Borrowed("http://www.w3.org/2001/XMLSchema#double"), 442 | }; 443 | } 444 | -------------------------------------------------------------------------------- /tests/parse_examples.rs: -------------------------------------------------------------------------------- 1 | use harriet::{Directive, Statement, TurtleDocument}; 2 | use nom::error::VerboseError; 3 | 4 | fn parse_example_file(file_name: &str) { 5 | let ontology = 6 | std::fs::read_to_string(&format!("./tests/reference_examples/{}", file_name)).unwrap(); 7 | assert!(dbg!(TurtleDocument::parse::>(&ontology)) 8 | .unwrap() 9 | .0 10 | .is_empty()); 11 | } 12 | 13 | fn parse_wildtype_file(file_name: &str) { 14 | let ontology = 15 | std::fs::read_to_string(&format!("./tests/wildtype_examples/{}", file_name)).unwrap(); 16 | assert!(dbg!(TurtleDocument::parse::>(&ontology)) 17 | .unwrap() 18 | .0 19 | .is_empty()); 20 | } 21 | 22 | #[test] 23 | fn example1() { 24 | parse_example_file("example1.ttl"); 25 | } 26 | 27 | #[test] 28 | fn example2() { 29 | parse_example_file("example2.ttl"); 30 | } 31 | 32 | #[test] 33 | fn example3() { 34 | parse_example_file("example3.ttl"); 35 | } 36 | 37 | #[test] 38 | fn example4() { 39 | parse_example_file("example4.ttl"); 40 | } 41 | 42 | #[test] 43 | fn example5() { 44 | parse_example_file("example5.ttl"); 45 | } 46 | 47 | #[test] 48 | fn example6() { 49 | parse_example_file("example6.ttl"); 50 | } 51 | 52 | #[test] 53 | fn example7() { 54 | parse_example_file("example7.ttl"); 55 | } 56 | 57 | #[test] 58 | fn example8() { 59 | parse_example_file("example8.ttl"); 60 | } 61 | 62 | #[test] 63 | fn example9() { 64 | parse_example_file("example9.ttl"); 65 | } 66 | 67 | #[test] 68 | fn example10() { 69 | parse_example_file("example10.ttl"); 70 | } 71 | 72 | #[test] 73 | fn example11() { 74 | parse_example_file("example11.ttl"); 75 | } 76 | 77 | #[test] 78 | // Number literals 79 | fn example12() { 80 | parse_example_file("example12.ttl"); 81 | } 82 | 83 | #[test] 84 | fn example13() { 85 | parse_example_file("example13.ttl"); 86 | } 87 | 88 | #[test] 89 | // Blank node 90 | fn example14() { 91 | parse_example_file("example14.ttl"); 92 | } 93 | 94 | #[test] 95 | fn example15() { 96 | parse_example_file("example15.ttl"); 97 | } 98 | 99 | #[test] 100 | fn example16() { 101 | parse_example_file("example16.ttl"); 102 | } 103 | 104 | #[test] 105 | fn example17() { 106 | parse_example_file("example17.ttl"); 107 | } 108 | 109 | #[test] 110 | fn example18() { 111 | parse_example_file("example18.ttl"); 112 | } 113 | 114 | #[test] 115 | fn example19() { 116 | parse_example_file("example19.ttl"); 117 | } 118 | 119 | #[test] 120 | fn example20() { 121 | parse_example_file("example20.ttl"); 122 | } 123 | 124 | #[test] 125 | fn example21() { 126 | parse_example_file("example21.ttl"); 127 | } 128 | 129 | #[test] 130 | // Multiline string in a single line via \n escape sequence 131 | fn example22() { 132 | parse_example_file("example22.ttl"); 133 | } 134 | 135 | #[test] 136 | fn example23() { 137 | parse_example_file("example23.ttl"); 138 | } 139 | 140 | #[test] 141 | // Blank nodes + numbers 142 | fn example24() { 143 | parse_example_file("example24.ttl"); 144 | } 145 | 146 | #[test] 147 | fn example25() { 148 | parse_example_file("example25.ttl"); 149 | } 150 | 151 | #[test] 152 | // Blank nodes + numbers 153 | fn example26() { 154 | parse_example_file("example26.ttl"); 155 | } 156 | 157 | #[test] 158 | // Variant of reference example1 where "a" is replaced with "rdfs:type" 159 | fn example1_without_a() { 160 | parse_wildtype_file("example1_without_a.ttl"); 161 | } 162 | 163 | #[test] 164 | fn example12_only_integer() { 165 | parse_wildtype_file("example12_only_integer.ttl"); 166 | } 167 | 168 | #[test] 169 | fn example12_only_decimal() { 170 | parse_wildtype_file("example12_only_decimal.ttl"); 171 | } 172 | 173 | #[test] 174 | fn example12_only_double() { 175 | parse_wildtype_file("example12_only_double.ttl"); 176 | } 177 | 178 | #[test] 179 | // Trimmed down example of nested blankNodePropertyList 180 | fn example_nested_lists() { 181 | parse_wildtype_file("nested_lists.ttl"); 182 | } 183 | 184 | #[test] 185 | // Slightly more expanded example of nested blankNodePropertyList 186 | fn example_nested_lists2() { 187 | parse_wildtype_file("nested_lists2.ttl"); 188 | } 189 | 190 | #[test] 191 | fn example24_simple1() { 192 | parse_wildtype_file("example24_simple1.ttl"); 193 | } 194 | 195 | #[test] 196 | fn example24_simple2() { 197 | parse_wildtype_file("example24_simple2.ttl"); 198 | } 199 | 200 | #[test] 201 | fn wildtype_rdf_ontology() { 202 | parse_wildtype_file("rdf.ttl"); 203 | } 204 | 205 | #[test] 206 | fn wildtype_rdfs_ontology() { 207 | parse_wildtype_file("rdfs.ttl"); 208 | } 209 | 210 | #[test] 211 | fn wildtype_owl_ontology() { 212 | parse_wildtype_file("owl.ttl"); 213 | } 214 | 215 | #[test] 216 | fn wildtype_dublin_core_elements_ontology() { 217 | parse_wildtype_file("owl.ttl"); 218 | } 219 | 220 | #[test] 221 | fn wildtype_bibo_ontology() { 222 | parse_wildtype_file("bibo.ttl"); 223 | } 224 | 225 | #[test] 226 | #[ignore] 227 | fn wildtype_blank_node_object_dot() { 228 | parse_wildtype_file("blank_node_object_dot.ttl"); 229 | } 230 | 231 | #[test] 232 | fn leading_whitespace_base() { 233 | let file_name = "leading_whitespace_base.ttl"; 234 | let ontology = 235 | std::fs::read_to_string(&format!("./tests/wildtype_examples/{}", file_name)).unwrap(); 236 | let document = TurtleDocument::parse::>(&ontology) 237 | .unwrap() 238 | .1; 239 | let mut count = 0; 240 | for statement in document.statements { 241 | if let Statement::Directive(Directive::Base(_)) = statement { 242 | count += 1; 243 | } 244 | } 245 | assert_eq!(1, count); 246 | } 247 | -------------------------------------------------------------------------------- /tests/reference_examples/example1.ttl: -------------------------------------------------------------------------------- 1 | @base . 2 | @prefix rdf: . 3 | @prefix rdfs: . 4 | @prefix foaf: . 5 | @prefix rel: . 6 | 7 | <#green-goblin> 8 | rel:enemyOf <#spiderman> ; 9 | a foaf:Person ; # in the context of the Marvel universe 10 | foaf:name "Green Goblin" . 11 | 12 | <#spiderman> 13 | rel:enemyOf <#green-goblin> ; 14 | a foaf:Person ; 15 | foaf:name "Spiderman", "Человек-паук"@ru . 16 | -------------------------------------------------------------------------------- /tests/reference_examples/example10.ttl: -------------------------------------------------------------------------------- 1 | @prefix foaf: . 2 | 3 | foaf:name "Green Goblin" . 4 | 5 | foaf:name "Spiderman" . 6 | -------------------------------------------------------------------------------- /tests/reference_examples/example11.ttl: -------------------------------------------------------------------------------- 1 | @prefix rdfs: . 2 | @prefix show: . 3 | @prefix xsd: . 4 | 5 | show:218 rdfs:label "That Seventies Show"^^xsd:string . # literal with XML Schema string datatype 6 | show:218 rdfs:label "That Seventies Show"^^ . # same as above 7 | show:218 rdfs:label "That Seventies Show" . # same again 8 | show:218 show:localName "That Seventies Show"@en . # literal with a language tag 9 | show:218 show:localName 'Cette Série des Années Soixante-dix'@fr . # literal delimited by single quote 10 | show:218 show:localName "Cette Série des Années Septante"@fr-be . # literal with a region subtag 11 | show:218 show:blurb '''This is a multi-line # literal with embedded new lines and quotes 12 | literal with many quotes (""""") 13 | and up to two sequential apostrophes ('').''' . 14 | -------------------------------------------------------------------------------- /tests/reference_examples/example12.ttl: -------------------------------------------------------------------------------- 1 | @prefix : . 2 | 3 | :atomicNumber 2 ; # xsd:integer 4 | :atomicMass 4.002602 ; # xsd:decimal 5 | :specificGravity 1.663E-4 . # xsd:double 6 | -------------------------------------------------------------------------------- /tests/reference_examples/example13.ttl: -------------------------------------------------------------------------------- 1 | @prefix : . 2 | 3 | :isLandlocked false . # xsd:boolean 4 | -------------------------------------------------------------------------------- /tests/reference_examples/example14.ttl: -------------------------------------------------------------------------------- 1 | @prefix foaf: . 2 | 3 | _:alice foaf:knows _:bob . 4 | _:bob foaf:knows _:alice . 5 | -------------------------------------------------------------------------------- /tests/reference_examples/example15.ttl: -------------------------------------------------------------------------------- 1 | @prefix foaf: . 2 | 3 | # Someone knows someone else, who has the name "Bob". 4 | [] foaf:knows [ foaf:name "Bob" ] . 5 | -------------------------------------------------------------------------------- /tests/reference_examples/example16.ttl: -------------------------------------------------------------------------------- 1 | @prefix foaf: . 2 | 3 | [ foaf:name "Alice" ] foaf:knows [ 4 | foaf:name "Bob" ; 5 | foaf:knows [ 6 | foaf:name "Eve" ] ; 7 | foaf:mbox ] . -------------------------------------------------------------------------------- /tests/reference_examples/example17.ttl: -------------------------------------------------------------------------------- 1 | _:a "Alice" . 2 | _:a _:b . 3 | _:b "Bob" . 4 | _:b _:c . 5 | _:c "Eve" . 6 | _:b . 7 | -------------------------------------------------------------------------------- /tests/reference_examples/example18.ttl: -------------------------------------------------------------------------------- 1 | @prefix : . 2 | # the object of this triple is the RDF collection blank node 3 | :subject :predicate ( :a :b :c ) . 4 | 5 | # an empty collection value - rdf:nil 6 | :subject :predicate2 () . -------------------------------------------------------------------------------- /tests/reference_examples/example19.ttl: -------------------------------------------------------------------------------- 1 | @prefix rdf: . 2 | @prefix dc: . 3 | @prefix ex: . 4 | 5 | 6 | dc:title "RDF/XML Syntax Specification (Revised)" ; 7 | ex:editor [ 8 | ex:fullname "Dave Beckett"; 9 | ex:homePage 10 | ] . -------------------------------------------------------------------------------- /tests/reference_examples/example2.ttl: -------------------------------------------------------------------------------- 1 | . -------------------------------------------------------------------------------- /tests/reference_examples/example20.ttl: -------------------------------------------------------------------------------- 1 | PREFIX : 2 | :a :b ( "apple" "banana" ) . -------------------------------------------------------------------------------- /tests/reference_examples/example21.ttl: -------------------------------------------------------------------------------- 1 | @prefix : . 2 | @prefix rdf: . 3 | :a :b 4 | [ rdf:first "apple"; 5 | rdf:rest [ rdf:first "banana"; 6 | rdf:rest rdf:nil ] 7 | ] . -------------------------------------------------------------------------------- /tests/reference_examples/example22.ttl: -------------------------------------------------------------------------------- 1 | @prefix : . 2 | 3 | :a :b "The first line\nThe second line\n more" . 4 | 5 | :a :b """The first line 6 | The second line 7 | more""" . -------------------------------------------------------------------------------- /tests/reference_examples/example23.ttl: -------------------------------------------------------------------------------- 1 | @prefix : . 2 | (1 2.0 3E1) :p "w" . -------------------------------------------------------------------------------- /tests/reference_examples/example24.ttl: -------------------------------------------------------------------------------- 1 | @prefix rdf: . 2 | _:b0 rdf:first 1 ; 3 | rdf:rest _:b1 . 4 | _:b1 rdf:first 2.0 ; 5 | rdf:rest _:b2 . 6 | _:b2 rdf:first 3E1 ; 7 | rdf:rest rdf:nil . 8 | _:b0 :p "w" . -------------------------------------------------------------------------------- /tests/reference_examples/example25.ttl: -------------------------------------------------------------------------------- 1 | PREFIX : 2 | (1 [:p :q] ( 2 ) ) :p2 :q2 . -------------------------------------------------------------------------------- /tests/reference_examples/example26.ttl: -------------------------------------------------------------------------------- 1 | @prefix rdf: . 2 | _:b0 rdf:first 1 ; 3 | rdf:rest _:b1 . 4 | _:b1 rdf:first _:b2 . 5 | _:b2 :p :q . 6 | _:b1 rdf:rest _:b3 . 7 | _:b3 rdf:first _:b4 . 8 | _:b4 rdf:first 2 ; 9 | rdf:rest rdf:nil . 10 | _:b3 rdf:rest rdf:nil . -------------------------------------------------------------------------------- /tests/reference_examples/example3.ttl: -------------------------------------------------------------------------------- 1 | ; 2 | "Spiderman" . 3 | -------------------------------------------------------------------------------- /tests/reference_examples/example4.ttl: -------------------------------------------------------------------------------- 1 | . 2 | "Spiderman" . 3 | -------------------------------------------------------------------------------- /tests/reference_examples/example5.ttl: -------------------------------------------------------------------------------- 1 | "Spiderman", "Человек-паук"@ru . 2 | -------------------------------------------------------------------------------- /tests/reference_examples/example6.ttl: -------------------------------------------------------------------------------- 1 | "Spiderman" . 2 | "Человек-паук"@ru . 3 | -------------------------------------------------------------------------------- /tests/reference_examples/example7.ttl: -------------------------------------------------------------------------------- 1 | @prefix somePrefix: . 2 | 3 | somePrefix:enemyOf . 4 | -------------------------------------------------------------------------------- /tests/reference_examples/example8.ttl: -------------------------------------------------------------------------------- 1 | PREFIX somePrefix: 2 | 3 | somePrefix:enemyOf . 4 | -------------------------------------------------------------------------------- /tests/reference_examples/example9.ttl: -------------------------------------------------------------------------------- 1 | # A triple with all absolute IRIs 2 | . 3 | 4 | @base . 5 | . # relative IRIs, e.g. http://one.example/subject2 6 | 7 | BASE 8 | . # relative IRIs, e.g. http://one.example/subject2 9 | 10 | @prefix p: . 11 | p:subject3 p:predicate3 p:object3 . # prefixed name, e.g. http://two.example/subject3 12 | 13 | PREFIX p: 14 | p:subject3 p:predicate3 p:object3 . # prefixed name, e.g. http://two.example/subject3 15 | 16 | @prefix p: . # prefix p: now stands for http://one.example/path/ 17 | p:subject4 p:predicate4 p:object4 . # prefixed name, e.g. http://one.example/path/subject4 18 | 19 | @prefix : . # empty prefix 20 | :subject5 :predicate5 :object5 . # prefixed name, e.g. http://another.example/subject5 21 | 22 | :subject6 a :subject7 . # same as :subject6 :subject7 . 23 | 24 | a :subject8 . # a multi-script subject IRI . 25 | -------------------------------------------------------------------------------- /tests/roundtrip_examples.rs: -------------------------------------------------------------------------------- 1 | use harriet::TurtleDocument; 2 | use nom::error::VerboseError; 3 | use pretty_assertions::{assert_eq}; 4 | 5 | fn roundtrip_example_file(file_name: &str) { 6 | let input_ontology = 7 | std::fs::read_to_string(&format!("./tests/reference_examples/{}", file_name)).unwrap(); 8 | 9 | let parsed = TurtleDocument::parse::>(&input_ontology).unwrap().1; 10 | 11 | let mut mem: [u8; 10024] = [0; 10024]; 12 | let buf = &mut mem[..]; 13 | let (_, written_bytes) = cookie_factory::gen( 14 | TurtleDocument::gen(&parsed), buf 15 | ) 16 | .unwrap(); 17 | let rendered_ontology = std::str::from_utf8(&mem[..written_bytes as usize]).unwrap(); 18 | 19 | assert_eq!(input_ontology, rendered_ontology); 20 | } 21 | 22 | fn roundtrip_wildtype_file(file_name: &str) { 23 | let input_ontology = 24 | std::fs::read_to_string(&format!("./tests/wildtype_examples/{}", file_name)).unwrap(); 25 | 26 | let parsed = TurtleDocument::parse::>(&input_ontology).unwrap().1; 27 | 28 | let mut mem: [u8; 100024] = [0; 100024]; 29 | let buf = &mut mem[..]; 30 | let (_, written_bytes) = cookie_factory::gen( 31 | TurtleDocument::gen(&parsed), buf 32 | ) 33 | .unwrap(); 34 | let rendered_ontology = std::str::from_utf8(&mem[..written_bytes as usize]).unwrap(); 35 | 36 | assert_eq!(input_ontology, rendered_ontology); 37 | } 38 | 39 | #[test] 40 | fn example1() { 41 | roundtrip_example_file("example1.ttl"); 42 | } 43 | 44 | #[test] 45 | fn example2() { 46 | roundtrip_example_file("example2.ttl"); 47 | } 48 | 49 | #[test] 50 | fn example3() { 51 | roundtrip_example_file("example3.ttl"); 52 | } 53 | 54 | #[test] 55 | fn example4() { 56 | roundtrip_example_file("example4.ttl"); 57 | } 58 | 59 | #[test] 60 | fn example5() { 61 | roundtrip_example_file("example5.ttl"); 62 | } 63 | 64 | #[test] 65 | fn example6() { 66 | roundtrip_example_file("example6.ttl"); 67 | } 68 | 69 | #[test] 70 | fn example7() { 71 | roundtrip_example_file("example7.ttl"); 72 | } 73 | 74 | #[test] 75 | fn example8() { 76 | roundtrip_example_file("example8.ttl"); 77 | } 78 | 79 | #[test] 80 | fn example9() { 81 | roundtrip_example_file("example9.ttl"); 82 | } 83 | 84 | #[test] 85 | fn example10() { 86 | roundtrip_example_file("example10.ttl"); 87 | } 88 | 89 | #[test] 90 | fn example11() { 91 | roundtrip_example_file("example11.ttl"); 92 | } 93 | 94 | #[test] 95 | // Number literals 96 | fn example12() { 97 | roundtrip_example_file("example12.ttl"); 98 | } 99 | 100 | #[test] 101 | fn example13() { 102 | roundtrip_example_file("example13.ttl"); 103 | } 104 | 105 | #[test] 106 | fn example14() { 107 | roundtrip_example_file("example14.ttl"); 108 | } 109 | 110 | #[test] 111 | fn example15() { 112 | roundtrip_example_file("example15.ttl"); 113 | } 114 | 115 | #[test] 116 | fn example16() { 117 | roundtrip_example_file("example16.ttl"); 118 | } 119 | 120 | #[test] 121 | fn example17() { 122 | roundtrip_example_file("example17.ttl"); 123 | } 124 | 125 | #[test] 126 | fn example18() { 127 | roundtrip_example_file("example18.ttl"); 128 | } 129 | 130 | #[test] 131 | fn example19() { 132 | roundtrip_example_file("example19.ttl"); 133 | } 134 | 135 | #[test] 136 | fn example20() { 137 | roundtrip_example_file("example20.ttl"); 138 | } 139 | 140 | #[test] 141 | fn example21() { 142 | roundtrip_example_file("example21.ttl"); 143 | } 144 | 145 | #[test] 146 | // Multiline string in a single line via \n escape sequence 147 | fn example22() { 148 | roundtrip_example_file("example22.ttl"); 149 | } 150 | 151 | #[test] 152 | fn example23() { 153 | roundtrip_example_file("example23.ttl"); 154 | } 155 | 156 | #[test] 157 | fn example24() { 158 | roundtrip_example_file("example24.ttl"); 159 | } 160 | 161 | #[test] 162 | fn example25() { 163 | roundtrip_example_file("example25.ttl"); 164 | } 165 | 166 | #[test] 167 | fn example26() { 168 | roundtrip_example_file("example26.ttl"); 169 | } 170 | 171 | #[test] 172 | // Variant of reference example1 where "a" is replaced with "rdfs:type" 173 | fn example1_without_a() { 174 | roundtrip_wildtype_file("example1_without_a.ttl"); 175 | } 176 | 177 | #[test] 178 | fn example12_only_integer() { 179 | roundtrip_wildtype_file("example12_only_integer.ttl"); 180 | } 181 | 182 | #[test] 183 | fn example12_only_decimal() { 184 | roundtrip_wildtype_file("example12_only_decimal.ttl"); 185 | } 186 | 187 | #[test] 188 | fn example12_only_double() { 189 | roundtrip_wildtype_file("example12_only_double.ttl"); 190 | } 191 | 192 | #[test] 193 | // Trimmed down example of nested blankNodePropertyList 194 | fn example_nested_lists() { 195 | roundtrip_wildtype_file("nested_lists.ttl"); 196 | } 197 | 198 | #[test] 199 | // Slightly more expanded example of nested blankNodePropertyList 200 | fn example_nested_lists2() { 201 | roundtrip_wildtype_file("nested_lists2.ttl"); 202 | } 203 | 204 | #[test] 205 | fn example24_simple1() { 206 | roundtrip_wildtype_file("example24_simple1.ttl"); 207 | } 208 | 209 | #[test] 210 | fn example24_simple2() { 211 | roundtrip_wildtype_file("example24_simple2.ttl"); 212 | } 213 | 214 | #[test] 215 | fn wildtype_rdf_ontology() { 216 | roundtrip_wildtype_file("rdf.ttl"); 217 | } 218 | 219 | #[test] 220 | fn wildtype_rdfs_ontology() { 221 | roundtrip_wildtype_file("rdfs.ttl"); 222 | } 223 | 224 | #[test] 225 | fn wildtype_owl_ontology() { 226 | roundtrip_wildtype_file("owl.ttl"); 227 | } 228 | 229 | #[test] 230 | fn wildtype_foaf_mirror_ontology() { 231 | roundtrip_wildtype_file("foaf_mirror.ttl"); 232 | } 233 | 234 | #[test] 235 | fn wildtype_dublin_core_elements_ontology() { 236 | roundtrip_wildtype_file("dublin_core_elements.ttl"); 237 | } 238 | 239 | #[test] 240 | fn wildtype_bibo_ontology() { 241 | roundtrip_wildtype_file("bibo.ttl"); 242 | } 243 | -------------------------------------------------------------------------------- /tests/triple_production_examples.rs: -------------------------------------------------------------------------------- 1 | use harriet::TurtleDocument; 2 | use nom::error::VerboseError; 3 | use harriet::triple_production::TripleProducer; 4 | 5 | fn triples_example_file(file_name: &str) { 6 | let ontology = 7 | std::fs::read_to_string(&format!("./tests/reference_examples/{}", file_name)).unwrap(); 8 | let document = TurtleDocument::parse_full(&ontology).unwrap(); 9 | assert!(dbg!(TripleProducer::produce_for_document(&document)).is_ok()); 10 | } 11 | 12 | fn triples_wildtype_file(file_name: &str) { 13 | let ontology = 14 | std::fs::read_to_string(&format!("./tests/wildtype_examples/{}", file_name)).unwrap(); 15 | let document = TurtleDocument::parse_full(&ontology).unwrap(); 16 | assert!(dbg!(TripleProducer::produce_for_document(&document)).is_ok()); 17 | } 18 | 19 | #[test] 20 | fn example1() { 21 | triples_example_file("example1.ttl"); 22 | } 23 | 24 | #[test] 25 | fn example2() { 26 | triples_example_file("example2.ttl"); 27 | } 28 | 29 | #[test] 30 | fn example3() { 31 | triples_example_file("example3.ttl"); 32 | } 33 | 34 | #[test] 35 | fn example4() { 36 | triples_example_file("example4.ttl"); 37 | } 38 | 39 | #[test] 40 | fn example5() { 41 | triples_example_file("example5.ttl"); 42 | } 43 | 44 | #[test] 45 | fn example6() { 46 | triples_example_file("example6.ttl"); 47 | } 48 | 49 | #[test] 50 | fn example7() { 51 | triples_example_file("example7.ttl"); 52 | } 53 | 54 | #[test] 55 | fn example8() { 56 | triples_example_file("example8.ttl"); 57 | } 58 | 59 | #[test] 60 | fn example9() { 61 | triples_example_file("example9.ttl"); 62 | } 63 | 64 | #[test] 65 | fn example10() { 66 | triples_example_file("example10.ttl"); 67 | } 68 | 69 | #[test] 70 | fn example11() { 71 | triples_example_file("example11.ttl"); 72 | } 73 | 74 | #[test] 75 | // Number literals 76 | fn example12() { 77 | triples_example_file("example12.ttl"); 78 | } 79 | 80 | #[test] 81 | fn example13() { 82 | triples_example_file("example13.ttl"); 83 | } 84 | 85 | #[test] 86 | // Blank node 87 | fn example14() { 88 | triples_example_file("example14.ttl"); 89 | } 90 | 91 | #[test] 92 | fn example15() { 93 | triples_example_file("example15.ttl"); 94 | } 95 | 96 | #[test] 97 | #[ignore] 98 | fn example16() { 99 | triples_example_file("example16.ttl"); 100 | } 101 | 102 | #[test] 103 | fn example17() { 104 | triples_example_file("example17.ttl"); 105 | } 106 | 107 | #[test] 108 | fn example18() { 109 | triples_example_file("example18.ttl"); 110 | } 111 | 112 | #[test] 113 | fn example19() { 114 | triples_example_file("example19.ttl"); 115 | } 116 | 117 | #[test] 118 | fn example20() { 119 | triples_example_file("example20.ttl"); 120 | } 121 | 122 | #[test] 123 | fn example21() { 124 | triples_example_file("example21.ttl"); 125 | } 126 | 127 | #[test] 128 | // Multiline string in a single line via \n escape sequence 129 | fn example22() { 130 | triples_example_file("example22.ttl"); 131 | } 132 | 133 | #[test] 134 | #[ignore] 135 | fn example23() { 136 | triples_example_file("example23.ttl"); 137 | } 138 | 139 | #[test] 140 | #[ignore] 141 | // Will never work, as it has undeclared `:` prefix. 142 | // Blank nodes + numbers 143 | fn example24() { 144 | triples_example_file("example24.ttl"); 145 | } 146 | 147 | #[test] 148 | #[ignore] 149 | fn example25() { 150 | triples_example_file("example25.ttl"); 151 | } 152 | 153 | #[test] 154 | #[ignore] 155 | // Will never work, as it has undeclared `:` prefix. 156 | // Blank nodes + numbers 157 | fn example26() { 158 | triples_example_file("example26.ttl"); 159 | } 160 | 161 | #[test] 162 | // Variant of reference example1 where "a" is replaced with "rdfs:type" 163 | fn example1_without_a() { 164 | triples_wildtype_file("example1_without_a.ttl"); 165 | } 166 | 167 | #[test] 168 | // Trimmed down example of nested blankNodePropertyList 169 | fn example_nested_lists() { 170 | triples_wildtype_file("nested_lists.ttl"); 171 | } 172 | 173 | #[test] 174 | // Slightly more expanded example of nested blankNodePropertyList 175 | fn example_nested_lists2() { 176 | triples_wildtype_file("nested_lists2.ttl"); 177 | } 178 | 179 | #[test] 180 | fn example24_simple1() { 181 | triples_wildtype_file("example24_simple1.ttl"); 182 | } 183 | 184 | #[test] 185 | fn example24_simple2() { 186 | triples_wildtype_file("example24_simple2.ttl"); 187 | } 188 | 189 | #[test] 190 | fn example12_only_decimal() { 191 | triples_wildtype_file("example12_only_decimal.ttl"); 192 | } 193 | -------------------------------------------------------------------------------- /tests/wildtype_examples/bibo.ttl: -------------------------------------------------------------------------------- 1 | @prefix bibo: . 2 | @prefix owl: . 3 | @prefix dc: . 4 | @prefix skos: . 5 | @prefix rdfs: . 6 | @prefix xsd: . 7 | @prefix vs: . 8 | @prefix rdf: . 9 | @prefix foaf: . 10 | 11 | bibo: 12 | a owl:Ontology ; 13 | owl:versionInfo "http://purl.org/ontology/bibo/1.3/" ; 14 | dc:title "The Bibliographic Ontology" ; 15 | dc:description """The Bibliographic Ontology describes 16 | bibliographic things on the semantic Web in RDF. This ontology can be 17 | used as a citation ontology, as a document classification ontology, or 18 | simply as a way to describe any kind of document in RDF. It has been 19 | inspired by many existing document description metadata formats, and 20 | can be used as a common ground for converting other bibliographic data 21 | sources."""@en ; 22 | dc:creator bibo:bdarcus, bibo:fgiasson . 23 | 24 | dc:creator a owl:AnnotationProperty . 25 | dc:description 26 | a owl:AnnotationProperty, owl:DatatypeProperty ; 27 | skos:scopeNote "Used to describe a bibliographic resource."@en . 28 | 29 | dc:identifier a owl:AnnotationProperty . 30 | dc:title 31 | a owl:AnnotationProperty, owl:ObjectProperty ; 32 | skos:scopeNote "Used to describe the title of a bibliographic resource"@en . 33 | 34 | owl:deprecated a owl:AnnotationProperty . 35 | a owl:AnnotationProperty . 36 | skos:changeNote a owl:AnnotationProperty . 37 | skos:editorialNote a owl:AnnotationProperty . 38 | skos:example a owl:AnnotationProperty . 39 | skos:historyNote a owl:AnnotationProperty . 40 | skos:note a owl:AnnotationProperty . 41 | skos:scopeNote a owl:AnnotationProperty . 42 | 43 | a owl:ObjectProperty ; 44 | skos:changeNote "Used to link an agent (a person) to an event (a conference, an hearing, etc.)"@en . 45 | 46 | 47 | a owl:ObjectProperty ; 48 | skos:scopeNote "Used to relate an event such as a conference to the geographical place where it happens, for example Paris."@en . 49 | 50 | a owl:ObjectProperty . 51 | 52 | a owl:ObjectProperty ; 53 | skos:scopeNote "Used to link an event such as a conference to an outcome (a product) of that event, for example, an article, a proceeding, etc."@en . 54 | 55 | 56 | a owl:ObjectProperty ; 57 | skos:scopeNote "Used to link big events with smaller events such as workshops that happen in the context of a conference."@en . 58 | 59 | 60 | a owl:ObjectProperty ; 61 | skos:scopeNote "Used to describe the timing of an event. For example, when a conference starts and stops."@en . 62 | 63 | dc:contributor 64 | a owl:ObjectProperty ; 65 | skos:scopeNote "Used to link a bibliographic item to one of its contributor: can be an author, an editor, a publisher, etc."@en . 66 | 67 | dc:format 68 | a owl:ObjectProperty ; 69 | skos:example """ 70 | 71 | text/html 72 | HTML 73 | 74 | """@en ; 75 | skos:scopeNote "Used to describe the format of a bibliographic resource."@en . 76 | 77 | dc:hasPart a owl:ObjectProperty . 78 | dc:isPartOf a owl:ObjectProperty . 79 | dc:isReferencedBy 80 | a owl:ObjectProperty ; 81 | skos:scopeNote "Used to relate a reference citation to a bibliographic resource."@en . 82 | 83 | dc:isVersionOf a owl:ObjectProperty . 84 | dc:language 85 | a owl:ObjectProperty ; 86 | skos:scopeNote "Used to link a bibliographic resource to the language used to express it."@en . 87 | 88 | dc:publisher 89 | a owl:ObjectProperty ; 90 | skos:scopeNote "Used to link a bibliographic item to its publisher."@en . 91 | 92 | dc:references a owl:ObjectProperty . 93 | dc:relation a owl:ObjectProperty . 94 | dc:rights 95 | a owl:ObjectProperty ; 96 | skos:scopeNote "Used to describe rights related to a bibliographic resource."@en . 97 | 98 | dc:subject 99 | a owl:ObjectProperty ; 100 | skos:scopeNote "Used to describe the subject of a bibliographic resource."@en . 101 | 102 | bibo:affirmedBy 103 | a owl:ObjectProperty ; 104 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 105 | rdfs:comment "A legal decision that affirms a ruling."@en ; 106 | rdfs:range bibo:LegalDecision ; 107 | rdfs:domain bibo:LegalDecision ; 108 | rdfs:subPropertyOf bibo:subsequentLegalDecision . 109 | 110 | bibo:annotates 111 | a owl:ObjectProperty ; 112 | rdfs:label "annotates"@en ; 113 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 114 | rdfs:comment "Critical or explanatory note for a Document."@en ; 115 | vs:term_status "stable" ; 116 | rdfs:subPropertyOf dc:relation ; 117 | rdfs:domain bibo:Note ; 118 | rdfs:range rdfs:Resource . 119 | 120 | bibo:authorList 121 | a owl:ObjectProperty ; 122 | rdfs:label "list of authors"@en ; 123 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 124 | vs:term_status "stable" ; 125 | rdfs:comment "An ordered list of authors. Normally, this list is seen as a priority list that order authors by importance."@en ; 126 | rdfs:domain bibo:Document ; 127 | rdfs:subPropertyOf bibo:contributorList ; 128 | rdfs:range [ 129 | a owl:Class ; 130 | owl:unionOf ( 131 | rdf:List 132 | rdf:Seq 133 | ) 134 | ] . 135 | 136 | bibo:citedBy 137 | a owl:ObjectProperty ; 138 | rdfs:label "cited by"@en ; 139 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 140 | rdfs:comment """Relates a document to another document that cites the 141 | first document."""@en ; 142 | vs:term_status "unstable" ; 143 | rdfs:domain bibo:Document ; 144 | rdfs:range bibo:Document ; 145 | owl:inverseOf bibo:cites . 146 | 147 | bibo:cites 148 | a owl:ObjectProperty ; 149 | rdfs:label "cites"@en ; 150 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 151 | vs:term_status "unstable" ; 152 | rdfs:comment """Relates a document to another document that is cited 153 | by the first document as reference, comment, review, quotation or for 154 | another purpose."""@en ; 155 | rdfs:subPropertyOf dc:references ; 156 | rdfs:domain bibo:Document ; 157 | rdfs:range bibo:Document . 158 | 159 | bibo:contributorList 160 | a owl:ObjectProperty ; 161 | rdfs:label "list of contributors"@en ; 162 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 163 | vs:term_status "stable" ; 164 | rdfs:comment "An ordered list of contributors. Normally, this list is seen as a priority list that order contributors by importance."@en ; 165 | rdfs:domain bibo:Document ; 166 | rdfs:range [ 167 | a owl:Class ; 168 | owl:unionOf ( 169 | rdf:List 170 | rdf:Seq 171 | ) 172 | ] . 173 | 174 | bibo:court 175 | a owl:ObjectProperty ; 176 | rdfs:label "court"@en ; 177 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 178 | rdfs:comment "A court associated with a legal document; for example, that which issues a decision."@en ; 179 | vs:term_status "unstable" ; 180 | rdfs:domain bibo:LegalDocument ; 181 | rdfs:range foaf:Organization . 182 | 183 | bibo:degree 184 | a owl:ObjectProperty ; 185 | rdfs:label "degree"@en ; 186 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 187 | vs:term_status "unstable" ; 188 | rdfs:comment "The thesis degree."@en ; 189 | skos:editorialNote "We are not defining, using an enumeration, the range of the bibo:degree to the defined list of bibo:ThesisDegree. We won't do it because we want people to be able to define new degress if needed by some special usecases. Creating such an enumeration would restrict this to happen."@en ; 190 | rdfs:domain bibo:Thesis ; 191 | rdfs:range bibo:ThesisDegree . 192 | 193 | bibo:director 194 | a owl:ObjectProperty ; 195 | rdfs:label "director" ; 196 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 197 | rdfs:comment "A Film director."@en ; 198 | vs:term_status "stable" ; 199 | rdfs:subPropertyOf dc:contributor ; 200 | rdfs:domain bibo:AudioVisualDocument ; 201 | rdfs:range foaf:Agent . 202 | 203 | bibo:distributor 204 | a owl:ObjectProperty ; 205 | rdfs:label "distributor"@en ; 206 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 207 | rdfs:comment "Distributor of a document or a collection of documents."@en ; 208 | vs:term_status "stable" ; 209 | rdfs:range foaf:Agent ; 210 | rdfs:domain [ 211 | a owl:Class ; 212 | owl:unionOf ( 213 | bibo:Collection 214 | bibo:Document 215 | ) 216 | ] . 217 | 218 | bibo:editor 219 | a owl:ObjectProperty ; 220 | rdfs:label "editor" ; 221 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 222 | rdfs:comment "A person having managerial and sometimes policy-making responsibility for the editorial part of a publishing firm or of a newspaper, magazine, or other publication."@en ; 223 | vs:term_status "stable" ; 224 | rdfs:subPropertyOf dc:contributor ; 225 | rdfs:range foaf:Agent ; 226 | rdfs:domain [ 227 | a owl:Class ; 228 | owl:unionOf ( 229 | bibo:Collection 230 | bibo:Document 231 | ) 232 | ] . 233 | 234 | bibo:editorList 235 | a owl:ObjectProperty ; 236 | rdfs:label "list of editors"@en ; 237 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 238 | rdfs:comment "An ordered list of editors. Normally, this list is seen as a priority list that order editors by importance."@en ; 239 | vs:term_status "stable" ; 240 | rdfs:domain bibo:Document ; 241 | rdfs:subPropertyOf bibo:contributorList ; 242 | rdfs:range [ 243 | a owl:Class ; 244 | owl:unionOf ( 245 | rdf:List 246 | rdf:Seq 247 | ) 248 | ] . 249 | 250 | bibo:interviewee 251 | a owl:ObjectProperty ; 252 | rdfs:label "interviewee" ; 253 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 254 | vs:term_status "stable" ; 255 | rdfs:comment "An agent that is interviewed by another agent."@en ; 256 | rdfs:subPropertyOf dc:contributor ; 257 | rdfs:domain foaf:Agent ; 258 | rdfs:range foaf:Agent . 259 | 260 | bibo:interviewer 261 | a owl:ObjectProperty ; 262 | rdfs:label "interviewer" ; 263 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 264 | rdfs:comment "An agent that interview another agent."@en ; 265 | vs:term_status "stable" ; 266 | rdfs:subPropertyOf dc:contributor ; 267 | rdfs:range foaf:Agent ; 268 | rdfs:domain foaf:Agent . 269 | 270 | bibo:issuer 271 | a owl:ObjectProperty ; 272 | rdfs:label "issuer" ; 273 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 274 | rdfs:comment "An entity responsible for issuing often informally published documents such as press releases, reports, etc." ; 275 | vs:term_status "unstable" ; 276 | rdfs:subPropertyOf dc:publisher ; 277 | rdfs:range foaf:Agent ; 278 | rdfs:domain [ 279 | a owl:Class ; 280 | owl:unionOf ( 281 | bibo:Collection 282 | bibo:Document 283 | ) 284 | ] . 285 | 286 | bibo:organizer 287 | a owl:ObjectProperty ; 288 | rdfs:label "organizer"@en ; 289 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 290 | vs:term_status "unstable" ; 291 | rdfs:comment "The organizer of an event; includes conference organizers, but also government agencies or other bodies that are responsible for conducting hearings."@en ; 292 | rdfs:domain ; 293 | rdfs:range foaf:Agent . 294 | 295 | bibo:owner 296 | a owl:ObjectProperty ; 297 | rdfs:label "owner"@en ; 298 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 299 | vs:term_status "unstable" ; 300 | rdfs:comment "Owner of a document or a collection of documents."@en ; 301 | rdfs:range foaf:Agent ; 302 | rdfs:domain [ 303 | a owl:Class ; 304 | owl:unionOf ( 305 | bibo:Collection 306 | bibo:Document 307 | ) 308 | ] . 309 | 310 | bibo:performer 311 | a owl:ObjectProperty ; 312 | rdfs:label "performer" ; 313 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 314 | vs:term_status "stable" ; 315 | rdfs:subPropertyOf dc:contributor ; 316 | rdfs:domain bibo:Performance ; 317 | rdfs:range foaf:Agent . 318 | 319 | bibo:presentedAt 320 | a owl:ObjectProperty ; 321 | rdfs:label "presented at"@en ; 322 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 323 | vs:term_status "unstable" ; 324 | rdfs:comment "Relates a document to an event; for example, a paper to a conference."@en ; 325 | rdfs:subPropertyOf ; 326 | rdfs:domain bibo:Document ; 327 | rdfs:range bibo:Event . 328 | 329 | bibo:presents 330 | a owl:ObjectProperty ; 331 | rdfs:label "presents"@en ; 332 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 333 | rdfs:comment "Relates an event to associated documents; for example, conference to a paper."@en ; 334 | vs:term_status "unstable" ; 335 | rdfs:subPropertyOf ; 336 | rdfs:range bibo:Document ; 337 | rdfs:domain bibo:Event ; 338 | owl:inverseOf bibo:presentedAt . 339 | 340 | bibo:producer 341 | a owl:ObjectProperty ; 342 | rdfs:label "producer"@en ; 343 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 344 | rdfs:comment "Producer of a document or a collection of documents."@en ; 345 | vs:term_status "stable" ; 346 | rdfs:range foaf:Agent ; 347 | rdfs:domain [ 348 | a owl:Class ; 349 | owl:unionOf ( 350 | bibo:Collection 351 | bibo:Document 352 | ) 353 | ] . 354 | 355 | bibo:recipient 356 | a owl:ObjectProperty ; 357 | rdfs:label "recipient" ; 358 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 359 | rdfs:comment "An agent that receives a communication document."@en ; 360 | vs:term_status "stable" ; 361 | rdfs:domain bibo:PersonalCommunicationDocument ; 362 | rdfs:range foaf:Agent . 363 | 364 | bibo:reproducedIn 365 | a owl:ObjectProperty ; 366 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 367 | rdfs:comment "The resource in which another resource is reproduced."@en ; 368 | vs:term_status "unstable" ; 369 | rdfs:subPropertyOf dc:isPartOf ; 370 | rdfs:range bibo:Document ; 371 | rdfs:domain bibo:Document . 372 | 373 | bibo:reversedBy 374 | a owl:ObjectProperty ; 375 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 376 | rdfs:comment "A legal decision that reverses a ruling."@en ; 377 | rdfs:range bibo:LegalDecision ; 378 | rdfs:domain bibo:LegalDecision ; 379 | rdfs:subPropertyOf bibo:subsequentLegalDecision . 380 | 381 | bibo:reviewOf 382 | a owl:ObjectProperty ; 383 | rdfs:label "review of"@en ; 384 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 385 | rdfs:comment "Relates a review document to a reviewed thing (resource, item, etc.)."@en ; 386 | vs:term_status "stable" ; 387 | rdfs:subPropertyOf dc:relation ; 388 | rdfs:domain bibo:Document ; 389 | rdfs:range rdfs:Resource . 390 | 391 | bibo:status 392 | a owl:ObjectProperty ; 393 | rdfs:label "status"@en ; 394 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 395 | vs:term_status "stable" ; 396 | rdfs:comment "The publication status of (typically academic) content."@en ; 397 | skos:editorialNote "We are not defining, using an enumeration, the range of the bibo:status to the defined list of bibo:DocumentStatus. We won't do it because we want people to be able to define new status if needed by some special usecases. Creating such an enumeration would restrict this to happen."@en ; 398 | rdfs:domain bibo:Document ; 399 | rdfs:range bibo:DocumentStatus . 400 | 401 | bibo:subsequentLegalDecision 402 | a owl:ObjectProperty ; 403 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 404 | rdfs:comment "A legal decision on appeal that takes action on a case (affirming it, reversing it, etc.)."@en ; 405 | rdfs:subPropertyOf dc:isReferencedBy ; 406 | rdfs:domain bibo:LegalDecision ; 407 | rdfs:range bibo:LegalDecision . 408 | 409 | bibo:transcriptOf 410 | a owl:ObjectProperty ; 411 | rdfs:label "transcript of"@en ; 412 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 413 | rdfs:comment "Relates a document to some transcribed original."@en ; 414 | vs:term_status "unstable" ; 415 | rdfs:subPropertyOf dc:relation ; 416 | rdfs:domain bibo:Document ; 417 | rdfs:range rdfs:Resource . 418 | 419 | bibo:translationOf 420 | a owl:ObjectProperty ; 421 | rdfs:label "translation of"@en ; 422 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 423 | vs:term_status "stable" ; 424 | rdfs:comment "Relates a translated document to the original document."@en ; 425 | rdfs:subPropertyOf dc:isVersionOf ; 426 | rdfs:range bibo:Document ; 427 | rdfs:domain bibo:Document . 428 | 429 | bibo:translator 430 | a owl:ObjectProperty ; 431 | rdfs:label "translator" ; 432 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 433 | vs:term_status "stable" ; 434 | rdfs:comment "A person who translates written document from one language to another."@en ; 435 | rdfs:subPropertyOf dc:contributor ; 436 | rdfs:range foaf:Agent ; 437 | rdfs:domain [ 438 | a owl:Class ; 439 | owl:unionOf ( 440 | bibo:Collection 441 | bibo:Document 442 | ) 443 | ] . 444 | 445 | rdf:value 446 | a owl:ObjectProperty ; 447 | skos:scopeNote """Used to describe the content of a bibo:Document and othr bibliographic resouces. 448 | 449 | We suggest to use this property instead of the deprecated "bibo:content" one."""@en . 450 | 451 | foaf:based_near 452 | a owl:ObjectProperty ; 453 | skos:scopeNote "Used to link an agent, related to bibliographic things, to a place where it is based near: can be a city, a monument, a building, etc."@en . 454 | 455 | foaf:depiction 456 | a owl:ObjectProperty ; 457 | skos:scopeNote "Used to link an agent with an image that depict it."@en . 458 | 459 | foaf:homepage 460 | a owl:ObjectProperty ; 461 | skos:scopeNote "Used to link an agent to its homepage (which is a web page accessible using a URL)."@en . 462 | 463 | 464 | a owl:DatatypeProperty ; 465 | owl:equivalentProperty bibo:doi . 466 | 467 | 468 | a owl:DatatypeProperty ; 469 | owl:equivalentProperty bibo:eissn . 470 | 471 | 472 | a owl:DatatypeProperty ; 473 | owl:equivalentProperty bibo:edition . 474 | 475 | 476 | a owl:DatatypeProperty ; 477 | owl:equivalentProperty bibo:pageEnd . 478 | 479 | 480 | a owl:DatatypeProperty ; 481 | owl:equivalentProperty bibo:isbn . 482 | 483 | 484 | a owl:DatatypeProperty ; 485 | owl:equivalentProperty bibo:issn . 486 | 487 | 488 | a owl:DatatypeProperty ; 489 | owl:equivalentProperty bibo:issue . 490 | 491 | 492 | a owl:DatatypeProperty ; 493 | owl:equivalentProperty bibo:locator . 494 | 495 | 496 | a owl:DatatypeProperty ; 497 | owl:equivalentProperty bibo:pageStart . 498 | 499 | 500 | a owl:DatatypeProperty ; 501 | owl:equivalentProperty bibo:volume . 502 | 503 | dc:created 504 | a owl:DatatypeProperty ; 505 | skos:scopeNote "Used to describe the creation date of a bibliographic item"@en ; 506 | rdfs:subPropertyOf dc:date . 507 | 508 | dc:date 509 | a owl:DatatypeProperty ; 510 | skos:scopeNote "Use to link a bibliographic item to the date of an event. Check dcterms:created and other for proper specializations for this property"@en . 511 | 512 | dc:issued 513 | a owl:DatatypeProperty ; 514 | skos:scopeNote "Used to describe the issue date of a bibliographic resource"@en ; 515 | rdfs:subPropertyOf dc:date . 516 | 517 | bibo:abstract 518 | a owl:DatatypeProperty ; 519 | rdfs:label "abstract" ; 520 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 521 | vs:term_status "stable" ; 522 | rdfs:comment "A summary of the resource." ; 523 | rdfs:range rdfs:Literal ; 524 | rdfs:domain rdfs:Resource . 525 | 526 | bibo:argued 527 | a owl:DatatypeProperty ; 528 | rdfs:label "date argued"@en ; 529 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 530 | rdfs:comment "The date on which a legal case is argued before a court. Date is of format xsd:date"@en ; 531 | vs:term_status "unstable" ; 532 | rdfs:domain bibo:LegalDocument ; 533 | rdfs:range rdfs:Literal . 534 | 535 | bibo:asin 536 | a owl:DatatypeProperty ; 537 | rdfs:subPropertyOf bibo:identifier ; 538 | rdfs:range rdfs:Literal ; 539 | rdfs:domain [ 540 | a owl:Class ; 541 | owl:unionOf ( 542 | bibo:Collection 543 | bibo:Document 544 | ) 545 | ] . 546 | 547 | bibo:chapter 548 | a owl:DatatypeProperty ; 549 | rdfs:label "chapter"@en ; 550 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 551 | rdfs:comment "An chapter number"@en ; 552 | vs:term_status "unstable" ; 553 | rdfs:domain bibo:BookSection ; 554 | rdfs:subPropertyOf bibo:locator ; 555 | rdfs:range rdfs:Literal . 556 | 557 | bibo:coden 558 | a owl:DatatypeProperty ; 559 | rdfs:subPropertyOf bibo:identifier ; 560 | rdfs:range rdfs:Literal ; 561 | rdfs:domain [ 562 | a owl:Class ; 563 | owl:unionOf ( 564 | bibo:Collection 565 | bibo:Document 566 | ) 567 | ] . 568 | 569 | bibo:content 570 | a owl:DatatypeProperty ; 571 | rdfs:label "content"@en ; 572 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 573 | owl:deprecated true ; 574 | skos:historyNote "bibo:content has been deprecated; we recommend to use \"rdf:value\" for this purpose. Here is the rational behind this choice: http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#rdfvalue"@en ; 575 | vs:term_status "unstable" ; 576 | rdfs:comment "This property is for a plain-text rendering of the content of a Document. While the plain-text content of an entire document could be described by this property."@en ; 577 | rdfs:domain bibo:Document ; 578 | rdfs:range rdfs:Literal . 579 | 580 | bibo:doi 581 | a owl:DatatypeProperty ; 582 | rdfs:subPropertyOf bibo:identifier ; 583 | rdfs:range rdfs:Literal ; 584 | rdfs:domain [ 585 | a owl:Class ; 586 | owl:unionOf ( 587 | bibo:Collection 588 | bibo:Document 589 | ) 590 | ] . 591 | 592 | bibo:eanucc13 593 | a owl:DatatypeProperty ; 594 | rdfs:subPropertyOf bibo:identifier ; 595 | rdfs:range rdfs:Literal ; 596 | rdfs:domain [ 597 | a owl:Class ; 598 | owl:unionOf ( 599 | bibo:Collection 600 | bibo:Document 601 | ) 602 | ] . 603 | 604 | bibo:edition 605 | a owl:DatatypeProperty ; 606 | rdfs:label "edition"@en ; 607 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 608 | vs:term_status "stable" ; 609 | rdfs:comment "The name defining a special edition of a document. Normally its a literal value composed of a version number and words."@en ; 610 | rdfs:domain bibo:Document ; 611 | rdfs:range rdfs:Literal . 612 | 613 | bibo:eissn 614 | a owl:DatatypeProperty ; 615 | rdfs:domain bibo:Collection ; 616 | rdfs:subPropertyOf bibo:identifier ; 617 | rdfs:range rdfs:Literal . 618 | 619 | bibo:gtin14 620 | a owl:DatatypeProperty ; 621 | rdfs:subPropertyOf bibo:identifier ; 622 | rdfs:range rdfs:Literal ; 623 | rdfs:domain [ 624 | a owl:Class ; 625 | owl:unionOf ( 626 | bibo:Collection 627 | bibo:Document 628 | ) 629 | ] . 630 | 631 | bibo:handle 632 | a owl:DatatypeProperty ; 633 | rdfs:subPropertyOf bibo:identifier ; 634 | rdfs:range rdfs:Literal ; 635 | rdfs:domain [ 636 | a owl:Class ; 637 | owl:unionOf ( 638 | bibo:Collection 639 | bibo:Document 640 | ) 641 | ] . 642 | 643 | bibo:identifier 644 | a owl:DatatypeProperty ; 645 | rdfs:range rdfs:Literal ; 646 | rdfs:domain [ 647 | a owl:Class ; 648 | owl:unionOf ( 649 | bibo:Collection 650 | bibo:Document 651 | ) 652 | ] . 653 | 654 | bibo:isbn 655 | a owl:DatatypeProperty ; 656 | rdfs:subPropertyOf bibo:identifier . 657 | 658 | bibo:isbn10 659 | a owl:DatatypeProperty ; 660 | rdfs:subPropertyOf bibo:isbn ; 661 | rdfs:range rdfs:Literal ; 662 | rdfs:domain [ 663 | a owl:Class ; 664 | owl:unionOf ( 665 | bibo:Collection 666 | bibo:Document 667 | ) 668 | ] . 669 | 670 | bibo:isbn13 671 | a owl:DatatypeProperty ; 672 | rdfs:subPropertyOf bibo:isbn ; 673 | rdfs:range rdfs:Literal ; 674 | rdfs:domain [ 675 | a owl:Class ; 676 | owl:unionOf ( 677 | bibo:Collection 678 | bibo:Document 679 | ) 680 | ] . 681 | 682 | bibo:issn 683 | a owl:DatatypeProperty ; 684 | rdfs:domain bibo:Collection ; 685 | rdfs:subPropertyOf bibo:identifier ; 686 | rdfs:range rdfs:Literal . 687 | 688 | bibo:issue 689 | a owl:DatatypeProperty ; 690 | rdfs:label "issue"@en ; 691 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 692 | rdfs:comment "An issue number"@en ; 693 | vs:term_status "stable" ; 694 | rdfs:domain bibo:Issue ; 695 | rdfs:subPropertyOf bibo:locator ; 696 | rdfs:range rdfs:Literal . 697 | 698 | bibo:lccn 699 | a owl:DatatypeProperty ; 700 | rdfs:subPropertyOf bibo:identifier ; 701 | rdfs:range rdfs:Literal ; 702 | rdfs:domain [ 703 | a owl:Class ; 704 | owl:unionOf ( 705 | bibo:Collection 706 | bibo:Document 707 | ) 708 | ] . 709 | 710 | bibo:locator 711 | a owl:DatatypeProperty ; 712 | rdfs:label "locator"@en ; 713 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 714 | rdfs:comment "A description (often numeric) that locates an item within a containing document or collection."@en ; 715 | vs:term_status "stable" ; 716 | rdfs:domain bibo:Document ; 717 | rdfs:range rdfs:Literal . 718 | 719 | bibo:numPages 720 | a owl:DatatypeProperty ; 721 | rdfs:label "number of pages"@en ; 722 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 723 | vs:term_status "stable" ; 724 | rdfs:comment "The number of pages contained in a document"@en ; 725 | rdfs:domain bibo:Document ; 726 | rdfs:range rdfs:Literal . 727 | 728 | bibo:numVolumes 729 | a owl:DatatypeProperty ; 730 | rdfs:label "number of volumes"@en ; 731 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 732 | rdfs:comment "The number of volumes contained in a collection of documents (usually a series, periodical, etc.)."@en ; 733 | vs:term_status "stable" ; 734 | rdfs:domain bibo:Collection ; 735 | rdfs:range rdfs:Literal . 736 | 737 | bibo:number 738 | a owl:DatatypeProperty ; 739 | rdfs:label "number"@en ; 740 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 741 | vs:term_status "stable" ; 742 | rdfs:comment "A generic item or document number. Not to be confused with issue number."@en ; 743 | rdfs:domain bibo:Document ; 744 | rdfs:range rdfs:Literal . 745 | 746 | bibo:oclcnum 747 | a owl:DatatypeProperty ; 748 | rdfs:subPropertyOf bibo:identifier ; 749 | rdfs:range rdfs:Literal ; 750 | rdfs:domain [ 751 | a owl:Class ; 752 | owl:unionOf ( 753 | bibo:Collection 754 | bibo:Document 755 | ) 756 | ] . 757 | 758 | bibo:pageEnd 759 | a owl:DatatypeProperty ; 760 | rdfs:label "page end"@en ; 761 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 762 | vs:term_status "stable" ; 763 | rdfs:comment "Ending page number within a continuous page range."@en ; 764 | rdfs:domain bibo:Document ; 765 | rdfs:subPropertyOf bibo:locator ; 766 | rdfs:range rdfs:Literal . 767 | 768 | bibo:pageStart 769 | a owl:DatatypeProperty ; 770 | rdfs:label "page start"@en ; 771 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 772 | vs:term_status "stable" ; 773 | rdfs:comment "Starting page number within a continuous page range."@en ; 774 | rdfs:domain bibo:Document ; 775 | rdfs:subPropertyOf bibo:locator ; 776 | rdfs:range rdfs:Literal . 777 | 778 | bibo:pages 779 | a owl:DatatypeProperty ; 780 | rdfs:label "pages"@en ; 781 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 782 | vs:term_status "stable" ; 783 | rdfs:comment "A string of non-contiguous page spans that locate a Document within a Collection. Example: 23-25, 34, 54-56. For continuous page ranges, use the pageStart and pageEnd properties."@en ; 784 | rdfs:domain bibo:Document ; 785 | rdfs:subPropertyOf bibo:locator ; 786 | rdfs:range rdfs:Literal . 787 | 788 | bibo:pmid 789 | a owl:DatatypeProperty ; 790 | rdfs:subPropertyOf bibo:identifier ; 791 | rdfs:range rdfs:Literal ; 792 | rdfs:domain [ 793 | a owl:Class ; 794 | owl:unionOf ( 795 | bibo:Collection 796 | bibo:Document 797 | ) 798 | ] . 799 | 800 | bibo:prefixName 801 | a owl:DatatypeProperty ; 802 | rdfs:label "prefix name"@en ; 803 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 804 | rdfs:comment "The prefix of a name"@en ; 805 | vs:term_status "stable" ; 806 | rdfs:range rdfs:Literal ; 807 | rdfs:domain foaf:Agent . 808 | 809 | bibo:section 810 | a owl:DatatypeProperty ; 811 | rdfs:label "section"@en ; 812 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 813 | vs:term_status "unstable" ; 814 | rdfs:comment "A section number"@en ; 815 | skos:example """Di Rado, Alicia. 1995. Trekking through college: Classes explore 816 | modern society using the world of Star trek. Los Angeles Times, March 817 | 15, sec. A, p. 3."""@en ; 818 | rdfs:domain bibo:Document ; 819 | rdfs:subPropertyOf bibo:locator ; 820 | rdfs:range rdfs:Literal . 821 | 822 | bibo:shortDescription 823 | a owl:DatatypeProperty ; 824 | rdfs:domain bibo:Document ; 825 | rdfs:range rdfs:Literal . 826 | 827 | bibo:shortTitle 828 | a owl:DatatypeProperty ; 829 | rdfs:label "short title"@en ; 830 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 831 | vs:term_status "stable" ; 832 | rdfs:comment "The abbreviation of a title."@en ; 833 | rdfs:domain bibo:Document ; 834 | rdfs:range rdfs:Literal . 835 | 836 | bibo:sici 837 | a owl:DatatypeProperty ; 838 | rdfs:subPropertyOf bibo:identifier ; 839 | rdfs:range rdfs:Literal ; 840 | rdfs:domain [ 841 | a owl:Class ; 842 | owl:unionOf ( 843 | bibo:Collection 844 | bibo:Document 845 | ) 846 | ] . 847 | 848 | bibo:suffixName 849 | a owl:DatatypeProperty ; 850 | rdfs:label "suffix name"@en ; 851 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 852 | vs:term_status "stable" ; 853 | rdfs:comment "The suffix of a name"@en ; 854 | rdfs:range rdfs:Literal ; 855 | rdfs:domain foaf:Agent . 856 | 857 | bibo:upc 858 | a owl:DatatypeProperty ; 859 | rdfs:subPropertyOf bibo:identifier ; 860 | rdfs:range rdfs:Literal ; 861 | rdfs:domain [ 862 | a owl:Class ; 863 | owl:unionOf ( 864 | bibo:Collection 865 | bibo:Document 866 | ) 867 | ] . 868 | 869 | bibo:uri 870 | a owl:DatatypeProperty ; 871 | rdfs:label "uri"@en ; 872 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 873 | rdfs:comment "Universal Resource Identifier of a document"@en ; 874 | vs:term_status "stable" ; 875 | rdfs:subPropertyOf bibo:identifier ; 876 | rdfs:range rdfs:Literal ; 877 | rdfs:domain [ 878 | a owl:Class ; 879 | owl:unionOf ( 880 | bibo:Collection 881 | bibo:Document 882 | ) 883 | ] . 884 | 885 | bibo:volume 886 | a owl:DatatypeProperty ; 887 | rdfs:label "volume"@en ; 888 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 889 | vs:term_status "stable" ; 890 | rdfs:comment "A volume number"@en ; 891 | rdfs:domain bibo:Document ; 892 | rdfs:subPropertyOf bibo:locator ; 893 | rdfs:range rdfs:Literal . 894 | 895 | 896 | a owl:DatatypeProperty ; 897 | skos:scopeNote "Used to name the locality of a publisher, an author, etc."@en . 898 | 899 | foaf:family_name 900 | a owl:DatatypeProperty ; 901 | skos:scopeNote "This is the property we choose to use to describe the family name of a person related to a bibliographic resource."@en . 902 | 903 | foaf:givenname 904 | a owl:DatatypeProperty ; 905 | skos:scopeNote "This is the property we choose to describe the given name of a Person related to a bibliographic resource. This is the first name of a person."@en . 906 | 907 | foaf:name a owl:DatatypeProperty . 908 | 909 | a owl:Class ; 910 | skos:scopeNote "Used to describe bibliographic related events such as conferences, hearing, etc."@en . 911 | 912 | dc:Agent 913 | a owl:Class ; 914 | owl:equivalentClass foaf:Agent ; 915 | skos:editorialNote """BIBO assert that a dcterms:Agent is an equivalent class to foaf:Agent. 916 | This means that all the individuals belonging to the foaf:Agent class 917 | also belongs to the dcterms:Agent class. This way, dcterms:contributor 918 | can be used on foaf:Person, foaf:Organization, foaf:Agent and foaf:Group. 919 | Even if this link is not done in neither the FOAF nor the DCTERMS ontologies this is a wide spread fact that is asserted by BIBO."""@en . 920 | 921 | bibo:AcademicArticle 922 | a owl:Class ; 923 | rdfs:label "Academic Article"@en ; 924 | rdfs:subClassOf bibo:Article ; 925 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 926 | vs:term_status "stable" ; 927 | rdfs:comment "A scholarly academic article, typically published in a journal."@en . 928 | 929 | bibo:Article 930 | a owl:Class ; 931 | rdfs:label "Article"@en ; 932 | rdfs:subClassOf bibo:Document ; 933 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 934 | vs:term_status "stable" ; 935 | rdfs:comment "A written composition in prose, usually nonfiction, on a specific topic, forming an independent part of a book or other publication, as a newspaper or magazine."@en . 936 | 937 | bibo:AudioDocument 938 | a owl:Class ; 939 | rdfs:label "audio document"@en ; 940 | rdfs:subClassOf bibo:Document ; 941 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 942 | vs:term_status "stable" ; 943 | rdfs:comment "An audio document; aka record."@en . 944 | 945 | bibo:AudioVisualDocument 946 | a owl:Class ; 947 | rdfs:label "audio-visual document"@en ; 948 | rdfs:subClassOf bibo:Document ; 949 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 950 | rdfs:comment "An audio-visual document; film, video, and so forth."@en ; 951 | vs:term_status "stable" . 952 | 953 | bibo:Bill 954 | a owl:Class ; 955 | rdfs:label "Bill"@en ; 956 | rdfs:subClassOf bibo:Legislation ; 957 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 958 | rdfs:comment "Draft legislation presented for discussion to a legal body."@en ; 959 | vs:term_status "stable" . 960 | 961 | bibo:Book 962 | a owl:Class ; 963 | rdfs:label "Book"@en ; 964 | rdfs:subClassOf bibo:Document ; 965 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 966 | vs:term_status "stable" ; 967 | rdfs:comment "A written or printed work of fiction or nonfiction, usually on sheets of paper fastened or bound together within covers."@en . 968 | 969 | bibo:BookSection 970 | a owl:Class ; 971 | rdfs:label "Book Section"@en ; 972 | rdfs:subClassOf bibo:DocumentPart ; 973 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 974 | vs:term_status "unstable" ; 975 | rdfs:comment "A section of a book."@en . 976 | 977 | bibo:Brief 978 | a owl:Class ; 979 | rdfs:label "Brief"@en ; 980 | rdfs:subClassOf bibo:LegalCaseDocument ; 981 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 982 | rdfs:comment "A written argument submitted to a court."@en ; 983 | vs:term_status "unstable" . 984 | 985 | bibo:Chapter 986 | a owl:Class ; 987 | rdfs:label "Chapter"@en ; 988 | rdfs:subClassOf bibo:BookSection ; 989 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 990 | rdfs:comment "A chapter of a book."@en ; 991 | vs:term_status "unstable" . 992 | 993 | bibo:Code 994 | a owl:Class ; 995 | rdfs:label "Code"@en ; 996 | rdfs:subClassOf bibo:Periodical, [ 997 | a owl:Restriction ; 998 | owl:onProperty dc:hasPart ; 999 | owl:minCardinality "1"^^xsd:nonNegativeInteger 1000 | ], [ 1001 | a owl:Restriction ; 1002 | owl:onProperty dc:hasPart ; 1003 | owl:allValuesFrom bibo:Legislation 1004 | ] ; 1005 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1006 | vs:term_status "stable" ; 1007 | rdfs:comment "A collection of statutes."@en . 1008 | 1009 | bibo:CollectedDocument 1010 | a owl:Class ; 1011 | rdfs:label "Collected Document"@en ; 1012 | rdfs:subClassOf bibo:Document, [ 1013 | a owl:Restriction ; 1014 | owl:onProperty dc:hasPart ; 1015 | owl:allValuesFrom bibo:Document 1016 | ], [ 1017 | a owl:Restriction ; 1018 | owl:onProperty dc:hasPart ; 1019 | owl:minCardinality "1"^^xsd:nonNegativeInteger 1020 | ] ; 1021 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1022 | vs:term_status "stable" ; 1023 | rdfs:comment "A document that simultaneously contains other documents."@en . 1024 | 1025 | bibo:Collection 1026 | a owl:Class ; 1027 | rdfs:label "Collection"@en ; 1028 | rdfs:subClassOf [ 1029 | a owl:Restriction ; 1030 | owl:onProperty dc:hasPart ; 1031 | owl:allValuesFrom [ 1032 | a owl:Class ; 1033 | owl:unionOf ( 1034 | bibo:Collection 1035 | bibo:Document 1036 | ) 1037 | ] 1038 | ] ; 1039 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1040 | rdfs:comment "A collection of Documents or Collections"@en ; 1041 | vs:term_status "stable" . 1042 | 1043 | bibo:Conference 1044 | a owl:Class ; 1045 | rdfs:label "Conference"@en ; 1046 | rdfs:subClassOf ; 1047 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1048 | vs:term_status "stable" ; 1049 | rdfs:comment "A meeting for consultation or discussion."@en . 1050 | 1051 | bibo:CourtReporter 1052 | a owl:Class ; 1053 | rdfs:label "Court Reporter"@en ; 1054 | rdfs:subClassOf bibo:Periodical, [ 1055 | a owl:Restriction ; 1056 | owl:onProperty dc:hasPart ; 1057 | owl:minCardinality "1"^^xsd:nonNegativeInteger 1058 | ], [ 1059 | a owl:Restriction ; 1060 | owl:onProperty dc:hasPart ; 1061 | owl:allValuesFrom bibo:LegalDocument 1062 | ] ; 1063 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1064 | rdfs:comment "A collection of legal cases."@en ; 1065 | vs:term_status "stable" . 1066 | 1067 | bibo:Document 1068 | a owl:Class ; 1069 | rdfs:label "Document"@en ; 1070 | owl:equivalentClass foaf:Document ; 1071 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1072 | rdfs:comment "A document (noun) is a bounded physical representation of body of information designed with the capacity (and usually intent) to communicate. A document may manifest symbolic, diagrammatic or sensory-representational information."@en ; 1073 | vs:term_status "stable" . 1074 | 1075 | bibo:DocumentPart 1076 | a owl:Class ; 1077 | rdfs:label "document part"@en ; 1078 | rdfs:subClassOf bibo:Document, [ 1079 | a owl:Restriction ; 1080 | owl:onProperty dc:isPartOf ; 1081 | owl:maxCardinality "1"^^xsd:nonNegativeInteger 1082 | ] ; 1083 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1084 | rdfs:comment "a distinct part of a larger document or collected document."@en ; 1085 | vs:term_status "unstable" . 1086 | 1087 | bibo:DocumentStatus 1088 | a owl:Class ; 1089 | rdfs:label "Document Status"@en ; 1090 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1091 | rdfs:comment "The status of the publication of a document."@en ; 1092 | vs:term_status "stable" . 1093 | 1094 | bibo:EditedBook 1095 | a owl:Class ; 1096 | rdfs:label "Edited Book"@en ; 1097 | rdfs:subClassOf bibo:CollectedDocument ; 1098 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1099 | rdfs:comment "An edited book."@en ; 1100 | vs:term_status "stable" . 1101 | 1102 | bibo:Email 1103 | a owl:Class ; 1104 | rdfs:label "EMail"@en ; 1105 | rdfs:subClassOf bibo:PersonalCommunicationDocument ; 1106 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1107 | vs:term_status "stable" ; 1108 | rdfs:comment "A written communication addressed to a person or organization and transmitted electronically."@en . 1109 | 1110 | bibo:Event a owl:Class . 1111 | bibo:Excerpt 1112 | a owl:Class ; 1113 | rdfs:label "Excerpt"@en ; 1114 | rdfs:subClassOf bibo:DocumentPart ; 1115 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1116 | rdfs:comment "A passage selected from a larger work."@en ; 1117 | vs:term_status "stable" . 1118 | 1119 | bibo:Film 1120 | a owl:Class ; 1121 | rdfs:label "Film"@en ; 1122 | rdfs:subClassOf bibo:AudioVisualDocument ; 1123 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1124 | rdfs:comment "aka movie."@en ; 1125 | vs:term_status "stable" . 1126 | 1127 | bibo:Hearing 1128 | a owl:Class ; 1129 | rdfs:label "Hearing"@en ; 1130 | rdfs:subClassOf ; 1131 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1132 | rdfs:comment "An instance or a session in which testimony and arguments are presented, esp. before an official, as a judge in a lawsuit."@en ; 1133 | vs:term_status "stable" . 1134 | 1135 | bibo:Image 1136 | a owl:Class ; 1137 | rdfs:label "Image"@en ; 1138 | owl:equivalentClass foaf:Image ; 1139 | rdfs:subClassOf bibo:Document ; 1140 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1141 | vs:term_status "stable" ; 1142 | rdfs:comment "A document that presents visual or diagrammatic information."@en . 1143 | 1144 | bibo:Interview 1145 | a owl:Class ; 1146 | rdfs:label "Interview"@en ; 1147 | rdfs:subClassOf ; 1148 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1149 | vs:term_status "stable" ; 1150 | rdfs:comment "A formalized discussion between two or more people."@en . 1151 | 1152 | bibo:Issue 1153 | a owl:Class ; 1154 | rdfs:label "Issue"@en ; 1155 | rdfs:subClassOf bibo:CollectedDocument, [ 1156 | a owl:Restriction ; 1157 | owl:onProperty dc:hasPart ; 1158 | owl:minCardinality "1"^^xsd:nonNegativeInteger 1159 | ], [ 1160 | a owl:Restriction ; 1161 | owl:onProperty dc:hasPart ; 1162 | owl:allValuesFrom bibo:Article 1163 | ] ; 1164 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1165 | rdfs:comment "something that is printed or published and distributed, esp. a given number of a periodical"@en ; 1166 | vs:term_status "stable" . 1167 | 1168 | bibo:Journal 1169 | a owl:Class ; 1170 | rdfs:label "Journal"@en ; 1171 | rdfs:subClassOf bibo:Periodical, [ 1172 | a owl:Restriction ; 1173 | owl:onProperty dc:hasPart ; 1174 | owl:minCardinality "1"^^xsd:nonNegativeInteger 1175 | ], [ 1176 | a owl:Restriction ; 1177 | owl:onProperty dc:hasPart ; 1178 | owl:allValuesFrom bibo:Issue 1179 | ] ; 1180 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1181 | vs:term_status "stable" ; 1182 | rdfs:comment "A periodical of scholarly journal Articles."@en . 1183 | 1184 | bibo:LegalCaseDocument 1185 | a owl:Class ; 1186 | rdfs:label "Legal Case Document"@en ; 1187 | rdfs:subClassOf bibo:LegalDocument ; 1188 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1189 | vs:term_status "unstable" ; 1190 | rdfs:comment "A document accompanying a legal case."@en . 1191 | 1192 | bibo:LegalDecision 1193 | a owl:Class ; 1194 | rdfs:label "Decision"@en ; 1195 | rdfs:subClassOf bibo:LegalCaseDocument ; 1196 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1197 | vs:term_status "unstable" ; 1198 | rdfs:comment "A document containing an authoritative determination (as a decree or judgment) made after consideration of facts or law."@en . 1199 | 1200 | bibo:LegalDocument 1201 | a owl:Class ; 1202 | rdfs:label "Legal Document"@en ; 1203 | rdfs:subClassOf bibo:Document ; 1204 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1205 | vs:term_status "stable" ; 1206 | rdfs:comment "A legal document; for example, a court decision, a brief, and so forth."@en . 1207 | 1208 | bibo:Legislation 1209 | a owl:Class ; 1210 | rdfs:label "Legislation"@en ; 1211 | rdfs:subClassOf bibo:LegalDocument ; 1212 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1213 | vs:term_status "unstable" ; 1214 | rdfs:comment "A legal document proposing or enacting a law or a group of laws."@en . 1215 | 1216 | bibo:Letter 1217 | a owl:Class ; 1218 | rdfs:label "Letter"@en ; 1219 | rdfs:subClassOf bibo:PersonalCommunicationDocument ; 1220 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1221 | vs:term_status "stable" ; 1222 | rdfs:comment "A written or printed communication addressed to a person or organization and usually transmitted by mail."@en . 1223 | 1224 | bibo:Magazine 1225 | a owl:Class ; 1226 | rdfs:label "Magazine"@en ; 1227 | rdfs:subClassOf bibo:Periodical, [ 1228 | a owl:Restriction ; 1229 | owl:onProperty dc:hasPart ; 1230 | owl:minCardinality "1"^^xsd:nonNegativeInteger 1231 | ], [ 1232 | a owl:Restriction ; 1233 | owl:onProperty dc:hasPart ; 1234 | owl:allValuesFrom bibo:Issue 1235 | ] ; 1236 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1237 | rdfs:comment "A periodical of magazine Articles. A magazine is a publication that is issued periodically, usually bound in a paper cover, and typically contains essays, stories, poems, etc., by many writers, and often photographs and drawings, frequently specializing in a particular subject or area, as hobbies, news, or sports."@en ; 1238 | vs:term_status "stable" . 1239 | 1240 | bibo:Manual 1241 | a owl:Class ; 1242 | rdfs:label "Manual"@en ; 1243 | rdfs:subClassOf bibo:Document ; 1244 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1245 | rdfs:comment "A small reference book, especially one giving instructions."@en ; 1246 | vs:term_status "unstable" . 1247 | 1248 | bibo:Manuscript 1249 | a owl:Class ; 1250 | rdfs:label "Manuscript"@en ; 1251 | rdfs:subClassOf bibo:Document ; 1252 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1253 | rdfs:comment "An unpublished Document, which may also be submitted to a publisher for publication."@en ; 1254 | vs:term_status "stable" . 1255 | 1256 | bibo:Map 1257 | a owl:Class ; 1258 | rdfs:label "Map"@en ; 1259 | rdfs:subClassOf bibo:Image ; 1260 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1261 | rdfs:comment "A graphical depiction of geographic features."@en ; 1262 | vs:term_status "unstable" . 1263 | 1264 | bibo:MultiVolumeBook 1265 | a owl:Class ; 1266 | rdfs:label "Multivolume Book"@en ; 1267 | rdfs:subClassOf bibo:Collection, [ 1268 | a owl:Restriction ; 1269 | owl:onProperty dc:hasPart ; 1270 | owl:allValuesFrom bibo:Book 1271 | ] ; 1272 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1273 | rdfs:comment "A loose, thematic, collection of Documents, often Books."@en ; 1274 | vs:term_status "stable" . 1275 | 1276 | bibo:Newspaper 1277 | a owl:Class ; 1278 | rdfs:label "Newspaper"@en ; 1279 | rdfs:subClassOf bibo:Periodical, [ 1280 | a owl:Restriction ; 1281 | owl:onProperty dc:hasPart ; 1282 | owl:minCardinality "1"^^xsd:nonNegativeInteger 1283 | ], [ 1284 | a owl:Restriction ; 1285 | owl:onProperty dc:hasPart ; 1286 | owl:allValuesFrom bibo:Issue 1287 | ] ; 1288 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1289 | vs:term_status "stable" ; 1290 | rdfs:comment "A periodical of documents, usually issued daily or weekly, containing current news, editorials, feature articles, and usually advertising."@en . 1291 | 1292 | bibo:Note 1293 | a owl:Class ; 1294 | rdfs:label "Note"@en ; 1295 | rdfs:subClassOf bibo:Document ; 1296 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1297 | vs:term_status "stable" ; 1298 | rdfs:comment "Notes or annotations about a resource."@en . 1299 | 1300 | bibo:Patent 1301 | a owl:Class ; 1302 | rdfs:label "Patent"@en ; 1303 | rdfs:subClassOf bibo:Document ; 1304 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1305 | rdfs:comment "A document describing the exclusive right granted by a government to an inventor to manufacture, use, or sell an invention for a certain number of years."@en ; 1306 | vs:term_status "stable" . 1307 | 1308 | bibo:Performance 1309 | a owl:Class ; 1310 | rdfs:label "Performance"@en ; 1311 | rdfs:subClassOf ; 1312 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1313 | vs:term_status "unstable" ; 1314 | rdfs:comment "A public performance."@en . 1315 | 1316 | bibo:Periodical 1317 | a owl:Class ; 1318 | rdfs:label "Periodical"@en ; 1319 | rdfs:subClassOf bibo:Collection, [ 1320 | a owl:Restriction ; 1321 | owl:onProperty dc:hasPart ; 1322 | owl:minCardinality "1"^^xsd:nonNegativeInteger 1323 | ], [ 1324 | a owl:Restriction ; 1325 | owl:onProperty dc:hasPart ; 1326 | owl:allValuesFrom bibo:Issue 1327 | ] ; 1328 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1329 | vs:term_status "stable" ; 1330 | rdfs:comment "A group of related documents issued at regular intervals."@en . 1331 | 1332 | bibo:PersonalCommunication 1333 | a owl:Class ; 1334 | rdfs:label "Personal Communication"@en ; 1335 | rdfs:subClassOf ; 1336 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1337 | vs:term_status "stable" ; 1338 | rdfs:comment "A communication between an agent and one or more specific recipients."@en . 1339 | 1340 | bibo:PersonalCommunicationDocument 1341 | a owl:Class ; 1342 | rdfs:label "Personal Communication Document"@en ; 1343 | rdfs:subClassOf bibo:Document ; 1344 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1345 | rdfs:comment "A personal communication manifested in some document."@en ; 1346 | vs:term_status "stable" . 1347 | 1348 | bibo:Proceedings 1349 | a owl:Class ; 1350 | rdfs:label "Proceedings"@en ; 1351 | rdfs:subClassOf bibo:Book ; 1352 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1353 | vs:term_status "unstable" ; 1354 | rdfs:comment "A compilation of documents published from an event, such as a conference."@en . 1355 | 1356 | bibo:Quote 1357 | a owl:Class ; 1358 | rdfs:label "Quote"@en ; 1359 | rdfs:subClassOf bibo:Excerpt ; 1360 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1361 | rdfs:comment "An excerpted collection of words."@en ; 1362 | vs:term_status "stable" . 1363 | 1364 | bibo:ReferenceSource 1365 | a owl:Class ; 1366 | rdfs:label "Reference Source"@en ; 1367 | rdfs:subClassOf bibo:Document ; 1368 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1369 | vs:term_status "unstable" ; 1370 | rdfs:comment "A document that presents authoritative reference information, such as a dictionary or encylopedia ."@en . 1371 | 1372 | bibo:Report 1373 | a owl:Class ; 1374 | rdfs:label "Report"@en ; 1375 | rdfs:subClassOf bibo:Document ; 1376 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1377 | rdfs:comment "A document describing an account or statement describing in detail an event, situation, or the like, usually as the result of observation, inquiry, etc.."@en ; 1378 | vs:term_status "stable" . 1379 | 1380 | bibo:Series 1381 | a owl:Class ; 1382 | rdfs:label "Series"@en ; 1383 | rdfs:subClassOf bibo:Collection, [ 1384 | a owl:Restriction ; 1385 | owl:onProperty dc:hasPart ; 1386 | owl:allValuesFrom bibo:Document 1387 | ] ; 1388 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1389 | rdfs:comment "A loose, thematic, collection of Documents, often Books."@en ; 1390 | vs:term_status "stable" . 1391 | 1392 | bibo:Slide 1393 | a owl:Class ; 1394 | rdfs:label "Slide"@en ; 1395 | rdfs:subClassOf bibo:DocumentPart ; 1396 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1397 | rdfs:comment "A slide in a slideshow"@en ; 1398 | vs:term_status "unstable" . 1399 | 1400 | bibo:Slideshow 1401 | a owl:Class ; 1402 | rdfs:label "Slideshow"@en ; 1403 | rdfs:subClassOf bibo:Document, [ 1404 | a owl:Restriction ; 1405 | owl:onProperty dc:hasPart ; 1406 | owl:allValuesFrom bibo:Slide 1407 | ] ; 1408 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1409 | rdfs:comment "A presentation of a series of slides, usually presented in front of an audience with written text and images."@en ; 1410 | vs:term_status "stable" . 1411 | 1412 | bibo:Specification 1413 | a owl:Class ; 1414 | rdfs:label "Specification"@en ; 1415 | rdfs:subClassOf bibo:Document ; 1416 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1417 | vs:term_status "testing" ; 1418 | rdfs:comment "A document describing a specification."@en . 1419 | 1420 | bibo:Standard 1421 | a owl:Class ; 1422 | rdfs:label "Standard"@en ; 1423 | rdfs:subClassOf bibo:Specification ; 1424 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1425 | vs:term_status "stable" ; 1426 | rdfs:comment "A document describing a standard: a specification organized through a standards body."@en . 1427 | 1428 | bibo:Statute 1429 | a owl:Class ; 1430 | rdfs:label "Statute"@en ; 1431 | rdfs:subClassOf bibo:Legislation ; 1432 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1433 | rdfs:comment "A bill enacted into law."@en ; 1434 | vs:term_status "stable" . 1435 | 1436 | bibo:Thesis 1437 | a owl:Class ; 1438 | rdfs:label "Thesis"@en ; 1439 | rdfs:subClassOf bibo:Document ; 1440 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1441 | rdfs:comment "A document created to summarize research findings associated with the completion of an academic degree."@en ; 1442 | vs:term_status "stable" . 1443 | 1444 | bibo:ThesisDegree 1445 | a owl:Class ; 1446 | rdfs:label "Thesis degree"@en ; 1447 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1448 | vs:term_status "stable" ; 1449 | rdfs:comment "The academic degree of a Thesis"@en . 1450 | 1451 | bibo:Webpage 1452 | a owl:Class ; 1453 | rdfs:label "Webpage"@en ; 1454 | rdfs:subClassOf bibo:Document ; 1455 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1456 | vs:term_status "unstable" ; 1457 | rdfs:comment "A web page is an online document available (at least initially) on the world wide web. A web page is written first and foremost to appear on the web, as distinct from other online resources such as books, manuscripts or audio documents which use the web primarily as a distribution mechanism alongside other more traditional methods such as print."@en . 1458 | 1459 | bibo:Website 1460 | a owl:Class ; 1461 | rdfs:label "Website"@en ; 1462 | rdfs:subClassOf bibo:Collection, [ 1463 | a owl:Restriction ; 1464 | owl:onProperty dc:hasPart ; 1465 | owl:minCardinality "1"^^xsd:nonNegativeInteger 1466 | ], [ 1467 | a owl:Restriction ; 1468 | owl:onProperty dc:hasPart ; 1469 | owl:allValuesFrom bibo:Webpage 1470 | ] ; 1471 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1472 | vs:term_status "unstable" ; 1473 | rdfs:comment "A group of Webpages accessible on the Web."@en . 1474 | 1475 | bibo:Workshop 1476 | a owl:Class ; 1477 | rdfs:label "Workshop"@en ; 1478 | rdfs:subClassOf ; 1479 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1480 | rdfs:comment "A seminar, discussion group, or the like, that emphasizes zxchange of ideas and the demonstration and application of techniques, skills, etc."@en ; 1481 | vs:term_status "stable" . 1482 | 1483 | rdf:List a owl:Class . 1484 | rdf:Seq a owl:Class . 1485 | rdfs:Resource a owl:Class . 1486 | owl:Thing a owl:Class . 1487 | foaf:Agent 1488 | a owl:Class ; 1489 | skos:scopeNote "Used to describe any \"agent\" related to bibliographic items. Such agents can be persons, organizations or groups of any kind."@en . 1490 | 1491 | foaf:Document a owl:Class . 1492 | foaf:Image a owl:Class . 1493 | foaf:Organization 1494 | a owl:Class ; 1495 | skos:scopeNote "Ued to describe an organization related to bibliographic items such as a publishing company, etc."@en . 1496 | 1497 | foaf:Person 1498 | a owl:Class ; 1499 | skos:scopeNote "Used to describe a Person related to a bibliographic ite such as an author, an editor, etc."@en . 1500 | 1501 | bibo:bdarcus 1502 | a owl:Thing, owl:NamedIndividual, foaf:Person ; 1503 | rdfs:seeAlso "http://purl.org/net/darcusb/info#me"^^xsd:anyURI ; 1504 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1505 | foaf:name "Bruce D'Arcus" . 1506 | 1507 | bibo:fgiasson 1508 | a owl:Thing, owl:NamedIndividual, foaf:Person ; 1509 | rdfs:seeAlso "http://fgiasson.com/me/"^^xsd:anyURI ; 1510 | rdfs:isDefinedBy "http://purl.org/ontology/bibo/"^^xsd:anyURI ; 1511 | foaf:name "Frederick Giasson" . 1512 | 1513 | 1514 | a owl:Thing, bibo:ThesisDegree, owl:NamedIndividual ; 1515 | rdfs:label "M.A."@en ; 1516 | vs:term_status "stable" ; 1517 | rdfs:comment "masters degree in arts"@en . 1518 | 1519 | 1520 | a owl:Thing, bibo:ThesisDegree, owl:NamedIndividual ; 1521 | rdfs:label "M.S."@en ; 1522 | vs:term_status "stable" ; 1523 | rdfs:comment "masters degree in science"@en . 1524 | 1525 | 1526 | a owl:Thing, bibo:ThesisDegree, owl:NamedIndividual ; 1527 | rdfs:label "PhD degree"@en ; 1528 | rdfs:comment "PhD degree"@en ; 1529 | vs:term_status "stable" . 1530 | 1531 | 1532 | a owl:Thing, bibo:DocumentStatus, owl:NamedIndividual ; 1533 | rdfs:label "accepted"@en ; 1534 | rdfs:comment "Accepted for publication after peer reviewing."@en ; 1535 | vs:term_status "stable" . 1536 | 1537 | 1538 | a owl:Thing, bibo:DocumentStatus, owl:NamedIndividual ; 1539 | rdfs:label "draft"@en ; 1540 | vs:term_status "stable" ; 1541 | rdfs:comment "Document drafted"@en . 1542 | 1543 | 1544 | a owl:Thing, bibo:DocumentStatus, owl:NamedIndividual ; 1545 | rdfs:label "forthcoming"@en ; 1546 | rdfs:comment "Document to be published"@en ; 1547 | vs:term_status "stable" . 1548 | 1549 | 1550 | a owl:Thing, bibo:DocumentStatus, owl:NamedIndividual ; 1551 | rdfs:label "legal"@en ; 1552 | vs:term_status "stable" ; 1553 | rdfs:comment "Legal document"@en . 1554 | 1555 | 1556 | a owl:Thing, bibo:DocumentStatus, owl:NamedIndividual ; 1557 | rdfs:label "non peer reviewed"@en ; 1558 | vs:term_status "stable" ; 1559 | rdfs:comment "A document that is not peer reviewed"@en . 1560 | 1561 | 1562 | a owl:Thing, bibo:DocumentStatus, owl:NamedIndividual ; 1563 | rdfs:label "peer reviewed"@en ; 1564 | rdfs:comment "The process by which articles are chosen to be included in a refereed journal. An editorial board consisting of experts in the same field as the author review the article and decide if it is authoritative enough for publication."@en ; 1565 | vs:term_status "stable" . 1566 | 1567 | 1568 | a owl:Thing, bibo:DocumentStatus, owl:NamedIndividual ; 1569 | rdfs:label "published"@en ; 1570 | rdfs:comment "Published document"@en ; 1571 | vs:term_status "stable" . 1572 | 1573 | 1574 | a owl:Thing, bibo:DocumentStatus, owl:NamedIndividual ; 1575 | rdfs:label "rejected"@en ; 1576 | rdfs:comment "Rejected for publication after peer reviewing."@en ; 1577 | vs:term_status "stable" . 1578 | 1579 | 1580 | a owl:Thing, bibo:DocumentStatus, owl:NamedIndividual ; 1581 | rdfs:label "unpublished"@en ; 1582 | vs:term_status "stable" ; 1583 | rdfs:comment "Unpublished document"@en . 1584 | 1585 | -------------------------------------------------------------------------------- /tests/wildtype_examples/blank_node_object_dot.ttl: -------------------------------------------------------------------------------- 1 | @prefix : . 2 | 3 | 4 | a :Foo; 5 | :fooBar [ 6 | a :barFoo; 7 | ]. -------------------------------------------------------------------------------- /tests/wildtype_examples/dublin_core_elements.ttl: -------------------------------------------------------------------------------- 1 | @prefix rdf: . 2 | @prefix owl: . 3 | @prefix skos: . 4 | @prefix dcam: . 5 | @prefix dcterms: . 6 | @prefix rdfs: . 7 | 8 | 9 | dcterms:modified "2012-06-14"^^ ; 10 | dcterms:publisher ; 11 | dcterms:title "Dublin Core Metadata Element Set, Version 1.1"@en . 12 | 13 | 14 | dcterms:description "The guidelines for using names of persons or organizations as creators also apply to contributors. Typically, the name of a Contributor should be used to indicate the entity."@en ; 15 | dcterms:issued "1999-07-02"^^ ; 16 | a rdf:Property ; 17 | rdfs:comment "An entity responsible for making contributions to the resource."@en ; 18 | rdfs:isDefinedBy ; 19 | rdfs:label "Contributor"@en ; 20 | skos:note "A [second property](/specifications/dublin-core/dcmi-terms/#http://purl.org/dc/terms/contributor) with the same name as this property has been declared in the [dcterms: namespace](http://purl.org/dc/terms/). See the Introduction to the document [DCMI Metadata Terms](/specifications/dublin-core/dcmi-terms/) for an explanation."@en . 21 | 22 | 23 | dcterms:description "Spatial topic and spatial applicability may be a named place or a location specified by its geographic coordinates. Temporal topic may be a named period, date, or date range. A jurisdiction may be a named administrative entity or a geographic place to which the resource applies. Recommended practice is to use a controlled vocabulary such as the Getty Thesaurus of Geographic Names [[TGN](https://www.getty.edu/research/tools/vocabulary/tgn/index.html)]. Where appropriate, named places or time periods may be used in preference to numeric identifiers such as sets of coordinates or date ranges."@en ; 24 | dcterms:issued "1999-07-02"^^ ; 25 | a rdf:Property ; 26 | rdfs:comment "The spatial or temporal topic of the resource, spatial applicability of the resource, or jurisdiction under which the resource is relevant."@en ; 27 | rdfs:isDefinedBy ; 28 | rdfs:label "Coverage"@en ; 29 | skos:note "A [second property](/specifications/dublin-core/dcmi-terms/#http://purl.org/dc/terms/coverage) with the same name as this property has been declared in the [dcterms: namespace](http://purl.org/dc/terms/). See the Introduction to the document [DCMI Metadata Terms](/specifications/dublin-core/dcmi-terms/) for an explanation."@en . 30 | 31 | 32 | dcterms:description "Examples of a Creator include a person, an organization, or a service. Typically, the name of a Creator should be used to indicate the entity."@en ; 33 | dcterms:issued "1999-07-02"^^ ; 34 | a rdf:Property ; 35 | rdfs:comment "An entity primarily responsible for making the resource."@en ; 36 | rdfs:isDefinedBy ; 37 | rdfs:label "Creator"@en ; 38 | skos:note "A [second property](/specifications/dublin-core/dcmi-terms/#http://purl.org/dc/terms/creator) with the same name as this property has been declared in the [dcterms: namespace](http://purl.org/dc/terms/). See the Introduction to the document [DCMI Metadata Terms](/specifications/dublin-core/dcmi-terms/) for an explanation."@en . 39 | 40 | 41 | dcterms:description "Date may be used to express temporal information at any level of granularity. Recommended practice is to express the date, date/time, or period of time according to ISO 8601-1 [[ISO 8601-1](https://www.iso.org/iso-8601-date-and-time-format.html)] or a published profile of the ISO standard, such as the W3C Note on Date and Time Formats [[W3CDTF](https://www.w3.org/TR/NOTE-datetime)] or the Extended Date/Time Format Specification [[EDTF](http://www.loc.gov/standards/datetime/)]. If the full date is unknown, month and year (YYYY-MM) or just year (YYYY) may be used. Date ranges may be specified using ISO 8601 period of time specification in which start and end dates are separated by a '/' (slash) character. Either the start or end date may be missing."@en ; 42 | dcterms:issued "1999-07-02"^^ ; 43 | a rdf:Property ; 44 | rdfs:comment "A point or period of time associated with an event in the lifecycle of the resource."@en ; 45 | rdfs:isDefinedBy ; 46 | rdfs:label "Date"@en ; 47 | skos:note "A [second property](/specifications/dublin-core/dcmi-terms/#http://purl.org/dc/terms/date) with the same name as this property has been declared in the [dcterms: namespace](http://purl.org/dc/terms/). See the Introduction to the document [DCMI Metadata Terms](/specifications/dublin-core/dcmi-terms/) for an explanation."@en . 48 | 49 | 50 | dcterms:description "Description may include but is not limited to: an abstract, a table of contents, a graphical representation, or a free-text account of the resource."@en ; 51 | dcterms:issued "1999-07-02"^^ ; 52 | a rdf:Property ; 53 | rdfs:comment "An account of the resource."@en ; 54 | rdfs:isDefinedBy ; 55 | rdfs:label "Description"@en ; 56 | skos:note "A [second property](/specifications/dublin-core/dcmi-terms/#http://purl.org/dc/terms/description) with the same name as this property has been declared in the [dcterms: namespace](http://purl.org/dc/terms/). See the Introduction to the document [DCMI Metadata Terms](/specifications/dublin-core/dcmi-terms/) for an explanation."@en . 57 | 58 | 59 | dcterms:description "Recommended practice is to use a controlled vocabulary where available. For example, for file formats one could use the list of Internet Media Types [[MIME](https://www.iana.org/assignments/media-types/media-types.xhtml)]."@en ; 60 | dcterms:issued "1999-07-02"^^ ; 61 | a rdf:Property ; 62 | rdfs:comment "The file format, physical medium, or dimensions of the resource."@en ; 63 | rdfs:isDefinedBy ; 64 | rdfs:label "Format"@en ; 65 | skos:note "A [second property](/specifications/dublin-core/dcmi-terms/#http://purl.org/dc/terms/format) with the same name as this property has been declared in the [dcterms: namespace](http://purl.org/dc/terms/). See the Introduction to the document [DCMI Metadata Terms](/specifications/dublin-core/dcmi-terms/) for an explanation."@en . 66 | 67 | 68 | dcterms:description "Recommended practice is to identify the resource by means of a string conforming to an identification system."@en ; 69 | dcterms:issued "1999-07-02"^^ ; 70 | a rdf:Property ; 71 | rdfs:comment "An unambiguous reference to the resource within a given context."@en ; 72 | rdfs:isDefinedBy ; 73 | rdfs:label "Identifier"@en ; 74 | skos:note "A [second property](/specifications/dublin-core/dcmi-terms/#http://purl.org/dc/terms/identifier) with the same name as this property has been declared in the [dcterms: namespace](http://purl.org/dc/terms/). See the Introduction to the document [DCMI Metadata Terms](/specifications/dublin-core/dcmi-terms/) for an explanation."@en . 75 | 76 | 77 | dcterms:description "Recommended practice is to use either a non-literal value representing a language from a controlled vocabulary such as ISO 639-2 or ISO 639-3, or a literal value consisting of an IETF Best Current Practice 47 [[IETF-BCP47](https://tools.ietf.org/html/bcp47)] language tag."@en ; 78 | dcterms:issued "1999-07-02"^^ ; 79 | a rdf:Property ; 80 | rdfs:comment "A language of the resource."@en ; 81 | rdfs:isDefinedBy ; 82 | rdfs:label "Language"@en ; 83 | skos:note "A [second property](/specifications/dublin-core/dcmi-terms/#http://purl.org/dc/terms/language) with the same name as this property has been declared in the [dcterms: namespace](http://purl.org/dc/terms/). See the Introduction to the document [DCMI Metadata Terms](/specifications/dublin-core/dcmi-terms/) for an explanation."@en . 84 | 85 | 86 | dcterms:description "Examples of a Publisher include a person, an organization, or a service. Typically, the name of a Publisher should be used to indicate the entity."@en ; 87 | dcterms:issued "1999-07-02"^^ ; 88 | a rdf:Property ; 89 | rdfs:comment "An entity responsible for making the resource available."@en ; 90 | rdfs:isDefinedBy ; 91 | rdfs:label "Publisher"@en ; 92 | skos:note "A [second property](/specifications/dublin-core/dcmi-terms/#http://purl.org/dc/terms/publisher) with the same name as this property has been declared in the [dcterms: namespace](http://purl.org/dc/terms/). See the Introduction to the document [DCMI Metadata Terms](/specifications/dublin-core/dcmi-terms/) for an explanation."@en . 93 | 94 | 95 | dcterms:description "Recommended practice is to identify the related resource by means of a URI. If this is not possible or feasible, a string conforming to a formal identification system may be provided."@en ; 96 | dcterms:issued "1999-07-02"^^ ; 97 | a rdf:Property ; 98 | rdfs:comment "A related resource."@en ; 99 | rdfs:isDefinedBy ; 100 | rdfs:label "Relation"@en ; 101 | skos:note "A [second property](/specifications/dublin-core/dcmi-terms/#http://purl.org/dc/terms/relation) with the same name as this property has been declared in the [dcterms: namespace](http://purl.org/dc/terms/). See the Introduction to the document [DCMI Metadata Terms](/specifications/dublin-core/dcmi-terms/) for an explanation."@en . 102 | 103 | 104 | dcterms:description "Typically, rights information includes a statement about various property rights associated with the resource, including intellectual property rights."@en ; 105 | dcterms:issued "1999-07-02"^^ ; 106 | a rdf:Property ; 107 | rdfs:comment "Information about rights held in and over the resource."@en ; 108 | rdfs:isDefinedBy ; 109 | rdfs:label "Rights"@en ; 110 | skos:note "A [second property](/specifications/dublin-core/dcmi-terms/#http://purl.org/dc/terms/rights) with the same name as this property has been declared in the [dcterms: namespace](http://purl.org/dc/terms/). See the Introduction to the document [DCMI Metadata Terms](/specifications/dublin-core/dcmi-terms/) for an explanation."@en . 111 | 112 | 113 | dcterms:description "The described resource may be derived from the related resource in whole or in part. Recommended best practice is to identify the related resource by means of a string conforming to a formal identification system."@en ; 114 | dcterms:issued "1999-07-02"^^ ; 115 | a rdf:Property ; 116 | rdfs:comment "A related resource from which the described resource is derived."@en ; 117 | rdfs:isDefinedBy ; 118 | rdfs:label "Source"@en ; 119 | skos:note "A [second property](/specifications/dublin-core/dcmi-terms/#http://purl.org/dc/terms/source) with the same name as this property has been declared in the [dcterms: namespace](http://purl.org/dc/terms/). See the Introduction to the document [DCMI Metadata Terms](/specifications/dublin-core/dcmi-terms/) for an explanation."@en . 120 | 121 | 122 | dcterms:description "Typically, the subject will be represented using keywords, key phrases, or classification codes. Recommended best practice is to use a controlled vocabulary."@en ; 123 | dcterms:issued "1999-07-02"^^ ; 124 | a rdf:Property ; 125 | rdfs:comment "The topic of the resource."@en ; 126 | rdfs:isDefinedBy ; 127 | rdfs:label "Subject"@en ; 128 | skos:note "A [second property](/specifications/dublin-core/dcmi-terms/#http://purl.org/dc/terms/subject) with the same name as this property has been declared in the [dcterms: namespace](http://purl.org/dc/terms/). See the Introduction to the document [DCMI Metadata Terms](/specifications/dublin-core/dcmi-terms/) for an explanation."@en . 129 | 130 | 131 | dcterms:issued "1999-07-02"^^ ; 132 | a rdf:Property ; 133 | rdfs:comment "A name given to the resource."@en ; 134 | rdfs:isDefinedBy ; 135 | rdfs:label "Title"@en ; 136 | skos:note "A [second property](/specifications/dublin-core/dcmi-terms/#http://purl.org/dc/terms/title) with the same name as this property has been declared in the [dcterms: namespace](http://purl.org/dc/terms/). See the Introduction to the document [DCMI Metadata Terms](/specifications/dublin-core/dcmi-terms/) for an explanation."@en . 137 | 138 | 139 | dcterms:description "Recommended practice is to use a controlled vocabulary such as the DCMI Type Vocabulary [[DCMI-TYPE](http://dublincore.org/documents/dcmi-type-vocabulary/)]. To describe the file format, physical medium, or dimensions of the resource, use the Format element."@en ; 140 | dcterms:issued "1999-07-02"^^ ; 141 | a rdf:Property ; 142 | rdfs:comment "The nature or genre of the resource."@en ; 143 | rdfs:isDefinedBy ; 144 | rdfs:label "Type"@en ; 145 | skos:note "A [second property](/specifications/dublin-core/dcmi-terms/#http://purl.org/dc/terms/type) with the same name as this property has been declared in the [dcterms: namespace](http://purl.org/dc/terms/). See the Introduction to the document [DCMI Metadata Terms](/specifications/dublin-core/dcmi-terms/) for an explanation."@en . 146 | 147 | -------------------------------------------------------------------------------- /tests/wildtype_examples/example12_only_decimal.ttl: -------------------------------------------------------------------------------- 1 | @prefix : . 2 | 3 | :atomicMass 4.002602 . 4 | -------------------------------------------------------------------------------- /tests/wildtype_examples/example12_only_double.ttl: -------------------------------------------------------------------------------- 1 | @prefix : . 2 | 3 | :specificGravity 1.663E-4 . 4 | -------------------------------------------------------------------------------- /tests/wildtype_examples/example12_only_integer.ttl: -------------------------------------------------------------------------------- 1 | @prefix : . 2 | 3 | :atomicNumber 2 . 4 | -------------------------------------------------------------------------------- /tests/wildtype_examples/example1_without_a.ttl: -------------------------------------------------------------------------------- 1 | @base . 2 | @prefix rdf: . 3 | @prefix rdfs: . 4 | @prefix foaf: . 5 | @prefix rel: . 6 | 7 | <#green-goblin> 8 | rel:enemyOf <#spiderman> ; 9 | rdfs:type foaf:Person ; # in the context of the Marvel universe 10 | foaf:name "Green Goblin" . 11 | 12 | <#spiderman> 13 | rel:enemyOf <#green-goblin> ; 14 | rdfs:type foaf:Person ; 15 | foaf:name "Spiderman", "Человек-паук"@ru . 16 | -------------------------------------------------------------------------------- /tests/wildtype_examples/example24_simple1.ttl: -------------------------------------------------------------------------------- 1 | @prefix rdf: . 2 | _:b0 rdf:first rdf:other . 3 | -------------------------------------------------------------------------------- /tests/wildtype_examples/example24_simple2.ttl: -------------------------------------------------------------------------------- 1 | @prefix rdf: . 2 | _:b0 rdf:first _:0other . 3 | -------------------------------------------------------------------------------- /tests/wildtype_examples/foaf_mirror.ttl: -------------------------------------------------------------------------------- 1 | @prefix registry: . 2 | @prefix : . 3 | @prefix dc: . 4 | @prefix vs: . 5 | @prefix owl: . 6 | @prefix rdf: . 7 | @prefix wot: . 8 | @prefix xml: . 9 | @prefix xsd: . 10 | @prefix foaf: . 11 | @prefix rdfs: . 12 | @base . 13 | 14 | rdf:type owl:Ontology ; 15 | registry:author "Dan Brickley " , 16 | "Field 33 " , 17 | "Libby Miller " ; 18 | registry:category "Organization" , 19 | "People" ; 20 | registry:keyword "Foaf" , 21 | "Friend of a Friend" , 22 | "people" ; 23 | registry:licenseSPDX "CC-BY-1.0" ; 24 | registry:ontologyFormatVersion "v1" ; 25 | registry:packageName "@foaf_mirror/foaf" ; 26 | registry:packageVersion "0.99.0" ; 27 | registry:repository "https://github.com/field33/ontologies/tree/main/%40foaf_mirror/foaf" ; 28 | registry:shortDescription "Document 14 January 2014 - Paddington Edition. FOAF collects a variety of terms; some describe people, some groups, some documents."@en ; 29 | rdfs:comment """# FOAF Ontology Mirror 30 | This ontology was mirrored from http://xmlns.com/foaf/0.1/ and converted from .rdf to .ttl. In the GitHub repository for this Field (ontology) you'll find the original file. 31 | 32 | Currently the full spec file can be found here: https://web.archive.org/web/20220625074928/http://xmlns.com/foaf/spec/ 33 | 34 | ## FOAF at a glance 35 | FOAF describes the world using simple ideas inspired by the Web. In FOAF descriptions, there are only various kinds of things and links, which we call properties. The types of the things we talk about in FOAF are called classes. FOAF is therefore defined as a dictionary of terms, each of which is either a class or a property. Other projects alongside FOAF provide other sets of classes and properties, many of which are linked with those defined in FOAF. 36 | 37 | FOAF descriptions are themselves published as linked documents in the Web (eg. using RDF/XML or RDFa syntax). The result of the FOAF project is a network of documents describing a network of people (and other stuff). Each FOAF document is itself an encoding of a descriptive network structure. Although these documents do not always agree or tell the truth, they have the useful characteristic that they can be easily merged, allowing partial and decentralised descriptions to be combined in interesting ways. 38 | 39 | FOAF collects a variety of terms; some describe people, some groups, some documents. Different kinds of application can use or ignore different parts of FOAF. The overview here shows one way of viewing FOAF terms: we ignore archaic and historical parts, and divide the rest into terms that only make sense on the Web, and those that have universal applicability when linking people and information."""@en ; 40 | rdfs:label "FOAF Ontology"@en ; 41 | dc:description "The Friend of a Friend (FOAF) RDF vocabulary, described using W3C RDF Schema and the Web Ontology Language." ; 42 | dc:title "Friend of a Friend (FOAF) vocabulary" . 43 | 44 | 45 | ################################################################# 46 | # Annotation properties 47 | ################################################################# 48 | 49 | ### http://purl.org/dc/elements/1.1/date 50 | dc:date rdf:type owl:AnnotationProperty . 51 | 52 | 53 | ### http://purl.org/dc/elements/1.1/description 54 | dc:description rdf:type owl:AnnotationProperty . 55 | 56 | 57 | ### http://purl.org/dc/elements/1.1/title 58 | dc:title rdf:type owl:AnnotationProperty . 59 | 60 | 61 | ### http://www.w3.org/2003/06/sw-vocab-status/ns#term_status 62 | vs:term_status rdf:type owl:AnnotationProperty . 63 | 64 | 65 | ### http://xmlns.com/foaf/0.1/membershipClass 66 | foaf:membershipClass rdf:type owl:AnnotationProperty ; 67 | rdfs:comment "Indicates the class of individuals that are a member of a Group" ; 68 | rdfs:isDefinedBy ; 69 | rdfs:label "membershipClass" ; 70 | vs:term_status "unstable" . 71 | 72 | 73 | ### http://xmlns.com/foaf/0.1/name 74 | foaf:name rdf:type owl:AnnotationProperty ; 75 | rdfs:subPropertyOf rdfs:label . 76 | 77 | 78 | ### http://xmlns.com/wot/0.1/assurance 79 | wot:assurance rdf:type owl:AnnotationProperty . 80 | 81 | 82 | ### http://xmlns.com/wot/0.1/src_assurance 83 | wot:src_assurance rdf:type owl:AnnotationProperty . 84 | 85 | 86 | ################################################################# 87 | # Object Properties 88 | ################################################################# 89 | 90 | ### http://xmlns.com/foaf/0.1/account 91 | foaf:account rdf:type owl:ObjectProperty ; 92 | rdfs:domain foaf:Agent ; 93 | rdfs:range foaf:OnlineAccount ; 94 | rdfs:comment "Indicates an account held by this agent." ; 95 | rdfs:isDefinedBy ; 96 | rdfs:label "account" ; 97 | vs:term_status "testing" . 98 | 99 | 100 | ### http://xmlns.com/foaf/0.1/accountServiceHomepage 101 | foaf:accountServiceHomepage rdf:type owl:ObjectProperty ; 102 | rdfs:domain foaf:OnlineAccount ; 103 | rdfs:range foaf:Document ; 104 | rdfs:comment "Indicates a homepage of the service provide for this online account." ; 105 | rdfs:isDefinedBy ; 106 | rdfs:label "account service homepage" ; 107 | vs:term_status "testing" . 108 | 109 | 110 | ### http://xmlns.com/foaf/0.1/aimChatID 111 | foaf:aimChatID rdf:type owl:ObjectProperty , 112 | owl:InverseFunctionalProperty ; 113 | rdfs:domain foaf:Agent . 114 | 115 | 116 | ### http://xmlns.com/foaf/0.1/based_near 117 | foaf:based_near rdf:type owl:ObjectProperty ; 118 | rdfs:domain ; 119 | rdfs:range ; 120 | rdfs:comment "A location that something is based near, for some broadly human notion of near." ; 121 | rdfs:isDefinedBy ; 122 | rdfs:label "based near" ; 123 | vs:term_status "testing" . 124 | 125 | 126 | ### http://xmlns.com/foaf/0.1/currentProject 127 | foaf:currentProject rdf:type owl:ObjectProperty ; 128 | rdfs:domain foaf:Person ; 129 | rdfs:range owl:Thing ; 130 | rdfs:comment "A current project this person works on." ; 131 | rdfs:isDefinedBy ; 132 | rdfs:label "current project" ; 133 | vs:term_status "testing" . 134 | 135 | 136 | ### http://xmlns.com/foaf/0.1/depiction 137 | foaf:depiction rdf:type owl:ObjectProperty ; 138 | owl:inverseOf foaf:depicts ; 139 | rdfs:domain owl:Thing ; 140 | rdfs:range foaf:Image ; 141 | rdfs:comment "A depiction of some thing." ; 142 | rdfs:isDefinedBy ; 143 | rdfs:label "depiction" ; 144 | vs:term_status "testing" . 145 | 146 | 147 | ### http://xmlns.com/foaf/0.1/depicts 148 | foaf:depicts rdf:type owl:ObjectProperty ; 149 | rdfs:domain foaf:Image ; 150 | rdfs:range owl:Thing ; 151 | rdfs:comment "A thing depicted in this representation." ; 152 | rdfs:isDefinedBy ; 153 | rdfs:label "depicts" ; 154 | vs:term_status "testing" . 155 | 156 | 157 | ### http://xmlns.com/foaf/0.1/focus 158 | foaf:focus rdf:type owl:ObjectProperty ; 159 | rdfs:domain ; 160 | rdfs:range owl:Thing ; 161 | rdfs:comment "The underlying or 'focal' entity associated with some SKOS-described concept." ; 162 | rdfs:isDefinedBy ; 163 | rdfs:label "focus" ; 164 | vs:term_status "testing" . 165 | 166 | 167 | ### http://xmlns.com/foaf/0.1/fundedBy 168 | foaf:fundedBy rdf:type owl:ObjectProperty ; 169 | rdfs:domain owl:Thing ; 170 | rdfs:range owl:Thing ; 171 | rdfs:comment "An organization funding a project or person." ; 172 | rdfs:isDefinedBy ; 173 | rdfs:label "funded by" ; 174 | vs:term_status "archaic" . 175 | 176 | 177 | ### http://xmlns.com/foaf/0.1/holdsAccount 178 | foaf:holdsAccount rdf:type owl:ObjectProperty ; 179 | rdfs:domain foaf:Agent ; 180 | rdfs:range foaf:OnlineAccount ; 181 | rdfs:comment "Indicates an account held by this agent." ; 182 | rdfs:isDefinedBy ; 183 | rdfs:label "account" ; 184 | vs:term_status "archaic" . 185 | 186 | 187 | ### http://xmlns.com/foaf/0.1/homepage 188 | foaf:homepage rdf:type owl:ObjectProperty ; 189 | rdfs:subPropertyOf foaf:isPrimaryTopicOf , 190 | foaf:page ; 191 | rdf:type owl:InverseFunctionalProperty ; 192 | rdfs:domain owl:Thing ; 193 | rdfs:range foaf:Document ; 194 | rdfs:comment "A homepage for some thing." ; 195 | rdfs:isDefinedBy ; 196 | rdfs:label "homepage" ; 197 | vs:term_status "stable" . 198 | 199 | 200 | ### http://xmlns.com/foaf/0.1/icqChatID 201 | foaf:icqChatID rdf:type owl:ObjectProperty , 202 | owl:InverseFunctionalProperty ; 203 | rdfs:domain foaf:Agent . 204 | 205 | 206 | ### http://xmlns.com/foaf/0.1/img 207 | foaf:img rdf:type owl:ObjectProperty ; 208 | rdfs:subPropertyOf foaf:depiction ; 209 | rdfs:domain foaf:Person ; 210 | rdfs:range foaf:Image ; 211 | rdfs:comment "An image that can be used to represent some thing (ie. those depictions which are particularly representative of something, eg. one's photo on a homepage)." ; 212 | rdfs:isDefinedBy ; 213 | rdfs:label "image" ; 214 | vs:term_status "testing" . 215 | 216 | 217 | ### http://xmlns.com/foaf/0.1/interest 218 | foaf:interest rdf:type owl:ObjectProperty ; 219 | rdfs:domain foaf:Agent ; 220 | rdfs:range foaf:Document ; 221 | rdfs:comment "A page about a topic of interest to this person." ; 222 | rdfs:isDefinedBy ; 223 | rdfs:label "interest" ; 224 | vs:term_status "testing" . 225 | 226 | 227 | ### http://xmlns.com/foaf/0.1/isPrimaryTopicOf 228 | foaf:isPrimaryTopicOf rdf:type owl:ObjectProperty ; 229 | rdfs:subPropertyOf foaf:page ; 230 | owl:inverseOf foaf:primaryTopic ; 231 | rdf:type owl:InverseFunctionalProperty ; 232 | rdfs:domain owl:Thing ; 233 | rdfs:range foaf:Document ; 234 | rdfs:comment "A document that this thing is the primary topic of." ; 235 | rdfs:isDefinedBy ; 236 | rdfs:label "is primary topic of" ; 237 | vs:term_status "stable" . 238 | 239 | 240 | ### http://xmlns.com/foaf/0.1/jabberID 241 | foaf:jabberID rdf:type owl:ObjectProperty , 242 | owl:InverseFunctionalProperty ; 243 | rdfs:domain foaf:Agent . 244 | 245 | 246 | ### http://xmlns.com/foaf/0.1/knows 247 | foaf:knows rdf:type owl:ObjectProperty ; 248 | rdfs:domain foaf:Person ; 249 | rdfs:range foaf:Person ; 250 | rdfs:comment "A person known by this person (indicating some level of reciprocated interaction between the parties)." ; 251 | rdfs:isDefinedBy ; 252 | rdfs:label "knows" ; 253 | vs:term_status "stable" . 254 | 255 | 256 | ### http://xmlns.com/foaf/0.1/logo 257 | foaf:logo rdf:type owl:ObjectProperty , 258 | owl:InverseFunctionalProperty ; 259 | rdfs:domain owl:Thing ; 260 | rdfs:range owl:Thing ; 261 | rdfs:comment "A logo representing some thing." ; 262 | rdfs:isDefinedBy ; 263 | rdfs:label "logo" ; 264 | vs:term_status "testing" . 265 | 266 | 267 | ### http://xmlns.com/foaf/0.1/made 268 | foaf:made rdf:type owl:ObjectProperty ; 269 | owl:inverseOf foaf:maker ; 270 | rdfs:domain foaf:Agent ; 271 | rdfs:range owl:Thing ; 272 | rdfs:comment "Something that was made by this agent." ; 273 | rdfs:isDefinedBy ; 274 | rdfs:label "made" ; 275 | vs:term_status "stable" . 276 | 277 | 278 | ### http://xmlns.com/foaf/0.1/maker 279 | foaf:maker rdf:type owl:ObjectProperty ; 280 | rdfs:domain owl:Thing ; 281 | rdfs:range foaf:Agent ; 282 | rdfs:comment "An agent that made this thing." ; 283 | rdfs:isDefinedBy ; 284 | rdfs:label "maker" ; 285 | vs:term_status "stable" . 286 | 287 | 288 | ### http://xmlns.com/foaf/0.1/mbox 289 | foaf:mbox rdf:type owl:ObjectProperty , 290 | owl:InverseFunctionalProperty ; 291 | rdfs:domain foaf:Agent ; 292 | rdfs:range owl:Thing ; 293 | rdfs:comment "A personal mailbox, ie. an Internet mailbox associated with exactly one owner, the first owner of this mailbox. This is a 'static inverse functional property', in that there is (across time and change) at most one individual that ever has any particular value for foaf:mbox." ; 294 | rdfs:isDefinedBy ; 295 | rdfs:label "personal mailbox" ; 296 | vs:term_status "stable" . 297 | 298 | 299 | ### http://xmlns.com/foaf/0.1/mbox_sha1sum 300 | foaf:mbox_sha1sum rdf:type owl:ObjectProperty , 301 | owl:InverseFunctionalProperty ; 302 | rdfs:domain foaf:Agent . 303 | 304 | 305 | ### http://xmlns.com/foaf/0.1/member 306 | foaf:member rdf:type owl:ObjectProperty ; 307 | rdfs:domain foaf:Group ; 308 | rdfs:range foaf:Agent ; 309 | rdfs:comment "Indicates a member of a Group" ; 310 | rdfs:isDefinedBy ; 311 | rdfs:label "member" ; 312 | vs:term_status "stable" . 313 | 314 | 315 | ### http://xmlns.com/foaf/0.1/msnChatID 316 | foaf:msnChatID rdf:type owl:ObjectProperty , 317 | owl:InverseFunctionalProperty ; 318 | rdfs:domain foaf:Agent . 319 | 320 | 321 | ### http://xmlns.com/foaf/0.1/openid 322 | foaf:openid rdf:type owl:ObjectProperty ; 323 | rdfs:subPropertyOf foaf:isPrimaryTopicOf ; 324 | rdf:type owl:InverseFunctionalProperty ; 325 | rdfs:domain foaf:Agent ; 326 | rdfs:range foaf:Document ; 327 | rdfs:comment "An OpenID for an Agent." ; 328 | rdfs:isDefinedBy ; 329 | rdfs:label "openid" ; 330 | vs:term_status "testing" . 331 | 332 | 333 | ### http://xmlns.com/foaf/0.1/page 334 | foaf:page rdf:type owl:ObjectProperty ; 335 | owl:inverseOf foaf:topic ; 336 | rdfs:domain owl:Thing ; 337 | rdfs:range foaf:Document ; 338 | rdfs:comment "A page or document about this thing." ; 339 | rdfs:isDefinedBy ; 340 | rdfs:label "page" ; 341 | vs:term_status "stable" . 342 | 343 | 344 | ### http://xmlns.com/foaf/0.1/pastProject 345 | foaf:pastProject rdf:type owl:ObjectProperty ; 346 | rdfs:domain foaf:Person ; 347 | rdfs:range owl:Thing ; 348 | rdfs:comment "A project this person has previously worked on." ; 349 | rdfs:isDefinedBy ; 350 | rdfs:label "past project" ; 351 | vs:term_status "testing" . 352 | 353 | 354 | ### http://xmlns.com/foaf/0.1/phone 355 | foaf:phone rdf:type owl:ObjectProperty ; 356 | rdfs:comment "A phone, specified using fully qualified tel: URI scheme (refs: http://www.w3.org/Addressing/schemes.html#tel)." ; 357 | rdfs:isDefinedBy ; 358 | rdfs:label "phone" ; 359 | vs:term_status "testing" . 360 | 361 | 362 | ### http://xmlns.com/foaf/0.1/primaryTopic 363 | foaf:primaryTopic rdf:type owl:ObjectProperty , 364 | owl:FunctionalProperty ; 365 | rdfs:domain foaf:Document ; 366 | rdfs:range owl:Thing ; 367 | rdfs:comment "The primary topic of some page or document." ; 368 | rdfs:isDefinedBy ; 369 | rdfs:label "primary topic" ; 370 | vs:term_status "stable" . 371 | 372 | 373 | ### http://xmlns.com/foaf/0.1/publications 374 | foaf:publications rdf:type owl:ObjectProperty ; 375 | rdfs:domain foaf:Person ; 376 | rdfs:range foaf:Document ; 377 | rdfs:comment "A link to the publications of this person." ; 378 | rdfs:isDefinedBy ; 379 | rdfs:label "publications" ; 380 | vs:term_status "testing" . 381 | 382 | 383 | ### http://xmlns.com/foaf/0.1/schoolHomepage 384 | foaf:schoolHomepage rdf:type owl:ObjectProperty ; 385 | rdfs:domain foaf:Person ; 386 | rdfs:range foaf:Document ; 387 | rdfs:comment "A homepage of a school attended by the person." ; 388 | rdfs:isDefinedBy ; 389 | rdfs:label "schoolHomepage" ; 390 | vs:term_status "testing" . 391 | 392 | 393 | ### http://xmlns.com/foaf/0.1/theme 394 | foaf:theme rdf:type owl:ObjectProperty ; 395 | rdfs:domain owl:Thing ; 396 | rdfs:range owl:Thing ; 397 | rdfs:comment "A theme." ; 398 | rdfs:isDefinedBy ; 399 | rdfs:label "theme" ; 400 | vs:term_status "archaic" . 401 | 402 | 403 | ### http://xmlns.com/foaf/0.1/thumbnail 404 | foaf:thumbnail rdf:type owl:ObjectProperty ; 405 | rdfs:domain foaf:Image ; 406 | rdfs:range foaf:Image ; 407 | rdfs:comment "A derived thumbnail image." ; 408 | rdfs:isDefinedBy ; 409 | rdfs:label "thumbnail" ; 410 | vs:term_status "testing" . 411 | 412 | 413 | ### http://xmlns.com/foaf/0.1/tipjar 414 | foaf:tipjar rdf:type owl:ObjectProperty ; 415 | rdfs:subPropertyOf foaf:page ; 416 | rdfs:domain foaf:Agent ; 417 | rdfs:range foaf:Document ; 418 | rdfs:comment "A tipjar document for this agent, describing means for payment and reward." ; 419 | rdfs:isDefinedBy ; 420 | rdfs:label "tipjar" ; 421 | vs:term_status "testing" . 422 | 423 | 424 | ### http://xmlns.com/foaf/0.1/topic 425 | foaf:topic rdf:type owl:ObjectProperty ; 426 | rdfs:domain foaf:Document ; 427 | rdfs:range owl:Thing ; 428 | rdfs:comment "A topic of some page or document." ; 429 | rdfs:isDefinedBy ; 430 | rdfs:label "topic" ; 431 | vs:term_status "testing" . 432 | 433 | 434 | ### http://xmlns.com/foaf/0.1/topic_interest 435 | foaf:topic_interest rdf:type owl:ObjectProperty ; 436 | rdfs:domain foaf:Agent ; 437 | rdfs:range owl:Thing ; 438 | rdfs:comment "A thing of interest to this person." ; 439 | rdfs:isDefinedBy ; 440 | rdfs:label "topic_interest" ; 441 | vs:term_status "testing" . 442 | 443 | 444 | ### http://xmlns.com/foaf/0.1/weblog 445 | foaf:weblog rdf:type owl:ObjectProperty ; 446 | rdfs:subPropertyOf foaf:page ; 447 | rdf:type owl:InverseFunctionalProperty ; 448 | rdfs:domain foaf:Agent ; 449 | rdfs:range foaf:Document ; 450 | rdfs:comment "A weblog of some thing (whether person, group, company etc.)." ; 451 | rdfs:isDefinedBy ; 452 | rdfs:label "weblog" ; 453 | vs:term_status "stable" . 454 | 455 | 456 | ### http://xmlns.com/foaf/0.1/workInfoHomepage 457 | foaf:workInfoHomepage rdf:type owl:ObjectProperty ; 458 | rdfs:domain foaf:Person ; 459 | rdfs:range foaf:Document ; 460 | rdfs:comment "A work info homepage of some person; a page about their work for some organization." ; 461 | rdfs:isDefinedBy ; 462 | rdfs:label "work info homepage" ; 463 | vs:term_status "testing" . 464 | 465 | 466 | ### http://xmlns.com/foaf/0.1/workplaceHomepage 467 | foaf:workplaceHomepage rdf:type owl:ObjectProperty ; 468 | rdfs:domain foaf:Person ; 469 | rdfs:range foaf:Document ; 470 | rdfs:comment "A workplace homepage of some person; the homepage of an organization they work for." ; 471 | rdfs:isDefinedBy ; 472 | rdfs:label "workplace homepage" ; 473 | vs:term_status "testing" . 474 | 475 | 476 | ### http://xmlns.com/foaf/0.1/yahooChatID 477 | foaf:yahooChatID rdf:type owl:ObjectProperty , 478 | owl:InverseFunctionalProperty ; 479 | rdfs:domain foaf:Agent . 480 | 481 | 482 | ################################################################# 483 | # Data properties 484 | ################################################################# 485 | 486 | ### http://xmlns.com/foaf/0.1/accountName 487 | foaf:accountName rdf:type owl:DatatypeProperty ; 488 | rdfs:domain foaf:OnlineAccount ; 489 | rdfs:range rdfs:Literal ; 490 | rdfs:comment "Indicates the name (identifier) associated with this online account." ; 491 | rdfs:isDefinedBy ; 492 | rdfs:label "account name" ; 493 | vs:term_status "testing" . 494 | 495 | 496 | ### http://xmlns.com/foaf/0.1/age 497 | foaf:age rdf:type owl:DatatypeProperty , 498 | owl:FunctionalProperty ; 499 | rdfs:domain foaf:Agent ; 500 | rdfs:range rdfs:Literal ; 501 | rdfs:comment "The age in years of some agent." ; 502 | rdfs:isDefinedBy ; 503 | rdfs:label "age" ; 504 | vs:term_status "unstable" . 505 | 506 | 507 | ### http://xmlns.com/foaf/0.1/aimChatID 508 | foaf:aimChatID rdf:type owl:DatatypeProperty ; 509 | rdfs:subPropertyOf foaf:nick ; 510 | rdfs:range rdfs:Literal . 511 | 512 | 513 | ### http://xmlns.com/foaf/0.1/birthday 514 | foaf:birthday rdf:type owl:DatatypeProperty , 515 | owl:FunctionalProperty ; 516 | rdfs:domain foaf:Agent ; 517 | rdfs:range rdfs:Literal ; 518 | rdfs:comment "The birthday of this Agent, represented in mm-dd string form, eg. '12-31'." ; 519 | rdfs:isDefinedBy ; 520 | rdfs:label "birthday" ; 521 | vs:term_status "unstable" . 522 | 523 | 524 | ### http://xmlns.com/foaf/0.1/dnaChecksum 525 | foaf:dnaChecksum rdf:type owl:DatatypeProperty ; 526 | rdfs:range rdfs:Literal ; 527 | rdfs:comment "A checksum for the DNA of some thing. Joke." ; 528 | rdfs:isDefinedBy ; 529 | rdfs:label "DNA checksum" ; 530 | vs:term_status "archaic" . 531 | 532 | 533 | ### http://xmlns.com/foaf/0.1/familyName 534 | foaf:familyName rdf:type owl:DatatypeProperty ; 535 | rdfs:domain foaf:Person ; 536 | rdfs:range rdfs:Literal ; 537 | rdfs:comment "The family name of some person." ; 538 | rdfs:isDefinedBy ; 539 | rdfs:label "familyName" ; 540 | vs:term_status "testing" . 541 | 542 | 543 | ### http://xmlns.com/foaf/0.1/family_name 544 | foaf:family_name rdf:type owl:DatatypeProperty ; 545 | rdfs:domain foaf:Person ; 546 | rdfs:range rdfs:Literal ; 547 | rdfs:comment "The family name of some person." ; 548 | rdfs:isDefinedBy ; 549 | rdfs:label "family_name" ; 550 | vs:term_status "archaic" . 551 | 552 | 553 | ### http://xmlns.com/foaf/0.1/firstName 554 | foaf:firstName rdf:type owl:DatatypeProperty ; 555 | rdfs:domain foaf:Person ; 556 | rdfs:range rdfs:Literal ; 557 | rdfs:comment "The first name of a person." ; 558 | rdfs:isDefinedBy ; 559 | rdfs:label "firstName" ; 560 | vs:term_status "testing" . 561 | 562 | 563 | ### http://xmlns.com/foaf/0.1/geekcode 564 | foaf:geekcode rdf:type owl:DatatypeProperty ; 565 | rdfs:domain foaf:Person ; 566 | rdfs:range rdfs:Literal ; 567 | rdfs:comment "A textual geekcode for this person, see http://www.geekcode.com/geek.html" ; 568 | rdfs:isDefinedBy ; 569 | rdfs:label "geekcode" ; 570 | vs:term_status "archaic" . 571 | 572 | 573 | ### http://xmlns.com/foaf/0.1/gender 574 | foaf:gender rdf:type owl:DatatypeProperty , 575 | owl:FunctionalProperty ; 576 | rdfs:domain foaf:Agent ; 577 | rdfs:range rdfs:Literal ; 578 | rdfs:comment "The gender of this Agent (typically but not necessarily 'male' or 'female')." ; 579 | rdfs:isDefinedBy ; 580 | rdfs:label "gender" ; 581 | vs:term_status "testing" . 582 | 583 | 584 | ### http://xmlns.com/foaf/0.1/givenName 585 | foaf:givenName rdf:type owl:DatatypeProperty ; 586 | rdfs:comment "The given name of some person." ; 587 | rdfs:isDefinedBy ; 588 | rdfs:label "Given name" ; 589 | vs:term_status "testing" . 590 | 591 | 592 | ### http://xmlns.com/foaf/0.1/givenname 593 | foaf:givenname rdf:type owl:DatatypeProperty ; 594 | rdfs:comment "The given name of some person." ; 595 | rdfs:isDefinedBy ; 596 | rdfs:label "Given name" ; 597 | vs:term_status "archaic" . 598 | 599 | 600 | ### http://xmlns.com/foaf/0.1/icqChatID 601 | foaf:icqChatID rdf:type owl:DatatypeProperty ; 602 | rdfs:subPropertyOf foaf:nick ; 603 | rdfs:range rdfs:Literal . 604 | 605 | 606 | ### http://xmlns.com/foaf/0.1/jabberID 607 | foaf:jabberID rdf:type owl:DatatypeProperty ; 608 | rdfs:range rdfs:Literal . 609 | 610 | 611 | ### http://xmlns.com/foaf/0.1/lastName 612 | foaf:lastName rdf:type owl:DatatypeProperty ; 613 | rdfs:domain foaf:Person ; 614 | rdfs:range rdfs:Literal ; 615 | rdfs:comment "The last name of a person." ; 616 | rdfs:isDefinedBy ; 617 | rdfs:label "lastName" ; 618 | vs:term_status "testing" . 619 | 620 | 621 | ### http://xmlns.com/foaf/0.1/mbox_sha1sum 622 | foaf:mbox_sha1sum rdf:type owl:DatatypeProperty ; 623 | rdfs:range rdfs:Literal . 624 | 625 | 626 | ### http://xmlns.com/foaf/0.1/msnChatID 627 | foaf:msnChatID rdf:type owl:DatatypeProperty ; 628 | rdfs:subPropertyOf foaf:nick ; 629 | rdfs:range rdfs:Literal . 630 | 631 | 632 | ### http://xmlns.com/foaf/0.1/myersBriggs 633 | foaf:myersBriggs rdf:type owl:DatatypeProperty ; 634 | rdfs:domain foaf:Person ; 635 | rdfs:range rdfs:Literal ; 636 | rdfs:comment "A Myers Briggs (MBTI) personality classification." ; 637 | rdfs:isDefinedBy ; 638 | rdfs:label "myersBriggs" ; 639 | vs:term_status "testing" . 640 | 641 | 642 | ### http://xmlns.com/foaf/0.1/name 643 | foaf:name rdf:type owl:DatatypeProperty ; 644 | rdfs:domain owl:Thing ; 645 | rdfs:range rdfs:Literal . 646 | 647 | 648 | ### http://xmlns.com/foaf/0.1/nick 649 | foaf:nick rdf:type owl:DatatypeProperty ; 650 | rdfs:comment "A short informal nickname characterising an agent (includes login identifiers, IRC and other chat nicknames)." ; 651 | rdfs:isDefinedBy ; 652 | rdfs:label "nickname" ; 653 | vs:term_status "testing" . 654 | 655 | 656 | ### http://xmlns.com/foaf/0.1/plan 657 | foaf:plan rdf:type owl:DatatypeProperty ; 658 | rdfs:domain foaf:Person ; 659 | rdfs:range rdfs:Literal ; 660 | rdfs:comment "A .plan comment, in the tradition of finger and '.plan' files." ; 661 | rdfs:isDefinedBy ; 662 | rdfs:label "plan" ; 663 | vs:term_status "testing" . 664 | 665 | 666 | ### http://xmlns.com/foaf/0.1/sha1 667 | foaf:sha1 rdf:type owl:DatatypeProperty ; 668 | rdfs:domain foaf:Document ; 669 | rdfs:comment "A sha1sum hash, in hex." ; 670 | rdfs:isDefinedBy ; 671 | rdfs:label "sha1sum (hex)" ; 672 | vs:term_status "unstable" . 673 | 674 | 675 | ### http://xmlns.com/foaf/0.1/skypeID 676 | foaf:skypeID rdf:type owl:DatatypeProperty ; 677 | rdfs:subPropertyOf foaf:nick ; 678 | rdfs:domain foaf:Agent ; 679 | rdfs:range rdfs:Literal ; 680 | rdfs:comment "A Skype ID" ; 681 | rdfs:isDefinedBy ; 682 | rdfs:label "Skype ID" ; 683 | vs:term_status "testing" . 684 | 685 | 686 | ### http://xmlns.com/foaf/0.1/status 687 | foaf:status rdf:type owl:DatatypeProperty ; 688 | rdfs:domain foaf:Agent ; 689 | rdfs:range rdfs:Literal ; 690 | rdfs:comment "A string expressing what the user is happy for the general public (normally) to know about their current activity." ; 691 | rdfs:isDefinedBy ; 692 | rdfs:label "status" ; 693 | vs:term_status "unstable" . 694 | 695 | 696 | ### http://xmlns.com/foaf/0.1/surname 697 | foaf:surname rdf:type owl:DatatypeProperty ; 698 | rdfs:domain foaf:Person ; 699 | rdfs:range rdfs:Literal ; 700 | rdfs:comment "The surname of some person." ; 701 | rdfs:isDefinedBy ; 702 | rdfs:label "Surname" ; 703 | vs:term_status "archaic" . 704 | 705 | 706 | ### http://xmlns.com/foaf/0.1/title 707 | foaf:title rdf:type owl:DatatypeProperty ; 708 | rdfs:comment "Title (Mr, Mrs, Ms, Dr. etc)" ; 709 | rdfs:isDefinedBy ; 710 | rdfs:label "title" ; 711 | vs:term_status "testing" . 712 | 713 | 714 | ### http://xmlns.com/foaf/0.1/yahooChatID 715 | foaf:yahooChatID rdf:type owl:DatatypeProperty ; 716 | rdfs:subPropertyOf foaf:nick ; 717 | rdfs:range rdfs:Literal . 718 | 719 | 720 | ################################################################# 721 | # Classes 722 | ################################################################# 723 | 724 | ### http://purl.org/dc/terms/Agent 725 | rdf:type owl:Class ; 726 | owl:equivalentClass foaf:Agent . 727 | 728 | 729 | ### http://schema.org/CreativeWork 730 | rdf:type owl:Class ; 731 | owl:equivalentClass foaf:Document . 732 | 733 | 734 | ### http://schema.org/ImageObject 735 | rdf:type owl:Class ; 736 | owl:equivalentClass foaf:Image . 737 | 738 | 739 | ### http://schema.org/Person 740 | rdf:type owl:Class ; 741 | owl:equivalentClass foaf:Person . 742 | 743 | 744 | ### http://www.w3.org/2000/01/rdf-schema#Class 745 | rdfs:Class rdf:type owl:Class . 746 | 747 | 748 | ### http://www.w3.org/2000/10/swap/pim/contact#Person 749 | rdf:type owl:Class ; 750 | owl:equivalentClass foaf:Person . 751 | 752 | 753 | ### http://www.w3.org/2002/07/owl#Thing 754 | owl:Thing rdfs:label "Thing" . 755 | 756 | 757 | ### http://www.w3.org/2003/01/geo/wgs84_pos#SpatialThing 758 | rdf:type owl:Class ; 759 | rdfs:label "Spatial Thing" . 760 | 761 | 762 | ### http://www.w3.org/2004/02/skos/core#Concept 763 | rdf:type owl:Class ; 764 | rdfs:label "Concept" . 765 | 766 | 767 | ### http://xmlns.com/foaf/0.1/Agent 768 | foaf:Agent rdf:type owl:Class ; 769 | rdfs:comment "An agent (eg. person, group, software or physical artifact)." ; 770 | rdfs:label "Agent" ; 771 | vs:term_status "stable" . 772 | 773 | 774 | ### http://xmlns.com/foaf/0.1/Document 775 | foaf:Document rdf:type owl:Class ; 776 | owl:disjointWith foaf:Organization , 777 | foaf:Project ; 778 | rdfs:comment "A document." ; 779 | rdfs:isDefinedBy ; 780 | rdfs:label "Document" ; 781 | vs:term_status "stable" . 782 | 783 | 784 | ### http://xmlns.com/foaf/0.1/Group 785 | foaf:Group rdf:type owl:Class ; 786 | rdfs:subClassOf foaf:Agent ; 787 | rdfs:comment "A class of Agents." ; 788 | rdfs:label "Group" ; 789 | vs:term_status "stable" . 790 | 791 | 792 | ### http://xmlns.com/foaf/0.1/Image 793 | foaf:Image rdf:type owl:Class ; 794 | rdfs:subClassOf foaf:Document ; 795 | rdfs:comment "An image." ; 796 | rdfs:isDefinedBy ; 797 | rdfs:label "Image" ; 798 | vs:term_status "stable" . 799 | 800 | 801 | ### http://xmlns.com/foaf/0.1/LabelProperty 802 | foaf:LabelProperty rdf:type owl:Class ; 803 | rdfs:comment "A foaf:LabelProperty is any RDF property with texual values that serve as labels." ; 804 | rdfs:isDefinedBy ; 805 | rdfs:label "Label Property" ; 806 | vs:term_status "unstable" . 807 | 808 | 809 | ### http://xmlns.com/foaf/0.1/OnlineAccount 810 | foaf:OnlineAccount rdf:type owl:Class ; 811 | rdfs:subClassOf owl:Thing ; 812 | rdfs:comment "An online account." ; 813 | rdfs:isDefinedBy ; 814 | rdfs:label "Online Account" ; 815 | vs:term_status "testing" . 816 | 817 | 818 | ### http://xmlns.com/foaf/0.1/OnlineChatAccount 819 | foaf:OnlineChatAccount rdf:type owl:Class ; 820 | rdfs:subClassOf foaf:OnlineAccount ; 821 | rdfs:comment "An online chat account." ; 822 | rdfs:isDefinedBy ; 823 | rdfs:label "Online Chat Account" ; 824 | vs:term_status "unstable" . 825 | 826 | 827 | ### http://xmlns.com/foaf/0.1/OnlineEcommerceAccount 828 | foaf:OnlineEcommerceAccount rdf:type owl:Class ; 829 | rdfs:subClassOf foaf:OnlineAccount ; 830 | rdfs:comment "An online e-commerce account." ; 831 | rdfs:isDefinedBy ; 832 | rdfs:label "Online E-commerce Account" ; 833 | vs:term_status "unstable" . 834 | 835 | 836 | ### http://xmlns.com/foaf/0.1/OnlineGamingAccount 837 | foaf:OnlineGamingAccount rdf:type owl:Class ; 838 | rdfs:subClassOf foaf:OnlineAccount ; 839 | rdfs:comment "An online gaming account." ; 840 | rdfs:isDefinedBy ; 841 | rdfs:label "Online Gaming Account" ; 842 | vs:term_status "unstable" . 843 | 844 | 845 | ### http://xmlns.com/foaf/0.1/Organization 846 | foaf:Organization rdf:type owl:Class ; 847 | rdfs:subClassOf foaf:Agent ; 848 | owl:disjointWith foaf:Person ; 849 | rdfs:comment "An organization." ; 850 | rdfs:isDefinedBy ; 851 | rdfs:label "Organization" ; 852 | vs:term_status "stable" . 853 | 854 | 855 | ### http://xmlns.com/foaf/0.1/Person 856 | foaf:Person rdf:type owl:Class ; 857 | rdfs:subClassOf , 858 | foaf:Agent ; 859 | owl:disjointWith foaf:Project ; 860 | rdfs:comment "A person." ; 861 | rdfs:isDefinedBy ; 862 | rdfs:label "Person" ; 863 | vs:term_status "stable" . 864 | 865 | 866 | ### http://xmlns.com/foaf/0.1/PersonalProfileDocument 867 | foaf:PersonalProfileDocument rdf:type owl:Class ; 868 | rdfs:subClassOf foaf:Document ; 869 | rdfs:comment "A personal profile RDF document." ; 870 | rdfs:label "PersonalProfileDocument" ; 871 | vs:term_status "testing" . 872 | 873 | 874 | ### http://xmlns.com/foaf/0.1/Project 875 | foaf:Project rdf:type owl:Class ; 876 | rdfs:comment "A project (a collective endeavour of some kind)." ; 877 | rdfs:isDefinedBy ; 878 | rdfs:label "Project" ; 879 | vs:term_status "testing" . 880 | 881 | 882 | ################################################################# 883 | # Annotations 884 | ################################################################# 885 | 886 | foaf:aimChatID rdfs:isDefinedBy ; 887 | vs:term_status "testing" ; 888 | rdfs:comment "An AIM chat ID" ; 889 | rdfs:label "AIM chat ID" . 890 | 891 | 892 | foaf:icqChatID rdfs:comment "An ICQ chat ID" ; 893 | rdfs:label "ICQ chat ID" ; 894 | rdfs:isDefinedBy ; 895 | vs:term_status "testing" . 896 | 897 | 898 | foaf:jabberID rdfs:comment "A jabber ID for something." ; 899 | vs:term_status "testing" ; 900 | rdfs:isDefinedBy ; 901 | rdfs:label "jabber ID" . 902 | 903 | 904 | foaf:mbox_sha1sum vs:term_status "testing" ; 905 | rdfs:label "sha1sum of a personal mailbox URI name" ; 906 | rdfs:isDefinedBy ; 907 | rdfs:comment "The sha1sum of the URI of an Internet mailbox associated with exactly one owner, the first owner of the mailbox." . 908 | 909 | 910 | foaf:msnChatID rdfs:isDefinedBy ; 911 | rdfs:label "MSN chat ID" ; 912 | rdfs:comment "An MSN chat ID" ; 913 | vs:term_status "testing" . 914 | 915 | 916 | foaf:name rdfs:label "name" ; 917 | rdfs:isDefinedBy ; 918 | rdfs:comment "A name for some thing." ; 919 | vs:term_status "testing" . 920 | 921 | 922 | foaf:yahooChatID rdfs:isDefinedBy ; 923 | rdfs:comment "A Yahoo chat ID" ; 924 | rdfs:label "Yahoo chat ID" ; 925 | vs:term_status "testing" . 926 | 927 | 928 | ### Generated by the OWL API (version 4.5.9.2019-02-01T07:24:44Z) https://github.com/owlcs/owlapi 929 | -------------------------------------------------------------------------------- /tests/wildtype_examples/leading_whitespace_base.ttl: -------------------------------------------------------------------------------- 1 | 2 | @base . 3 | @prefix : . 4 | -------------------------------------------------------------------------------- /tests/wildtype_examples/leading_whitespace_prefix.ttl: -------------------------------------------------------------------------------- 1 | 2 | @prefix : . 3 | @base . 4 | -------------------------------------------------------------------------------- /tests/wildtype_examples/nested_lists.ttl: -------------------------------------------------------------------------------- 1 | @prefix owl: . 2 | @prefix rdf: . 3 | @prefix rdfs: . 4 | @prefix : . 5 | 6 | :Foo rdfs:subClassOf [ 7 | owl:allValuesFrom [ rdf:type owl:Class ] 8 | ] . 9 | -------------------------------------------------------------------------------- /tests/wildtype_examples/nested_lists2.ttl: -------------------------------------------------------------------------------- 1 | @prefix owl: . 2 | @prefix rdf: . 3 | @prefix rdfs: . 4 | @prefix : . 5 | 6 | :Foo rdf:type owl:Class ; 7 | rdfs:subClassOf :Bar , 8 | [ rdf:type owl:Restriction ; 9 | owl:onProperty :fooBaring ; 10 | owl:allValuesFrom [ rdf:type owl:Class ; 11 | owl:oneOf ( :One 12 | :Two 13 | :Three 14 | ) 15 | ] 16 | ] , 17 | [ rdf:type owl:Restriction ; 18 | owl:onProperty :barFooing ; 19 | owl:allValuesFrom :Toasty 20 | ] ; 21 | rdfs:label "Hello world"@en . 22 | -------------------------------------------------------------------------------- /tests/wildtype_examples/owl.ttl: -------------------------------------------------------------------------------- 1 | @prefix dc: . 2 | @prefix grddl: . 3 | @prefix owl: . 4 | @prefix rdf: . 5 | @prefix rdfs: . 6 | @prefix xml: . 7 | @prefix xsd: . 8 | 9 | a owl:Ontology ; 10 | dc:title "The OWL 2 Schema vocabulary (OWL 2)" ; 11 | rdfs:comment """ 12 | This ontology partially describes the built-in classes and 13 | properties that together form the basis of the RDF/XML syntax of OWL 2. 14 | The content of this ontology is based on Tables 6.1 and 6.2 15 | in Section 6.4 of the OWL 2 RDF-Based Semantics specification, 16 | available at http://www.w3.org/TR/owl2-rdf-based-semantics/. 17 | Please note that those tables do not include the different annotations 18 | (labels, comments and rdfs:isDefinedBy links) used in this file. 19 | Also note that the descriptions provided in this ontology do not 20 | provide a complete and correct formal description of either the syntax 21 | or the semantics of the introduced terms (please see the OWL 2 22 | recommendations for the complete and normative specifications). 23 | Furthermore, the information provided by this ontology may be 24 | misleading if not used with care. This ontology SHOULD NOT be imported 25 | into OWL ontologies. Importing this file into an OWL 2 DL ontology 26 | will cause it to become an OWL 2 Full ontology and may have other, 27 | unexpected, consequences. 28 | """ ; 29 | rdfs:isDefinedBy 30 | , 31 | , 32 | ; 33 | rdfs:seeAlso , 34 | ; 35 | owl:imports ; 36 | owl:versionIRI ; 37 | owl:versionInfo "$Date: 2009/11/15 10:54:12 $" ; 38 | grddl:namespaceTransformation . 39 | 40 | 41 | owl:AllDifferent a rdfs:Class ; 42 | rdfs:label "AllDifferent" ; 43 | rdfs:comment "The class of collections of pairwise different individuals." ; 44 | rdfs:isDefinedBy ; 45 | rdfs:subClassOf rdfs:Resource . 46 | 47 | owl:AllDisjointClasses a rdfs:Class ; 48 | rdfs:label "AllDisjointClasses" ; 49 | rdfs:comment "The class of collections of pairwise disjoint classes." ; 50 | rdfs:isDefinedBy ; 51 | rdfs:subClassOf rdfs:Resource . 52 | 53 | owl:AllDisjointProperties a rdfs:Class ; 54 | rdfs:label "AllDisjointProperties" ; 55 | rdfs:comment "The class of collections of pairwise disjoint properties." ; 56 | rdfs:isDefinedBy ; 57 | rdfs:subClassOf rdfs:Resource . 58 | 59 | owl:Annotation a rdfs:Class ; 60 | rdfs:label "Annotation" ; 61 | rdfs:comment "The class of annotated annotations for which the RDF serialization consists of an annotated subject, predicate and object." ; 62 | rdfs:isDefinedBy ; 63 | rdfs:subClassOf rdfs:Resource . 64 | 65 | owl:AnnotationProperty a rdfs:Class ; 66 | rdfs:label "AnnotationProperty" ; 67 | rdfs:comment "The class of annotation properties." ; 68 | rdfs:isDefinedBy ; 69 | rdfs:subClassOf rdf:Property . 70 | 71 | owl:AsymmetricProperty a rdfs:Class ; 72 | rdfs:label "AsymmetricProperty" ; 73 | rdfs:comment "The class of asymmetric properties." ; 74 | rdfs:isDefinedBy ; 75 | rdfs:subClassOf owl:ObjectProperty . 76 | 77 | owl:Axiom a rdfs:Class ; 78 | rdfs:label "Axiom" ; 79 | rdfs:comment "The class of annotated axioms for which the RDF serialization consists of an annotated subject, predicate and object." ; 80 | rdfs:isDefinedBy ; 81 | rdfs:subClassOf rdfs:Resource . 82 | 83 | owl:Class a rdfs:Class ; 84 | rdfs:label "Class" ; 85 | rdfs:comment "The class of OWL classes." ; 86 | rdfs:isDefinedBy ; 87 | rdfs:subClassOf rdfs:Class . 88 | 89 | owl:DataRange a rdfs:Class ; 90 | rdfs:label "DataRange" ; 91 | rdfs:comment "The class of OWL data ranges, which are special kinds of datatypes. Note: The use of the IRI owl:DataRange has been deprecated as of OWL 2. The IRI rdfs:Datatype SHOULD be used instead." ; 92 | rdfs:isDefinedBy ; 93 | rdfs:subClassOf rdfs:Datatype . 94 | 95 | owl:DatatypeProperty a rdfs:Class ; 96 | rdfs:label "DatatypeProperty" ; 97 | rdfs:comment "The class of data properties." ; 98 | rdfs:isDefinedBy ; 99 | rdfs:subClassOf rdf:Property . 100 | 101 | owl:DeprecatedClass a rdfs:Class ; 102 | rdfs:label "DeprecatedClass" ; 103 | rdfs:comment "The class of deprecated classes." ; 104 | rdfs:isDefinedBy ; 105 | rdfs:subClassOf rdfs:Class . 106 | 107 | owl:DeprecatedProperty a rdfs:Class ; 108 | rdfs:label "DeprecatedProperty" ; 109 | rdfs:comment "The class of deprecated properties." ; 110 | rdfs:isDefinedBy ; 111 | rdfs:subClassOf rdf:Property . 112 | 113 | owl:FunctionalProperty a rdfs:Class ; 114 | rdfs:label "FunctionalProperty" ; 115 | rdfs:comment "The class of functional properties." ; 116 | rdfs:isDefinedBy ; 117 | rdfs:subClassOf rdf:Property . 118 | 119 | owl:InverseFunctionalProperty a rdfs:Class ; 120 | rdfs:label "InverseFunctionalProperty" ; 121 | rdfs:comment "The class of inverse-functional properties." ; 122 | rdfs:isDefinedBy ; 123 | rdfs:subClassOf owl:ObjectProperty . 124 | 125 | owl:IrreflexiveProperty a rdfs:Class ; 126 | rdfs:label "IrreflexiveProperty" ; 127 | rdfs:comment "The class of irreflexive properties." ; 128 | rdfs:isDefinedBy ; 129 | rdfs:subClassOf owl:ObjectProperty . 130 | 131 | owl:NamedIndividual a rdfs:Class ; 132 | rdfs:label "NamedIndividual" ; 133 | rdfs:comment "The class of named individuals." ; 134 | rdfs:isDefinedBy ; 135 | rdfs:subClassOf owl:Thing . 136 | 137 | owl:NegativePropertyAssertion a rdfs:Class ; 138 | rdfs:label "NegativePropertyAssertion" ; 139 | rdfs:comment "The class of negative property assertions." ; 140 | rdfs:isDefinedBy ; 141 | rdfs:subClassOf rdfs:Resource . 142 | 143 | owl:Nothing a owl:Class ; 144 | rdfs:label "Nothing" ; 145 | rdfs:comment "This is the empty class." ; 146 | rdfs:isDefinedBy ; 147 | rdfs:subClassOf owl:Thing . 148 | 149 | owl:ObjectProperty a rdfs:Class ; 150 | rdfs:label "ObjectProperty" ; 151 | rdfs:comment "The class of object properties." ; 152 | rdfs:isDefinedBy ; 153 | rdfs:subClassOf rdf:Property . 154 | 155 | owl:Ontology a rdfs:Class ; 156 | rdfs:label "Ontology" ; 157 | rdfs:comment "The class of ontologies." ; 158 | rdfs:isDefinedBy ; 159 | rdfs:subClassOf rdfs:Resource . 160 | 161 | owl:OntologyProperty a rdfs:Class ; 162 | rdfs:label "OntologyProperty" ; 163 | rdfs:comment "The class of ontology properties." ; 164 | rdfs:isDefinedBy ; 165 | rdfs:subClassOf rdf:Property . 166 | 167 | owl:ReflexiveProperty a rdfs:Class ; 168 | rdfs:label "ReflexiveProperty" ; 169 | rdfs:comment "The class of reflexive properties." ; 170 | rdfs:isDefinedBy ; 171 | rdfs:subClassOf owl:ObjectProperty . 172 | 173 | owl:Restriction a rdfs:Class ; 174 | rdfs:label "Restriction" ; 175 | rdfs:comment "The class of property restrictions." ; 176 | rdfs:isDefinedBy ; 177 | rdfs:subClassOf owl:Class . 178 | 179 | owl:SymmetricProperty a rdfs:Class ; 180 | rdfs:label "SymmetricProperty" ; 181 | rdfs:comment "The class of symmetric properties." ; 182 | rdfs:isDefinedBy ; 183 | rdfs:subClassOf owl:ObjectProperty . 184 | 185 | owl:TransitiveProperty a rdfs:Class ; 186 | rdfs:label "TransitiveProperty" ; 187 | rdfs:comment "The class of transitive properties." ; 188 | rdfs:isDefinedBy ; 189 | rdfs:subClassOf owl:ObjectProperty . 190 | 191 | owl:Thing a owl:Class ; 192 | rdfs:label "Thing" ; 193 | rdfs:comment "The class of OWL individuals." ; 194 | rdfs:isDefinedBy . 195 | 196 | owl:allValuesFrom a rdf:Property ; 197 | rdfs:label "allValuesFrom" ; 198 | rdfs:comment "The property that determines the class that a universal property restriction refers to." ; 199 | rdfs:domain owl:Restriction ; 200 | rdfs:isDefinedBy ; 201 | rdfs:range rdfs:Class . 202 | 203 | owl:annotatedProperty a rdf:Property ; 204 | rdfs:label "annotatedProperty" ; 205 | rdfs:comment "The property that determines the predicate of an annotated axiom or annotated annotation." ; 206 | rdfs:domain rdfs:Resource ; 207 | rdfs:isDefinedBy ; 208 | rdfs:range rdfs:Resource . 209 | 210 | owl:annotatedSource a rdf:Property ; 211 | rdfs:label "annotatedSource" ; 212 | rdfs:comment "The property that determines the subject of an annotated axiom or annotated annotation." ; 213 | rdfs:domain rdfs:Resource ; 214 | rdfs:isDefinedBy ; 215 | rdfs:range rdfs:Resource . 216 | 217 | owl:annotatedTarget a rdf:Property ; 218 | rdfs:label "annotatedTarget" ; 219 | rdfs:comment "The property that determines the object of an annotated axiom or annotated annotation." ; 220 | rdfs:domain rdfs:Resource ; 221 | rdfs:isDefinedBy ; 222 | rdfs:range rdfs:Resource . 223 | 224 | owl:assertionProperty a rdf:Property ; 225 | rdfs:label "assertionProperty" ; 226 | rdfs:comment "The property that determines the predicate of a negative property assertion." ; 227 | rdfs:domain owl:NegativePropertyAssertion ; 228 | rdfs:isDefinedBy ; 229 | rdfs:range rdf:Property . 230 | 231 | owl:backwardCompatibleWith a owl:AnnotationProperty, owl:OntologyProperty ; 232 | rdfs:label "backwardCompatibleWith" ; 233 | rdfs:comment "The annotation property that indicates that a given ontology is backward compatible with another ontology." ; 234 | rdfs:domain owl:Ontology ; 235 | rdfs:isDefinedBy ; 236 | rdfs:range owl:Ontology . 237 | 238 | owl:bottomDataProperty a owl:DatatypeProperty ; 239 | rdfs:label "bottomDataProperty" ; 240 | rdfs:comment "The data property that does not relate any individual to any data value." ; 241 | rdfs:domain owl:Thing ; 242 | rdfs:isDefinedBy ; 243 | rdfs:range rdfs:Literal . 244 | 245 | owl:bottomObjectProperty a owl:ObjectProperty ; 246 | rdfs:label "bottomObjectProperty" ; 247 | rdfs:comment "The object property that does not relate any two individuals." ; 248 | rdfs:domain owl:Thing ; 249 | rdfs:isDefinedBy ; 250 | rdfs:range owl:Thing . 251 | 252 | owl:cardinality a rdf:Property ; 253 | rdfs:label "cardinality" ; 254 | rdfs:comment "The property that determines the cardinality of an exact cardinality restriction." ; 255 | rdfs:domain owl:Restriction ; 256 | rdfs:isDefinedBy ; 257 | rdfs:range xsd:nonNegativeInteger . 258 | 259 | owl:complementOf a rdf:Property ; 260 | rdfs:label "complementOf" ; 261 | rdfs:comment "The property that determines that a given class is the complement of another class." ; 262 | rdfs:domain owl:Class ; 263 | rdfs:isDefinedBy ; 264 | rdfs:range owl:Class . 265 | 266 | owl:datatypeComplementOf a rdf:Property ; 267 | rdfs:label "datatypeComplementOf" ; 268 | rdfs:comment "The property that determines that a given data range is the complement of another data range with respect to the data domain." ; 269 | rdfs:domain rdfs:Datatype ; 270 | rdfs:isDefinedBy ; 271 | rdfs:range rdfs:Datatype . 272 | 273 | owl:deprecated a owl:AnnotationProperty ; 274 | rdfs:label "deprecated" ; 275 | rdfs:comment "The annotation property that indicates that a given entity has been deprecated." ; 276 | rdfs:domain rdfs:Resource ; 277 | rdfs:isDefinedBy ; 278 | rdfs:range rdfs:Resource . 279 | 280 | owl:differentFrom a rdf:Property ; 281 | rdfs:label "differentFrom" ; 282 | rdfs:comment "The property that determines that two given individuals are different." ; 283 | rdfs:domain owl:Thing ; 284 | rdfs:isDefinedBy ; 285 | rdfs:range owl:Thing . 286 | 287 | owl:disjointUnionOf a rdf:Property ; 288 | rdfs:label "disjointUnionOf" ; 289 | rdfs:comment "The property that determines that a given class is equivalent to the disjoint union of a collection of other classes." ; 290 | rdfs:domain owl:Class ; 291 | rdfs:isDefinedBy ; 292 | rdfs:range rdf:List . 293 | 294 | owl:disjointWith a rdf:Property ; 295 | rdfs:label "disjointWith" ; 296 | rdfs:comment "The property that determines that two given classes are disjoint." ; 297 | rdfs:domain owl:Class ; 298 | rdfs:isDefinedBy ; 299 | rdfs:range owl:Class . 300 | 301 | owl:distinctMembers a rdf:Property ; 302 | rdfs:label "distinctMembers" ; 303 | rdfs:comment "The property that determines the collection of pairwise different individuals in a owl:AllDifferent axiom." ; 304 | rdfs:domain owl:AllDifferent ; 305 | rdfs:isDefinedBy ; 306 | rdfs:range rdf:List . 307 | 308 | owl:equivalentClass a rdf:Property ; 309 | rdfs:label "equivalentClass" ; 310 | rdfs:comment "The property that determines that two given classes are equivalent, and that is used to specify datatype definitions." ; 311 | rdfs:domain rdfs:Class ; 312 | rdfs:isDefinedBy ; 313 | rdfs:range rdfs:Class . 314 | 315 | owl:equivalentProperty a rdf:Property ; 316 | rdfs:label "equivalentProperty" ; 317 | rdfs:comment "The property that determines that two given properties are equivalent." ; 318 | rdfs:domain rdf:Property ; 319 | rdfs:isDefinedBy ; 320 | rdfs:range rdf:Property . 321 | 322 | owl:hasKey a rdf:Property ; 323 | rdfs:label "hasKey" ; 324 | rdfs:comment "The property that determines the collection of properties that jointly build a key." ; 325 | rdfs:domain owl:Class ; 326 | rdfs:isDefinedBy ; 327 | rdfs:range rdf:List . 328 | 329 | owl:hasSelf a rdf:Property ; 330 | rdfs:label "hasSelf" ; 331 | rdfs:comment "The property that determines the property that a self restriction refers to." ; 332 | rdfs:domain owl:Restriction ; 333 | rdfs:isDefinedBy ; 334 | rdfs:range rdfs:Resource . 335 | 336 | owl:hasValue a rdf:Property ; 337 | rdfs:label "hasValue" ; 338 | rdfs:comment "The property that determines the individual that a has-value restriction refers to." ; 339 | rdfs:domain owl:Restriction ; 340 | rdfs:isDefinedBy ; 341 | rdfs:range rdfs:Resource . 342 | 343 | owl:imports a owl:OntologyProperty ; 344 | rdfs:label "imports" ; 345 | rdfs:comment "The property that is used for importing other ontologies into a given ontology." ; 346 | rdfs:domain owl:Ontology ; 347 | rdfs:isDefinedBy ; 348 | rdfs:range owl:Ontology . 349 | 350 | owl:incompatibleWith a owl:AnnotationProperty, owl:OntologyProperty ; 351 | rdfs:label "incompatibleWith" ; 352 | rdfs:comment "The annotation property that indicates that a given ontology is incompatible with another ontology." ; 353 | rdfs:domain owl:Ontology ; 354 | rdfs:isDefinedBy ; 355 | rdfs:range owl:Ontology . 356 | 357 | owl:intersectionOf a rdf:Property ; 358 | rdfs:label "intersectionOf" ; 359 | rdfs:comment "The property that determines the collection of classes or data ranges that build an intersection." ; 360 | rdfs:domain rdfs:Class ; 361 | rdfs:isDefinedBy ; 362 | rdfs:range rdf:List . 363 | 364 | owl:inverseOf a rdf:Property ; 365 | rdfs:label "inverseOf" ; 366 | rdfs:comment "The property that determines that two given properties are inverse." ; 367 | rdfs:domain owl:ObjectProperty ; 368 | rdfs:isDefinedBy ; 369 | rdfs:range owl:ObjectProperty . 370 | 371 | owl:maxCardinality a rdf:Property ; 372 | rdfs:label "maxCardinality" ; 373 | rdfs:comment "The property that determines the cardinality of a maximum cardinality restriction." ; 374 | rdfs:domain owl:Restriction ; 375 | rdfs:isDefinedBy ; 376 | rdfs:range xsd:nonNegativeInteger . 377 | 378 | owl:maxQualifiedCardinality a rdf:Property ; 379 | rdfs:label "maxQualifiedCardinality" ; 380 | rdfs:comment "The property that determines the cardinality of a maximum qualified cardinality restriction." ; 381 | rdfs:domain owl:Restriction ; 382 | rdfs:isDefinedBy ; 383 | rdfs:range xsd:nonNegativeInteger . 384 | 385 | owl:members a rdf:Property ; 386 | rdfs:label "members" ; 387 | rdfs:comment "The property that determines the collection of members in either a owl:AllDifferent, owl:AllDisjointClasses or owl:AllDisjointProperties axiom." ; 388 | rdfs:domain rdfs:Resource ; 389 | rdfs:isDefinedBy ; 390 | rdfs:range rdf:List . 391 | 392 | owl:minCardinality a rdf:Property ; 393 | rdfs:label "minCardinality" ; 394 | rdfs:comment "The property that determines the cardinality of a minimum cardinality restriction." ; 395 | rdfs:domain owl:Restriction ; 396 | rdfs:isDefinedBy ; 397 | rdfs:range xsd:nonNegativeInteger . 398 | 399 | owl:minQualifiedCardinality a rdf:Property ; 400 | rdfs:label "minQualifiedCardinality" ; 401 | rdfs:comment "The property that determines the cardinality of a minimum qualified cardinality restriction." ; 402 | rdfs:domain owl:Restriction ; 403 | rdfs:isDefinedBy ; 404 | rdfs:range xsd:nonNegativeInteger . 405 | 406 | owl:onClass a rdf:Property ; 407 | rdfs:label "onClass" ; 408 | rdfs:comment "The property that determines the class that a qualified object cardinality restriction refers to." ; 409 | rdfs:domain owl:Restriction ; 410 | rdfs:isDefinedBy ; 411 | rdfs:range owl:Class . 412 | 413 | owl:onDataRange a rdf:Property ; 414 | rdfs:label "onDataRange" ; 415 | rdfs:comment "The property that determines the data range that a qualified data cardinality restriction refers to." ; 416 | rdfs:domain owl:Restriction ; 417 | rdfs:isDefinedBy ; 418 | rdfs:range rdfs:Datatype . 419 | 420 | owl:onDatatype a rdf:Property ; 421 | rdfs:label "onDatatype" ; 422 | rdfs:comment "The property that determines the datatype that a datatype restriction refers to." ; 423 | rdfs:domain rdfs:Datatype ; 424 | rdfs:isDefinedBy ; 425 | rdfs:range rdfs:Datatype . 426 | 427 | owl:oneOf a rdf:Property ; 428 | rdfs:label "oneOf" ; 429 | rdfs:comment "The property that determines the collection of individuals or data values that build an enumeration." ; 430 | rdfs:domain rdfs:Class ; 431 | rdfs:isDefinedBy ; 432 | rdfs:range rdf:List . 433 | 434 | owl:onProperties a rdf:Property ; 435 | rdfs:label "onProperties" ; 436 | rdfs:comment "The property that determines the n-tuple of properties that a property restriction on an n-ary data range refers to." ; 437 | rdfs:domain owl:Restriction ; 438 | rdfs:isDefinedBy ; 439 | rdfs:range rdf:List . 440 | 441 | owl:onProperty a rdf:Property ; 442 | rdfs:label "onProperty" ; 443 | rdfs:comment "The property that determines the property that a property restriction refers to." ; 444 | rdfs:domain owl:Restriction ; 445 | rdfs:isDefinedBy ; 446 | rdfs:range rdf:Property . 447 | 448 | owl:priorVersion a owl:AnnotationProperty, owl:OntologyProperty ; 449 | rdfs:label "priorVersion" ; 450 | rdfs:comment "The annotation property that indicates the predecessor ontology of a given ontology." ; 451 | rdfs:domain owl:Ontology ; 452 | rdfs:isDefinedBy ; 453 | rdfs:range owl:Ontology . 454 | 455 | owl:propertyChainAxiom a rdf:Property ; 456 | rdfs:label "propertyChainAxiom" ; 457 | rdfs:comment "The property that determines the n-tuple of properties that build a sub property chain of a given property." ; 458 | rdfs:domain owl:ObjectProperty ; 459 | rdfs:isDefinedBy ; 460 | rdfs:range rdf:List . 461 | 462 | owl:propertyDisjointWith a rdf:Property ; 463 | rdfs:label "propertyDisjointWith" ; 464 | rdfs:comment "The property that determines that two given properties are disjoint." ; 465 | rdfs:domain rdf:Property ; 466 | rdfs:isDefinedBy ; 467 | rdfs:range rdf:Property . 468 | 469 | owl:qualifiedCardinality a rdf:Property ; 470 | rdfs:label "qualifiedCardinality" ; 471 | rdfs:comment "The property that determines the cardinality of an exact qualified cardinality restriction." ; 472 | rdfs:domain owl:Restriction ; 473 | rdfs:isDefinedBy ; 474 | rdfs:range xsd:nonNegativeInteger . 475 | 476 | owl:sameAs a rdf:Property ; 477 | rdfs:label "sameAs" ; 478 | rdfs:comment "The property that determines that two given individuals are equal." ; 479 | rdfs:domain owl:Thing ; 480 | rdfs:isDefinedBy ; 481 | rdfs:range owl:Thing . 482 | 483 | owl:someValuesFrom a rdf:Property ; 484 | rdfs:label "someValuesFrom" ; 485 | rdfs:comment "The property that determines the class that an existential property restriction refers to." ; 486 | rdfs:domain owl:Restriction ; 487 | rdfs:isDefinedBy ; 488 | rdfs:range rdfs:Class . 489 | 490 | owl:sourceIndividual a rdf:Property ; 491 | rdfs:label "sourceIndividual" ; 492 | rdfs:comment "The property that determines the subject of a negative property assertion." ; 493 | rdfs:domain owl:NegativePropertyAssertion ; 494 | rdfs:isDefinedBy ; 495 | rdfs:range owl:Thing . 496 | 497 | owl:targetIndividual a rdf:Property ; 498 | rdfs:label "targetIndividual" ; 499 | rdfs:comment "The property that determines the object of a negative object property assertion." ; 500 | rdfs:domain owl:NegativePropertyAssertion ; 501 | rdfs:isDefinedBy ; 502 | rdfs:range owl:Thing . 503 | 504 | owl:targetValue a rdf:Property ; 505 | rdfs:label "targetValue" ; 506 | rdfs:comment "The property that determines the value of a negative data property assertion." ; 507 | rdfs:domain owl:NegativePropertyAssertion ; 508 | rdfs:isDefinedBy ; 509 | rdfs:range rdfs:Literal . 510 | 511 | owl:topDataProperty a owl:DatatypeProperty ; 512 | rdfs:label "topDataProperty" ; 513 | rdfs:comment "The data property that relates every individual to every data value." ; 514 | rdfs:domain owl:Thing ; 515 | rdfs:isDefinedBy ; 516 | rdfs:range rdfs:Literal . 517 | 518 | owl:topObjectProperty a owl:ObjectProperty ; 519 | rdfs:label "topObjectProperty" ; 520 | rdfs:comment "The object property that relates every two individuals." ; 521 | rdfs:domain owl:Thing ; 522 | rdfs:isDefinedBy ; 523 | rdfs:range owl:Thing . 524 | 525 | owl:unionOf a rdf:Property ; 526 | rdfs:label "unionOf" ; 527 | rdfs:comment "The property that determines the collection of classes or data ranges that build a union." ; 528 | rdfs:domain rdfs:Class ; 529 | rdfs:isDefinedBy ; 530 | rdfs:range rdf:List . 531 | 532 | owl:versionInfo a owl:AnnotationProperty ; 533 | rdfs:label "versionInfo" ; 534 | rdfs:comment "The annotation property that provides version information for an ontology or another OWL construct." ; 535 | rdfs:domain rdfs:Resource ; 536 | rdfs:isDefinedBy ; 537 | rdfs:range rdfs:Resource . 538 | 539 | owl:versionIRI a owl:OntologyProperty ; 540 | rdfs:label "versionIRI" ; 541 | rdfs:comment "The property that identifies the version IRI of an ontology." ; 542 | rdfs:domain owl:Ontology ; 543 | rdfs:isDefinedBy ; 544 | rdfs:range owl:Ontology . 545 | 546 | owl:withRestrictions a rdf:Property ; 547 | rdfs:label "withRestrictions" ; 548 | rdfs:comment "The property that determines the collection of facet-value pairs that define a datatype restriction." ; 549 | rdfs:domain rdfs:Datatype ; 550 | rdfs:isDefinedBy ; 551 | rdfs:range rdf:List . 552 | -------------------------------------------------------------------------------- /tests/wildtype_examples/rdf.ttl: -------------------------------------------------------------------------------- 1 | @prefix rdf: . 2 | @prefix rdfs: . 3 | @prefix owl: . 4 | @prefix dc: . 5 | 6 | a owl:Ontology ; 7 | dc:title "The RDF Concepts Vocabulary (RDF)" ; 8 | dc:date "2019-12-16" ; 9 | dc:description "This is the RDF Schema for the RDF vocabulary terms in the RDF Namespace, defined in RDF 1.1 Concepts." . 10 | 11 | rdf:HTML a rdfs:Datatype ; 12 | rdfs:subClassOf rdfs:Literal ; 13 | rdfs:isDefinedBy ; 14 | rdfs:seeAlso ; 15 | rdfs:label "HTML" ; 16 | rdfs:comment "The datatype of RDF literals storing fragments of HTML content" . 17 | 18 | rdf:langString a rdfs:Datatype ; 19 | rdfs:subClassOf rdfs:Literal ; 20 | rdfs:isDefinedBy ; 21 | rdfs:seeAlso ; 22 | rdfs:label "langString" ; 23 | rdfs:comment "The datatype of language-tagged string values" . 24 | 25 | rdf:PlainLiteral a rdfs:Datatype ; 26 | rdfs:isDefinedBy ; 27 | rdfs:subClassOf rdfs:Literal ; 28 | rdfs:seeAlso ; 29 | rdfs:label "PlainLiteral" ; 30 | rdfs:comment "The class of plain (i.e. untyped) literal values, as used in RIF and OWL 2" . 31 | 32 | rdf:type a rdf:Property ; 33 | rdfs:isDefinedBy ; 34 | rdfs:label "type" ; 35 | rdfs:comment "The subject is an instance of a class." ; 36 | rdfs:range rdfs:Class ; 37 | rdfs:domain rdfs:Resource . 38 | 39 | rdf:Property a rdfs:Class ; 40 | rdfs:isDefinedBy ; 41 | rdfs:label "Property" ; 42 | rdfs:comment "The class of RDF properties." ; 43 | rdfs:subClassOf rdfs:Resource . 44 | 45 | rdf:Statement a rdfs:Class ; 46 | rdfs:isDefinedBy ; 47 | rdfs:label "Statement" ; 48 | rdfs:subClassOf rdfs:Resource ; 49 | rdfs:comment "The class of RDF statements." . 50 | 51 | rdf:subject a rdf:Property ; 52 | rdfs:isDefinedBy ; 53 | rdfs:label "subject" ; 54 | rdfs:comment "The subject of the subject RDF statement." ; 55 | rdfs:domain rdf:Statement ; 56 | rdfs:range rdfs:Resource . 57 | 58 | rdf:predicate a rdf:Property ; 59 | rdfs:isDefinedBy ; 60 | rdfs:label "predicate" ; 61 | rdfs:comment "The predicate of the subject RDF statement." ; 62 | rdfs:domain rdf:Statement ; 63 | rdfs:range rdfs:Resource . 64 | 65 | rdf:object a rdf:Property ; 66 | rdfs:isDefinedBy ; 67 | rdfs:label "object" ; 68 | rdfs:comment "The object of the subject RDF statement." ; 69 | rdfs:domain rdf:Statement ; 70 | rdfs:range rdfs:Resource . 71 | 72 | rdf:Bag a rdfs:Class ; 73 | rdfs:isDefinedBy ; 74 | rdfs:label "Bag" ; 75 | rdfs:comment "The class of unordered containers." ; 76 | rdfs:subClassOf rdfs:Container . 77 | 78 | rdf:Seq a rdfs:Class ; 79 | rdfs:isDefinedBy ; 80 | rdfs:label "Seq" ; 81 | rdfs:comment "The class of ordered containers." ; 82 | rdfs:subClassOf rdfs:Container . 83 | 84 | rdf:Alt a rdfs:Class ; 85 | rdfs:isDefinedBy ; 86 | rdfs:label "Alt" ; 87 | rdfs:comment "The class of containers of alternatives." ; 88 | rdfs:subClassOf rdfs:Container . 89 | 90 | rdf:value a rdf:Property ; 91 | rdfs:isDefinedBy ; 92 | rdfs:label "value" ; 93 | rdfs:comment "Idiomatic property used for structured values." ; 94 | rdfs:domain rdfs:Resource ; 95 | rdfs:range rdfs:Resource . 96 | 97 | rdf:List a rdfs:Class ; 98 | rdfs:isDefinedBy ; 99 | rdfs:label "List" ; 100 | rdfs:comment "The class of RDF Lists." ; 101 | rdfs:subClassOf rdfs:Resource . 102 | 103 | rdf:nil a rdf:List ; 104 | rdfs:isDefinedBy ; 105 | rdfs:label "nil" ; 106 | rdfs:comment "The empty list, with no items in it. If the rest of a list is nil then the list has no more items in it." . 107 | 108 | rdf:first a rdf:Property ; 109 | rdfs:isDefinedBy ; 110 | rdfs:label "first" ; 111 | rdfs:comment "The first item in the subject RDF list." ; 112 | rdfs:domain rdf:List ; 113 | rdfs:range rdfs:Resource . 114 | 115 | rdf:rest a rdf:Property ; 116 | rdfs:isDefinedBy ; 117 | rdfs:label "rest" ; 118 | rdfs:comment "The rest of the subject RDF list after the first item." ; 119 | rdfs:domain rdf:List ; 120 | rdfs:range rdf:List . 121 | 122 | rdf:XMLLiteral a rdfs:Datatype ; 123 | rdfs:subClassOf rdfs:Literal ; 124 | rdfs:isDefinedBy ; 125 | rdfs:label "XMLLiteral" ; 126 | rdfs:comment "The datatype of XML literal values." . 127 | 128 | rdf:JSON a rdfs:Datatype ; 129 | rdfs:label "JSON" ; 130 | rdfs:comment "The datatype of RDF literals storing JSON content." ; 131 | rdfs:subClassOf rdfs:Literal ; 132 | rdfs:isDefinedBy ; 133 | rdfs:seeAlso . 134 | 135 | rdf:CompoundLiteral a rdfs:Class ; 136 | rdfs:label "CompoundLiteral" ; 137 | rdfs:comment "A class representing a compound literal." ; 138 | rdfs:subClassOf rdfs:Resource ; 139 | rdfs:isDefinedBy ; 140 | rdfs:seeAlso . 141 | 142 | rdf:language a rdf:Property ; 143 | rdfs:label "language" ; 144 | rdfs:comment "The language component of a CompoundLiteral." ; 145 | rdfs:domain rdf:CompoundLiteral ; 146 | rdfs:isDefinedBy ; 147 | rdfs:seeAlso . 148 | 149 | rdf:direction a rdf:Property ; 150 | rdfs:label "direction" ; 151 | rdfs:comment "The base direction component of a CompoundLiteral." ; 152 | rdfs:domain rdf:CompoundLiteral ; 153 | rdfs:isDefinedBy ; 154 | rdfs:seeAlso . 155 | -------------------------------------------------------------------------------- /tests/wildtype_examples/rdfs.ttl: -------------------------------------------------------------------------------- 1 | @prefix rdf: . 2 | @prefix rdfs: . 3 | @prefix owl: . 4 | @prefix dc: . 5 | 6 | a owl:Ontology ; 7 | dc:title "The RDF Schema vocabulary (RDFS)" . 8 | 9 | rdfs:Resource a rdfs:Class ; 10 | rdfs:isDefinedBy ; 11 | rdfs:label "Resource" ; 12 | rdfs:comment "The class resource, everything." . 13 | 14 | rdfs:Class a rdfs:Class ; 15 | rdfs:isDefinedBy ; 16 | rdfs:label "Class" ; 17 | rdfs:comment "The class of classes." ; 18 | rdfs:subClassOf rdfs:Resource . 19 | 20 | rdfs:subClassOf a rdf:Property ; 21 | rdfs:isDefinedBy ; 22 | rdfs:label "subClassOf" ; 23 | rdfs:comment "The subject is a subclass of a class." ; 24 | rdfs:range rdfs:Class ; 25 | rdfs:domain rdfs:Class . 26 | 27 | rdfs:subPropertyOf a rdf:Property ; 28 | rdfs:isDefinedBy ; 29 | rdfs:label "subPropertyOf" ; 30 | rdfs:comment "The subject is a subproperty of a property." ; 31 | rdfs:range rdf:Property ; 32 | rdfs:domain rdf:Property . 33 | 34 | rdfs:comment a rdf:Property ; 35 | rdfs:isDefinedBy ; 36 | rdfs:label "comment" ; 37 | rdfs:comment "A description of the subject resource." ; 38 | rdfs:domain rdfs:Resource ; 39 | rdfs:range rdfs:Literal . 40 | 41 | rdfs:label a rdf:Property ; 42 | rdfs:isDefinedBy ; 43 | rdfs:label "label" ; 44 | rdfs:comment "A human-readable name for the subject." ; 45 | rdfs:domain rdfs:Resource ; 46 | rdfs:range rdfs:Literal . 47 | 48 | rdfs:domain a rdf:Property ; 49 | rdfs:isDefinedBy ; 50 | rdfs:label "domain" ; 51 | rdfs:comment "A domain of the subject property." ; 52 | rdfs:range rdfs:Class ; 53 | rdfs:domain rdf:Property . 54 | 55 | rdfs:range a rdf:Property ; 56 | rdfs:isDefinedBy ; 57 | rdfs:label "range" ; 58 | rdfs:comment "A range of the subject property." ; 59 | rdfs:range rdfs:Class ; 60 | rdfs:domain rdf:Property . 61 | 62 | rdfs:seeAlso a rdf:Property ; 63 | rdfs:isDefinedBy ; 64 | rdfs:label "seeAlso" ; 65 | rdfs:comment "Further information about the subject resource." ; 66 | rdfs:range rdfs:Resource ; 67 | rdfs:domain rdfs:Resource . 68 | 69 | rdfs:isDefinedBy a rdf:Property ; 70 | rdfs:isDefinedBy ; 71 | rdfs:subPropertyOf rdfs:seeAlso ; 72 | rdfs:label "isDefinedBy" ; 73 | rdfs:comment "The defininition of the subject resource." ; 74 | rdfs:range rdfs:Resource ; 75 | rdfs:domain rdfs:Resource . 76 | 77 | rdfs:Literal a rdfs:Class ; 78 | rdfs:isDefinedBy ; 79 | rdfs:label "Literal" ; 80 | rdfs:comment "The class of literal values, eg. textual strings and integers." ; 81 | rdfs:subClassOf rdfs:Resource . 82 | 83 | rdfs:Container a rdfs:Class ; 84 | rdfs:isDefinedBy ; 85 | rdfs:label "Container" ; 86 | rdfs:subClassOf rdfs:Resource ; 87 | rdfs:comment "The class of RDF containers." . 88 | 89 | rdfs:ContainerMembershipProperty a rdfs:Class ; 90 | rdfs:isDefinedBy ; 91 | rdfs:label "ContainerMembershipProperty" ; 92 | rdfs:comment """The class of container membership properties, rdf:_1, rdf:_2, ..., 93 | all of which are sub-properties of 'member'.""" ; 94 | rdfs:subClassOf rdf:Property . 95 | 96 | rdfs:member a rdf:Property ; 97 | rdfs:isDefinedBy ; 98 | rdfs:label "member" ; 99 | rdfs:comment "A member of the subject resource." ; 100 | rdfs:domain rdfs:Resource ; 101 | rdfs:range rdfs:Resource . 102 | 103 | rdfs:Datatype a rdfs:Class ; 104 | rdfs:isDefinedBy ; 105 | rdfs:label "Datatype" ; 106 | rdfs:comment "The class of RDF datatypes." ; 107 | rdfs:subClassOf rdfs:Class . 108 | 109 | rdfs:seeAlso . 110 | --------------------------------------------------------------------------------