001/*
002 * (C) Copyright 2006-2007 Nuxeo SAS (http://nuxeo.com/) and contributors.
003 *
004 * All rights reserved. This program and the accompanying materials
005 * are made available under the terms of the GNU Lesser General Public License
006 * (LGPL) version 2.1 which accompanies this distribution, and is available at
007 * http://www.gnu.org/licenses/lgpl.html
008 *
009 * This library is distributed in the hope that it will be useful,
010 * but WITHOUT ANY WARRANTY; without even the implied warranty of
011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
012 * Lesser General Public License for more details.
013 *
014 * Contributors:
015 *     Nuxeo - initial API and implementation
016 *
017 * $Id: Statement.java 19480 2007-05-27 10:46:28Z sfermigier $
018 */
019
020package org.nuxeo.ecm.platform.relations.api;
021
022import java.io.Serializable;
023import java.util.Map;
024
025/**
026 * Statement interface.
027 *
028 * @author <a href="mailto:at@nuxeo.com">Anahide Tchertchian</a>
029 */
030public interface Statement extends Comparable<Statement>, Serializable, Cloneable {
031
032    Node getObject();
033
034    void setObject(Node object);
035
036    Resource getPredicate();
037
038    void setPredicate(Node predicate);
039
040    Subject getSubject();
041
042    void setSubject(Node subject);
043
044    // property (statement metadata) management
045
046    Map<Resource, Node[]> getProperties();
047
048    Map<String, Node[]> getStringProperties();
049
050    Node getProperty(Resource property);
051
052    Node[] getProperties(Resource property);
053
054    void setProperties(Map<Resource, Node[]> properties);
055
056    void setProperty(Resource property, Node value);
057
058    void setProperties(Resource property, Node[] values);
059
060    void deleteProperties();
061
062    void deleteProperty(Resource property);
063
064    void deleteProperty(Resource property, Node value);
065
066    void deleteProperties(Resource property, Node[] values);
067
068    void addProperties(Map<Resource, Node[]> properties);
069
070    void addProperty(Resource property, Node value);
071
072    void addProperties(Resource property, Node[] values);
073
074    Object clone();
075
076}